Architectuurstijlen en communicatiepatronen
Toepassingen ontwikkelen op AWS
Ricardo Sueiras
Principal Technologist
Je instructeur
Wat zijn architectuurpatronen?
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.
Monolieten
Eén, strak gekoppelde eenheid.
Eén codebase, één deployment.
In het begin simpel te bouwen.
Schalen is pijnlijk: je schaalt alles tegelijk.
Microservices
Kleine, zelfstandige services: elk beheert één businesscapability.
Deploy, schaal en update elke service apart.
Afruil: meer operationele complexiteit en service-naar-service-communicatie.
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.
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.
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.
Synchrone communicatie
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.
Patroon: request/response
Ruggengraat van de meeste applicatieinterfaces.
Voorspelbaar gedrag.
Directe feedback voor gebruikers.
Asynchrone communicatie
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.
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.
Patroon: worker-queue
Meerdere workers halen berichten uit één queue.
Berichten parallel verwerkt.
Maakt horizontaal schalen en hogere throughput mogelijk.
Berichtvolgorde niet gegarandeerd.
Patroon: publish/subscribe
Publishers sturen berichten naar een SNS-topic.
Meerdere abonnees ontvangen hetzelfde bericht.
Real-time broadcast naar veel consumers.
Patroon: fan-out
Eén bericht tegelijk naar meerdere consumers.
Veelgebruikt in eventgedreven architecturen.
Handig als meerdere services op hetzelfde event moeten reageren.
Berichtvolgorde
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.
Laten we oefenen!
Toepassingen ontwikkelen op AWS
Preparing Video For Download...