Wat is Amazon SNS?
Amazon Simple Notification Service (SNS) is een volledig beheerde messagingservice die application-to-application (A2A) en application-to-person (A2P) communicatie ondersteunt. De service is ontworpen voor realtime notificaties en bezorgt berichten schaalbaar en efficiënt aan applicaties en eindgebruikers.
Net als SQS ondersteunt Amazon SNS berichtpersistentie door gebruikers dead-letter queues te laten aanmaken om berichten op te slaan die niet kunnen worden verwerkt.
Amazon SNS gebruikt een publish/subscribe (pub/sub) messagingmodel en bestaat uit 3 onderdelen:
- Publisher: een publisher is een systeem dat berichten aanmaakt en naar een SNS-topic stuurt.
- Topic: een topic is een toegangspunt waarmee berichten naar meerdere endpoints kunnen worden geleverd.
- Subscriber: een subscriber, of consumer, is een endpoint dat een bericht van het topic ontvangt.

Architectuurdiagram van het SNS-messagingmodel. Beeldbron: AWS
SNS is zeer performant en kan berichten gelijktijdig naar meerdere subscribers sturen. Voor A2A-communicatie kan SNS berichten leveren aan AWS Lambda, Amazon Kinesis Firehose en zelfs Amazon SQS. Voor A2P-communicatie kan SNS berichten direct naar gebruikers sturen via sms, e-mail of pushnotificaties.
Wil je AWS onder de knie krijgen en meerdere services integreren tot optimale oplossingen? Volg dan de cursus AWS Cloud Technology and Services.
Functies zoals waarschuwingssystemen, fan-outarchitecturen en realtime notificaties dragen bij aan de hoge robuustheid en betrouwbaarheid van Amazon SNS. Door de hoge berichtdoorvoer en de ondersteuning voor A2A- en A2P-communicatie is SNS vaak een integraal onderdeel van event-driven architecturen.
Kernverschillen tussen SQS en SNS
Kiezen tussen SQS en SNS vraagt om een goed begrip van de verschillen tussen deze messagingservices. In dit onderdeel staan de belangrijkste criteria die de twee onderscheiden.
Push versus poll-gebaseerd
Amazon SQS gebruikt een pollingsysteem waarbij consumers de queue periodiek bevragen om te kijken of er nieuwe berichten zijn.
Amazon SNS, een push-gebaseerd systeem, pusht berichten automatisch naar subscribers zodra ze op een topic zijn gepubliceerd.
Type ontvangers
Amazon SQS ondersteunt uitsluitend A2A-communicatie, waardoor berichten naar andere AWS-services kunnen worden gestuurd, zoals AWS EC2, AWS Lambda, AWS RDS en AWS Redshift.
Amazon SNS ondersteunt A2A- en A2P-communicatie en stuurt berichten naar AWS-services (bijv. AWS S3, AWS EC2) en naar gebruikerscontacten (bijv. sms en e-mail) als subscribers.
Berichtretentie
Amazon SQS kan berichten tot 14 dagen bewaren, zodat consumers voldoende tijd hebben om ze te verwerken. Amazon SNS bewaart daarentegen geen berichten en levert ze direct aan subscribers zodra ze zijn gepubliceerd.
Model voor berichtaflevering
Amazon SQS gebruikt een one-to-one-model, waarbij elk bericht door slechts één consumer wordt verwerkt. Zelfs als meerdere consumers tegelijk naar berichten poll-en, ontvangt slechts één consumer een bepaald bericht. Terwijl de consumer een bericht verwerkt, gebruikt SQS de functie visibility timeout om dat bericht onzichtbaar te maken voor andere consumers.
Amazon SNS ondersteunt een fan-outpatroon, waarbij hetzelfde bericht op een topic gelijktijdig naar alle subscribers wordt verstuurd. Deze subscribers verwerken het ontvangen bericht onafhankelijk van elkaar.
Batching
Amazon SQS laat gebruikers berichten batchen, oftewel berichten in groepen naar consumers sturen. De batchgrootte kan in AWS worden geconfigureerd.
Amazon SNS ondersteunt geen batching en verwerkt slechts één bericht tegelijk.
De volgende tabel vat deze kernverschillen samen:
|
Criteria |
Amazon SQS |
Amazon SNS |
|
Push versus poll-gebaseerd |
Poll-gebaseerd: consumers poll-en de queue voor nieuwe berichten |
Push-gebaseerd: pusht automatisch berichten naar subscribers |
|
Type ontvangers |
Ondersteunt A2A-communicatie |
Ondersteunt A2A- en A2P-communicatie |
|
Berichtretentie |
Slaat berichten tot 14 dagen op |
Slaat geen berichten op |
|
Model voor berichtaflevering |
Ondersteunt one-to-one messaging |
Ondersteunt fan-out (one-to-many) messaging |
|
Batching |
Ondersteunt batching van berichten |
Ondersteunt geen batching van berichten |
Wanneer gebruik je SQS
SQS is de voorkeursoptie voor een cloudarchitectuur wanneer het berichtensysteem het volgende nodig heeft:
- Een pollingsysteem - consumers kunnen zelf bepalen wanneer ze berichten ophalen.
- Asynchrone verwerking - services kunnen berichten onafhankelijk verwerken.
- Berichtretentie - berichten kunnen tot 14 dagen worden bewaard.
- Gegarandeerde berichtaflevering - er gaan geen berichten in de queue verloren.
- Batching - services verwerken berichten in groepen.
Neem het volgende praktijkvoorbeeld: een e-commerceplatform wil bestellingen van klanten verwerken, wat inhoudt dat de bijbehorende gegevens in een RDS-database worden opgeslagen.

Architectuurdiagram van een systeem dat Amazon SQS gebruikt om data te verwerken—afbeelding door de auteur.
In deze workflow dienen klanten bestellingen in, die in de SQS-queue terechtkomen. De Lambda-functie (de consumer) bevraagt de queue, ontvangt de berichten en schrijft de data vervolgens naar de RDS-database.
Dit gebruik van SQS heeft meerdere voordelen. Omdat SQS het proces ontkoppelt, kunnen klanten bestellingen indienen zelfs als de database niet operationeel is. Omdat SQS at-least-once levering biedt, worden alle bestellingen verwerkt zonder risico op berichtverlies. Tot slot ondersteunt SQS batching, waarmee berichten in groepen kunnen worden verwerkt en de efficiëntie toeneemt.
Amazon SNS werkt hier minder goed, omdat het geen berichten bewaart en ze meteen naar de Lambda-functie pusht, ongeacht de status van de database. Als de database onbeschikbaar wordt, kunnen berichten verloren gaan. Bovendien ondersteunt SNS geen batching en zou het berichten één voor één verwerken, wat minder optimaal is.
Wanneer gebruik je SNS
SNS is de voorkeursoptie voor een cloudarchitectuur wanneer het berichtensysteem het volgende nodig heeft:
- Realtime notificaties - berichten worden met lage latentie direct naar subscribers gepusht.
- Fan-outdistributie - meerdere subscribers kunnen hetzelfde bericht gelijktijdig ontvangen.
- Meerdere notificatiesubscribers - berichten kunnen worden verstuurd naar applicaties (bijv. AWS Lambda) en eindgebruikers (bijv. e-mail).
Stel: een developer bewaakt het CPU-gebruik van een EC2-instance. Om het gebruik laag te houden, wil diegene de CPU-utilization-metric op CloudWatch monitoren en een notificatie ontvangen zodra een drempelwaarde wordt overschreden.
Amazon SNS helpt hierbij, omdat het notificaties in realtime pusht en zowel A2A- als A2P-processen ondersteunt. Met het fan-outpatroon kan SNS direct notificaties sturen naar Lambda-functies die het probleem helpen verlichten én naar de developer via e-mail om te informeren over het alarm.

Architectuurdiagram van een systeem dat Amazon SNS gebruikt voor monitoring—afbeelding door de auteur.
Amazon SQS zou hiervoor minder geschikt zijn vanwege de berichtretentie. Als developers op drempeloverschrijdingen willen reageren, hebben ze realtime alerts nodig—dat is niet mogelijk als berichten in queues worden opgeslagen. Bovendien worden berichten met SQS alleen opgehaald wanneer consumers poll-en, wat de latentie verhoogt.
SQS en SNS samen gebruiken: het beste van twee werelden
Amazon SQS en Amazon SNS hebben elk hun eigen kenmerken, maar je haalt het meeste uit beide door ze te combineren tot een efficiënt, schaalbaar en fouttolerant berichtensysteem.
Het integreren van de twee services is eenvoudig, omdat SQS-queues subscribers kunnen zijn van SNS-topics. SNS kan dus realtime notificaties naar SQS-queues sturen, waarna SQS de processen ontkoppelt en tegelijk zorgt voor gegarandeerde aflevering.
Neem het volgende voorbeeld: een AWS-developer bouwt een documentsubmissiesysteem dat inhoud extraheert uit documenten die door eindgebruikers worden ingestuurd. Dit systeem moet voor elk document twee taken uitvoeren:
- Het document verwerken met een tekstverwerkingsapplicatie.
- Een bevestigingsmail naar de eindgebruiker sturen.
De developer kan SQS en SNS combineren om een efficiënte oplossing te bouwen:

Architectuurdiagram van een systeem dat SNS in combinatie met SQS gebruikt—afbeelding door de auteur.
In deze workflow wordt bij het indienen van een document een bericht naar het SNS-topic gestuurd, dat het bericht direct pusht naar de Lambda-functie en de SQS-queue. De Lambda-functie verstuurt de bevestigingsmail, terwijl de SQS-queue de berichten afhandelt die door de EC2-instance met de tekstverwerkingsapplicatie worden opgehaald.
Conclusie
Amazon SQS en SNS zijn kernservices binnen het AWS-ecosysteem, elk met eigen voordelen. SNS biedt realtime notificaties, terwijl SQS betrouwbare berichtverwerking biedt.
De ideale messagingoplossing kan SNS, SQS of beide bevatten. Door beide services door en door te begrijpen, kunnen AWS-developers een oplossing bouwen die aansluit op hun unieke bedrijfsbehoeften—met efficiëntie, schaalbaarheid en veerkracht als resultaat.
Wil je je AWS-kennis naar een hoger niveau tillen? Volg dan deze twee gevorderde cursussen:
Of bereid je voor op de AWS Cloud Practitioner-certificering met onze skill track:
FAQs
Kan ik Amazon SQS en SNS integreren met andere AWS-services?
Ja, zowel SQS als SNS integreren naadloos met diverse AWS-services. Zo kun je AWS Lambda-functies triggeren met berichten uit SQS of SNS, notificaties naar Amazon S3 sturen wanneer nieuwe bestanden worden geüpload, of Amazon CloudWatch gebruiken om de prestaties van SQS en SNS te monitoren.
Hoe zorg ik voor betrouwbare berichtaflevering met SQS en SNS?
Met SQS kun je dead-letter queues (DLQ's) gebruiken om berichten op te vangen die na meerdere pogingen niet kunnen worden verwerkt, zodat er geen data verloren gaat. Voor SNS kun je retries of fallbackmechanismen configureren als de aflevering van berichten mislukt, bijvoorbeeld door SQS als back-upsubscriber op een SNS-topic te gebruiken.
Kan ik SQS en SNS in één architectuur combineren?
Ja, SQS en SNS kunnen worden gecombineerd tot een hybride messagingarchitectuur. Zo kan SNS realtime notificaties pushen naar meerdere consumers, inclusief SQS-queues. Zo profiteer je van realtime notificaties (SNS) en betrouwbare, uitgestelde verwerking (SQS).
Wat zijn de prijsmodellen voor SQS en SNS?
Zowel SQS als SNS hanteren een pay-per-use-prijsmodel. SQS rekent kosten op basis van het aantal requests, datatransfer en extra features zoals long polling. SNS-kosten zijn gebaseerd op het aantal gepubliceerde berichten en de leveringsmethode (bijv. e-mail, sms of HTTP-endpoints). Het is belangrijk je gebruik te monitoren om kosten te beheersen, zeker bij toepassingen met een hoge frequentie.
Hoe kan ik de prestaties optimaliseren bij het gebruik van SQS en SNS?
Om de prestaties te optimaliseren, kun je bij SQS batching gebruiken om meerdere berichten tegelijk te versturen en te verwerken, wat API-requests en kosten vermindert. Zorg er bij SNS voor dat je subscribers hoge throughput aankunnen door autoscaling in te stellen voor je verwerkingsservices (zoals Lambda of EC2), zodat pieken in verkeer efficiënt worden opgevangen.

Als beginnend data scientist blink ik uit in het omzetten van ruwe data in toepasbare strategieën. Ik ben gespecialiseerd in het inzetten van Python, SQL en machinelearning-technieken om impactvolle oplossingen te creëren voor data-analyse, en in het ontwerpen van robuuste ETL-pijplijnen die grote hoeveelheden data inladen en verwerken.

AWS onder de knie krijgen kan lastig zijn, zeker als het gaat om het begrijpen van twee kernservices: Amazon Simple Queue Service (SQS) en Amazon Simple Notification Service (SNS).
Hoewel beide services essentieel zijn voor cloudoplossingen, worden ze vaak verkeerd begrepen en verkeerd toegepast.
In dit artikel leg ik de rollen van SQS en SNS uit, benoem ik de overeenkomsten en verschillen, en laat ik zien hoe je deze services samen kunt gebruiken om krachtige cloudarchitecturen te bouwen.
SQS vs SNS: korte samenvatting
Heb je weinig tijd? Dit zijn de belangrijkste verschillen:
Lees verder voor een uitgebreide uitleg, inclusief use-cases, architectuurdiagrammen en best practices!
Wat is Amazon SQS?
Amazon Simple Queue Service (SQS) is een volledig beheerde messagequeueingservice die communicatie tussen softwarecomponenten faciliteert. SQS gebruikt queues om microservices te ontkoppelen, zodat je asynchrone workflows in je applicaties kunt creëren.
SQS omvat drie kernonderdelen:
Diagram van de Amazon SQS-architectuur, inclusief hoofonderdelen. Afbeelding door de auteur.
SQS biedt twee soorten messagequeues:
Voor meer informatie over deze queues, ga naar de AWS-documentatie.
Amazon SQS is ontworpen met berichtpersistentie om alle berichten veilig op te slaan totdat ze zijn verwerkt, zodat er geen berichten verloren gaan. SQS probeert eerst meerdere keren een bericht te verwerken. Als een bericht na alle pogingen nog niet kan worden verwerkt, kun je onbewerkte berichten opslaan in een dead-letter queue, die later kan worden beoordeeld en opnieuw verwerkt.
Door applicaties te ontkoppelen, biedt Amazon SQS verschillende voordelen. Het ondersteunt hoge berichtdoorvoer, waardoor de prestaties ook bij grotere verkeersvolumes hoog blijven. Daarnaast biedt het onafhankelijke schaalbaarheid, zodat elke service voldoende resources krijgt op basis van de eigen behoefte. Het verbetert ook de beveiliging en duurzaamheid door berichten te versleutelen en ze op meerdere servers op te slaan.
Wil je meer leren over dit queuesysteem? Bekijk dan onze uitgebreide SQS-tutorial.