Yep, dat is dus
SQS.

Dat is dus ook weer 'serverless' dus eigenlijk doe je niet veel meer dan een queue aanmaken. Het hele beheer van de message broker is voor je weggeabstraheerd en je betaalt eigenlijk enkel nog per lees- / schrijfactie. Dat gaat al wel vrij snel in de kosten lopen, dus wij gebruiken wel waar mogelijk / nodig de batchvarianten waarbij je tot 10 berichten per keer kan lezen / schrijven.
Als je reguliere queues gebruikt, dan schaalt het eigenlijk vrijwel oneindig (voor onze behoeften iig). Je hebt ook nog FIFO queues voor zaken als ordering en exactly once delivery die een stuk beperkter zijn qua throughput, maar in mijn ogen moet je schaalbare message processing gewoon lekker idempotent maken. Je kunt wel leuk je message broker alles precies één keer laten aanleveren, maar het komt in de praktijk gewoon regelmatig voor dat (bulk)processen bij aanleverende systemen klappen en herstarten, waardoor je als nog dubbele aanleveringen krijgt.
Nadeel van SQS an sich is wel dat de berichtgrootte is beperkt tot 256kb. Op zich geen ramp, maar dat betekent wel dat je naar alternatieve oplossingen moet kijken indien berichten ook (incidenteel) groter kunnen zijn dan 256kb.
Edit: Het is ook niet per definitie veel complexer dan 'traditionele verwerking' in ons geval hoor. We hadden altijd al message queues voor ontkoppeling tussen delen van het proces (in ActiveMQ) en feitelijk werd het consumeren van berichten ook gewoon gedaan door stukjes code, maar dan in de vorm van Message Driven Beans in enorme monolitische applicaties op logge applicatieservers. Kwam toevallig laatst nog een Twitterdraadje tegen waarin ook wat werd geklaagd over de 'complexiteit' van serverless architecturen met wat AWS plaatjes. En ja als je 5 losse Lambda's met Queues tekent zijn dat meer icoontjes dan wanneer je 5 queues tekent en die allemaal verbindt aan slechts één applicatieserver, maar daarin abstraheer je dan feitelijk alle onderliggende complexiteit gewoon weg. Vergeet ook niet dat je bij Lambda's en SQS allerhande monitoring en logging gewoon out-of-the box krijgt en dat door zaken zichtbaar uit elkaar te trekken het veel makkelijker is om eventuele bottlenecks in je proces te signaleren. In oude on-premise systemen die wij nog beheren zie je vaak dat er performance issues zijn op die gigantische applicatieservercluster waardoor berichtverwerking tot stilstand komt en het aloude 'have you tried turning it off and on again?' maar letterlijk gescript is omdat dat vaak het probleem oplost en men al maanden tevergeefs heeft proberen te achterhalen waar nou de bottleneck zit.
[
Voor 32% gewijzigd door
Mugwump op 18-06-2020 11:58
]
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra