Architectuurstijlen en communicatiepatronen

Toepassingen ontwikkelen op AWS

Ricardo Sueiras

Principal Technologist

Je instructeur

instructor

Toepassingen ontwikkelen op AWS

Wat zijn architectuurpatronen?

 

 

Applicatiearchitectuur

 

  • Herhaalbare oplossing voor een veelvoorkomend probleem.
  • Patronen helpen je AWS-services te combineren.
  • Architectuur bepaalt hoe je app presteert onder load.
  • Een aantal architectuurpatronen die je moet kennen.
Toepassingen ontwikkelen op AWS

Monolieten

 

 

diagram van een voorbeeld-monolietarchitectuur

 

 

  • Eén, strak gekoppelde eenheid.
  • Eén codebase, één deployment.
  • In het begin simpel te bouwen.
  • Schalen is pijnlijk: je schaalt alles tegelijk.
Toepassingen ontwikkelen op AWS

Microservices

 

microservices-architectuur

 

  • Kleine, zelfstandige services: elk beheert één businesscapability.
  • Deploy, schaal en update elke service apart.
  • Afruil: meer operationele complexiteit en service-naar-service-communicatie.
Toepassingen ontwikkelen op AWS

Serverless

  • Geen infrastructuur beheren, alleen code en configuratie.
  • Bouw door beheerde AWS-services te combineren.
  • AWS regelt provisioning, schalen en onderhoud.
  • Afruil: tijdslimieten, cold starts, vendor lock-in.
  • Bijna nul operationele overhead en automatische schaalbaarheid.

 

serverless-architectuur

Toepassingen ontwikkelen op AWS

Event-driven architecture (EDA)

  • Componenten communiceren via events, niet via directe calls.
  • Een event legt vast wat er gebeurde (bestelling geplaatst, betaling ontvangen, item verzonden).
  • Producers zenden events uit.
  • Consumers abonneren zich op relevante events.

 

eventgedreven architectuur

Toepassingen ontwikkelen op AWS

Strak en los gekoppelde systemen

  • Moderne cloudapps bestaan uit meerdere services.
  • Services moeten communiceren en coördineren om werk te voltooien.
  • Synchrone communicatie is strak gekoppeld.
  • Asynchrone communicatie is los gekoppeld.

strak en los gekoppelde systemen

Toepassingen ontwikkelen op AWS

Synchrone communicatie

 

synch comms

  • Eén service stuurt een request en wacht op een response.
  • Aanroeper blokkeert tot response of timeout.
  • Eenvoudig te bouwen en te begrijpen.
  • Strakke koppeling: traagheid of falen stroomafwaarts kan doorcascaderen.
  • Beperk met timeouts, retries en circuit breakers.
Toepassingen ontwikkelen op AWS

Patroon: request/response

request response

  • Ruggengraat van de meeste applicatieinterfaces.
  • Voorspelbaar gedrag.
  • Directe feedback voor gebruikers.
Toepassingen ontwikkelen op AWS

Asynchrone communicatie

 

asynchrone comms

  • Afzender wacht niet op een response.
  • Stuurt een bericht of event en gaat verder.
  • Ontvanger verwerkt het bericht zelfstandig.
  • Los gekoppeld: beter schaalbaar en fouttolerant.
  • Kan piekverkeer en gedeeltelijke storingen goed aan.
  • Uitdagingen: dubbele berichten, volgorde, eventual consistency.
Toepassingen ontwikkelen op AWS

Patroon: ontkoppelen met queues

  • Producer stuurt berichten naar een queue.
  • Consumer haalt en verwerkt berichten zelfstandig.
  • Voorkomt dat fouten doorcascaderen.
  • Producer en consumer schalen onafhankelijk.

  queue based

Toepassingen ontwikkelen op AWS

Patroon: worker-queue

  • Meerdere workers halen berichten uit één queue.
  • Berichten parallel verwerkt.
  • Maakt horizontaal schalen en hogere throughput mogelijk.
  • Berichtvolgorde niet gegarandeerd.

worker-queue

Toepassingen ontwikkelen op AWS

Patroon: publish/subscribe

  • Publishers sturen berichten naar een SNS-topic.
  • Meerdere abonnees ontvangen hetzelfde bericht.
  • Real-time broadcast naar veel consumers.

 

publish/subscribe-patroon

Toepassingen ontwikkelen op AWS

Patroon: fan-out

fanout

  • Eén bericht tegelijk naar meerdere consumers.
  • Veelgebruikt in eventgedreven architecturen.
  • Handig als meerdere services op hetzelfde event moeten reageren.
Toepassingen ontwikkelen op AWS

Berichtvolgorde

message ordering

  • Sommige workloads moeten berichten in de juiste volgorde verwerken.
  • Amazon SQS FIFO en Kinesis ondersteunen geordende verwerking.
  • Strikte volgorde verlaagt throughput.
  • Balanceer correctheid en schaalbaarheid.
Toepassingen ontwikkelen op AWS

Laten we oefenen!

Toepassingen ontwikkelen op AWS

Preparing Video For Download...