Architektonické styly a komunikační vzory

Developing Applications on AWS

Ricardo Sueiras

Principal Technologist

Tvůj instruktor

instructor

Developing Applications on AWS

Co jsou architektonické vzory?

 

 

Application architecture

 

  • 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.
Developing Applications on AWS

Monolity

 

 

diagram of an example monolith architecture

 

 

  • 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.
Developing Applications on AWS

Mikroslužby

 

microservices architecture

 

  • 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.
Developing Applications on AWS

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í.

 

serverless architecture

Developing Applications on AWS

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í.

 

event driven architecture

Developing Applications on AWS

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á.

tight and loosely coupled systems

Developing Applications on AWS

Synchronní komunikace

 

synch comms

  • 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ů.
Developing Applications on AWS

Vzor: požadavek/odpověď

request response

  • Základ většiny aplikačních rozhraní.
  • Předvídatelné chování.
  • Okamžitá zpětná vazba pro uživatele.
Developing Applications on AWS

Asynchronní komunikace

 

aysnc comms

  • 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.
Developing Applications on AWS

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.

  queue based

Developing Applications on AWS

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.

worker-queue

Developing Applications on AWS

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ů.

 

pub subscribe pattern

Developing Applications on AWS

Vzor: fan-out

fanout

  • 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.
Developing Applications on AWS

Pořadí zpráv

message ordering

  • 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í.
Developing Applications on AWS

Pojďme cvičit!

Developing Applications on AWS

Preparing Video For Download...