Architektonické styly a komunikační vzory
Developing Applications on AWS
Ricardo Sueiras
Principal Technologist
Tvůj instruktor
Co jsou architektonické vzory?
Opakovaně použitelné řešení běžného problému.
Vzory ti ukáží, jak skládat AWS služby dohromady.
Architektura určuje, jak dobře tvoje aplikace zvládne zátěž.
Existuje několik architektonických vzorů, které je důležité znát.
Monolity
Jeden pevně propojený celek.
Jeden kódový základ, jedno nasazení.
Ze začátku jednoduché na vývoj.
Škálování je bolestivé: škáluješ vše najednou.
Mikroslužby
Malé, nezávislé služby – každá pokrývá jednu business funkci.
Každou službu lze nasazovat, škálovat a aktualizovat samostatně.
Kompromis: vyšší provozní složitost a nutnost řídit komunikaci mezi službami.
Serverless
Žádná infrastruktura ke správě – jen kód a konfigurace.
Aplikaci skládáš z managed AWS služeb.
AWS zajišťuje provisioning, škálování i údržbu.
Kompromis: časové limity, cold starty, vendor lock-in.
Téměř nulová provozní zátěž a automatické škálování.
Architektura řízená událostmi (EDA)
Komponenty komunikují prostřednictvím událostí, ne přímými voláními.
Událost zaznamenává, co se stalo (objednávka, platba, zásilka).
Producenti události vydávají.
Konzumenti se přihlásí k odběru událostí, které je zajímají.
Těsně a volně provázané systémy
Moderní cloudové aplikace se skládají z více služeb.
Služby musí komunikovat a spolupracovat, aby dokončily práci.
Synchronní komunikace je těsně provázaná.
Asynchronní komunikace je volně provázaná.
Synchronní komunikace
Jedna služba odešle požadavek a čeká na odpověď.
Volající je blokován až do odpovědi nebo timeoutu.
Jednoduché na implementaci i pochopení.
Těsné provázání: zpomalení nebo selhání může kaskádově šířit.
Mitigace pomocí timeoutů, opakování a circuit breakerů.
Vzor: požadavek/odpověď
Základ většiny aplikačních rozhraní.
Předvídatelné chování.
Okamžitá zpětná vazba pro uživatele.
Asynchronní komunikace
Odesílatel nečeká na odpověď.
Odešle zprávu nebo událost a pokračuje ve zpracování.
Příjemce zprávu zpracuje samostatně.
Volné provázání: lepší škálovatelnost a odolnost vůči chybám.
Zvládá nárazový provoz i výpadky části systému.
Výzvy: duplicitní zprávy, pořadí, eventuální konzistence.
Vzor: oddělení pomocí fronty
Producent posílá zprávy do fronty.
Konzument zprávy nezávisle stahuje a zpracovává.
Brání kaskádovému šíření selhání.
Producent i konzument se škálují nezávisle.
Vzor: worker queue
Více workerů stahuje zprávy z jedné fronty.
Zprávy se zpracovávají paralelně.
Umožňuje horizontální škálování a vyšší propustnost.
Pořadí zpráv není zaručeno.
Vzor: publish/subscribe
Publisheři posílají zprávy do SNS topicu.
Stejnou zprávu obdrží více odběratelů.
Vysílání v reálném čase pro mnoho konzumentů.
Vzor: fan-out
Jedna zpráva doručena více konzumentům současně.
Hojně využíváno v architekturách řízených událostmi.
Hodí se, když musí na stejnou událost reagovat více služeb.
Pořadí zpráv
Některé workloady musí zpracovávat zprávy ve správném pořadí.
Amazon SQS FIFO a Kinesis podporují zpracování v pořadí.
Striktní pořadí snižuje propustnost.
Hledej rovnováhu mezi správností a škálovatelností.
Pojďme cvičit!
Developing Applications on AWS
Preparing Video For Download...