Arkitekturmönster och kommunikationsmönster

Utveckla applikationer på AWS

Ricardo Sueiras

Principal Technologist

Din instruktör

instructor

Utveckla applikationer på AWS

Vad är arkitekturmönster?

 

 

Applikationsarkitektur

 

  • Återanvändbar lösning på ett vanligt problem.
  • Mönster visar hur AWS-tjänster passar ihop.
  • Arkitekturen avgör hur bra appen fungerar under belastning.
  • Flera arkitekturmönster är viktiga att känna till.
Utveckla applikationer på AWS

Monoliter

 

 

diagram över ett exempel på monolitarkitektur

 

 

  • En enda, tätt kopplad enhet.
  • En kodbas, en driftsättning.
  • Enkel att utveckla inledningsvis.
  • Svår att skala: allt skalas tillsammans.
Utveckla applikationer på AWS

Mikrotjänster

 

mikrotjänstarkitektur

 

  • Små, fristående tjänster – var och en ansvarar för en affärsfunktion.
  • Driftsätt, skala och uppdatera varje tjänst oberoende.
  • Avvägning: ökad driftskomplexitet och tjänst-till-tjänst-kommunikation att hantera.
Utveckla applikationer på AWS

Serverlöst

  • Ingen infrastruktur att hantera – bara kod och konfiguration.
  • Bygg genom att kombinera hanterade AWS-tjänster.
  • AWS sköter provisionering, skalning och underhåll.
  • Avvägning: tidsgränser för körning, kalla starter, inlåsning till leverantör.
  • Nästan noll driftsoverhead och automatisk skalning.

 

serverlös arkitektur

Utveckla applikationer på AWS

Händelsedriven arkitektur (EDA)

  • Komponenter kommunicerar via händelser, inte direktanrop.
  • En händelse registrerar något som inträffat (order lagd, betalning mottagen, vara skickad).
  • Producenter sänder ut händelser.
  • Konsumenter prenumererar på de händelser de bryr sig om.

 

händelsedriven arkitektur

Utveckla applikationer på AWS

Tätt och löst kopplade system

  • Moderna molnapplikationer består av flera tjänster.
  • Tjänsterna måste kommunicera och samordna sig för att slutföra arbete.
  • Synkron kommunikation är tätt kopplad.
  • Asynkron kommunikation är löst kopplad.

tätt och löst kopplade system

Utveckla applikationer på AWS

Synkron kommunikation

 

synkron kommunikation

  • En tjänst skickar en förfrågan och väntar på svar.
  • Anroparen blockeras tills svar ges eller timeout inträffar.
  • Enkel att implementera och förstå.
  • Tät koppling: långsamhet eller fel nedströms kan sprida sig.
  • Mildra med timeouts, försök igen och kretsbrytare.
Utveckla applikationer på AWS

Mönster: förfrågan/svar

förfrågan-svar

  • Ryggraden i de flesta applikationsgränssnitt.
  • Förutsägbart beteende.
  • Omedelbar återkoppling till användare.
Utveckla applikationer på AWS

Asynkron kommunikation

 

asynkron kommunikation

  • Avsändaren väntar inte på svar.
  • Skickar ett meddelande eller en händelse och fortsätter sedan.
  • Mottagaren behandlar meddelandet oberoende.
  • Löst kopplad: bättre skalbarhet och feltolerans.
  • Hanterar trafiktoppar och partiella avbrott smidigt.
  • Utmaningar: dubbletter, ordning och slutlig konsekvens.
Utveckla applikationer på AWS

Mönster: köbaserad frikoppling

  • Producenten skickar meddelanden till en kö.
  • Konsumenten hämtar och behandlar meddelanden oberoende.
  • Förhindrar att fel sprider sig.
  • Producent och konsument skalas oberoende.

  köbaserad

Utveckla applikationer på AWS

Mönster: worker-kö

  • Flera workers hämtar meddelanden från en gemensam kö.
  • Meddelanden behandlas parallellt.
  • Möjliggör horisontell skalning och högre genomströmning.
  • Meddelandeordning garanteras inte.

worker-kö

Utveckla applikationer på AWS

Mönster: publicera/prenumerera

  • Utgivare skickar meddelanden till ett SNS-ämne.
  • Flera prenumeranter tar emot samma meddelande.
  • Realtidssändning till många konsumenter.

 

publicera-prenumerera-mönster

Utveckla applikationer på AWS

Mönster: fan-out

fan-out

  • Ett meddelande levereras till flera konsumenter samtidigt.
  • Vanligt förekommande i händelsedrivna arkitekturer.
  • Användbart när flera tjänster måste reagera på samma händelse.
Utveckla applikationer på AWS

Meddelandeordning

meddelandeordning

  • Vissa arbetsbelastningar måste behandla meddelanden i rätt ordning.
  • Amazon SQS FIFO och Kinesis stöder ordnad bearbetning.
  • Strikt ordning minskar genomströmningen.
  • Balansera korrekthet mot skalbarhet.
Utveckla applikationer på AWS

Nu kör vi en övning!

Utveckla applikationer på AWS

Preparing Video For Download...