Ontkoppelen met AWS Messaging Services

Toepassingen ontwikkelen op AWS

Ricardo Sueiras

Principal Technologist

Amazon SQS: basis

 

sqs overzicht

  • Verwerkt piekverkeer los van producers.
  • Beheerde message queue voor asynchrone messaging.
  • Producers sturen berichten naar een queue.
  • Consumers halen berichten uit de queue.
  • Berichten blijven staan tot een consumer ze ophaalt.
  • Retentie: standaard 4 dagen, maximaal 14.
  • Consumers pollen de queue en verwerken in eigen tempo.
Toepassingen ontwikkelen op AWS

Berichtzichtbaarheid

  • Een bericht wordt onzichtbaar zodra een consumer het leest.
  • Visibility timeout bepaalt hoe lang het verborgen blijft.
  • Als verwerken faalt en het bericht niet wordt verwijderd:
    • Wordt het weer zichtbaar.
    • Kan het opnieuw worden verwerkt.
  • Standaard visibility timeout: 30 seconden.
  • Maximum is 12 uur.

 

berichtzichtbaarheid

Toepassingen ontwikkelen op AWS

Berichtgrootte

 

afbeeldingsgrootte

  • Berichten kunnen tot 256KB groot zijn.
  • SQS Extended Client library maakt grotere berichten mogelijk.
  • Slaat de grote payload op in Amazon S3.
  • Stuurt een pointer naar S3 in de berichtpayload.
Toepassingen ontwikkelen op AWS

Short polling

  • Pollingstrategie beïnvloedt kosten en efficiëntie.
  • Short polling is standaard.
  • Vraagt een subset van SQS-servers op, reageert direct.
  • Kan leeg terugkomen, zelfs bij beschikbare berichten.
  • Leidt tot meer API-calls en hogere kosten.

 

polling

Toepassingen ontwikkelen op AWS

Long polling

  • Long polling bevraagt alle SQS-servers.
  • Wacht tot 20 seconden op een bericht.
  • Voorkomt onnodige lege responses.
  • Vermindert API-calls en verlaagt kosten.

 

polling

Toepassingen ontwikkelen op AWS

Standard queues

  • SQS biedt twee typen queues.
  • Standard queues:
    • At-least-once levering.
    • Best-effort volgorde.
    • Vrijwel onbeperkte throughput.

 

queue-typen

Toepassingen ontwikkelen op AWS

FIFO-queues

 

queue-typen

  • FIFO-queues:
    • Exactly-once verwerking.
    • Strikte volgorde van berichten.
    • Ingebouwde deduplicatie.
  • Standaard 300 TPS
    • Verhoog naar 3.000 met batching of meer met high-throughput-modus.
  • Kies het queue-type per use case:
    • Standard voor schaal en throughput.
    • FIFO voor volgorde en deduplicatie.
Toepassingen ontwikkelen op AWS

Poison messages afhandelen

 

dlq

  • Dead letter queues (DLQ) slaan berichten op die falen bij verwerking.
  • Een bericht gaat naar de DLQ zodra het maxReceiveCount overschrijdt.
  • Zo voorkom je eindeloze retries van een poison message.
  • De DLQ moet hetzelfde queue-type hebben als de bron.
  • Verplaats berichten terug naar de bronqueue om opnieuw te verwerken.
Toepassingen ontwikkelen op AWS

Queues beveiligen

 

SQS beveiligen

  • Versleutelt onderweg standaard met HTTPS.
  • Server-side encryptie at rest met AWS KMS.
  • Versleutel de payload client-side met de AWS Encryption SDK.
  • IAM-beleid bepaalt wie SQS-queues mag gebruiken.
  • Resourcegebaseerd beleid geeft fijnmazige, queue-niveau controle.
Toepassingen ontwikkelen op AWS

Amazon SNS: basis

  • Beheerde publish-subscribe (pub/sub) service.
  • Gebruikt een pushmodel.
  • Publishers sturen berichten naar een topic.
    • Maximale berichtgrootte is 256KB.
  • Consumers abonneren zich op topics.
  • Abonnees ontvangen berichten passief.

 

sns overzicht

Toepassingen ontwikkelen op AWS

Schaal

  • Ondersteunt tot 12,5 miljoen abonnementen per topic.
  • Geen berichtretentie:
    • Berichten gaan verloren als een abonnee onbeschikbaar is.
    • Gebruik DLQ of een duurzame abonnee (SQS-queue) om verlies te voorkomen.
  • Verdeelt één event naar veel consumers (fan-out).

 

sns opschalen

Toepassingen ontwikkelen op AWS

Berichten filteren

  • SNS ondersteunt filterbeleid voor berichten.
  • Abonnementen ontvangen alleen relevante berichten.
  • Zonder filter ontvangt een abonnement elk bericht.
  • Filters gelden per abonnement, niet per topic.

 

filter

Toepassingen ontwikkelen op AWS

Filterlogica en evaluatie

 

filterbeleid

  • Filters zijn gedefinieerd in JSON.
  • Worden vergeleken met berichtattributen.
  • Meerdere voorwaarden worden als EN geëvalueerd.
  • Meerdere waarden binnen één voorwaarde als OF.
  • Veel filteroperaties mogelijk:
    • Exacte string, numeriek, prefix, uitsluiting en bereikmatching.
Toepassingen ontwikkelen op AWS

SNS-beveiliging

 

sns-beveiliging

  • Versleutelt data onderweg standaard met HTTPS.
  • Server-side encryptie at rest met AWS KMS.
    • Geef SNS toestemming om de KMS-sleutel te gebruiken.
  • IAM-beleid regelt toegangscontrole.
    • Bepaalt wie naar een topic mag publiceren of zich erop abonneren.
Toepassingen ontwikkelen op AWS

Laten we oefenen!

Toepassingen ontwikkelen op AWS

Preparing Video For Download...