Entkopplung mit AWS Messaging Services

Anwendungen auf AWS entwickeln

Ricardo Sueiras

Principal Technologist

Amazon SQS: Grundlagen

 

sqs overview

  • Verarbeitet Traffic-Spitzen unabhängig von Produzenten.
  • Verwaltete Nachrichtenwarteschlange für asynchrones Messaging.
  • Produzenten senden Nachrichten in eine Warteschlange.
  • Konsumenten holen Nachrichten aus der Warteschlange.
  • Nachrichten bleiben, bis ein Konsument sie abholt.
  • Aufbewahrung: standardmäßig 4 Tage, maximal 14 Tage.
  • Konsumenten pollen die Warteschlange und verarbeiten im eigenen Tempo.
Anwendungen auf AWS entwickeln

Nachrichtensichtbarkeit

  • Eine Nachricht wird unsichtbar, sobald ein Konsument sie liest.
  • Der Visibility Timeout steuert, wie lange sie verborgen bleibt.
  • Wenn die Verarbeitung fehlschlägt und die Nachricht nicht gelöscht wird:
    • wird sie wieder sichtbar.
    • sie kann erneut verarbeitet werden.
  • Standard-Visibility-Timeout: 30 Sekunden.
  • Maximaler Visibility-Timeout: 12 Stunden.

 

message visibility

Anwendungen auf AWS entwickeln

Nachrichtengröße

 

image size

  • Nachrichten können bis zu 256 KB groß sein.
  • SQS Extended Client Library ermöglicht größere Nachrichten.
  • Speichert große Nutzdaten in Amazon S3.
  • Sendet einen Verweis auf S3 im Nachrichteninhalt.
Anwendungen auf AWS entwickeln

Short Polling

  • Die Polling-Strategie beeinflusst Kosten und Effizienz.
  • Short Polling ist der Standard.
  • Fragt eine Teilmenge der SQS-Server ab, antwortet sofort.
  • Kann leer zurückkehren, selbst wenn Nachrichten vorhanden sind.
  • Führt zu mehr API-Aufrufen und höheren Kosten.

 

polling

Anwendungen auf AWS entwickeln

Long Polling

  • Long Polling fragt alle SQS-Server ab.
  • Wartet bis zu 20 Sekunden auf eine Nachricht.
  • Vermeidet unnötige leere Antworten.
  • Reduziert API-Aufrufe und senkt Kosten.

 

polling

Anwendungen auf AWS entwickeln

Standard-Warteschlangen

  • SQS bietet zwei Warteschlangentypen.
  • Standard-Warteschlangen:
    • Zustellung mindestens einmal.
    • Best-effort-Reihenfolge.
    • Nahezu unbegrenzter Durchsatz.

 

queue types

Anwendungen auf AWS entwickeln

FIFO-Warteschlangen

 

queue types

  • FIFO-Warteschlangen:
    • Exactly-once-Verarbeitung.
    • Strikte Nachrichtenreihenfolge.
    • Eingebaute Deduplizierung.
  • Standard: 300 TPS
    • Mit Batching auf 3.000 erhöhbar, mehr mit High-Throughput-Modus.
  • Wähle den Typ je nach Use Case:
    • Standard für Skalierung und Durchsatz.
    • FIFO für Reihenfolge und Deduplizierung.
Anwendungen auf AWS entwickeln

Umgang mit Gift-Nachrichten

 

dlq

  • Dead-Letter-Warteschlangen (DLQ) speichern fehlgeschlagene Nachrichten.
  • Eine Nachricht wechselt in die DLQ, wenn sie maxReceiveCount überschreitet.
  • So wird endloses Wiederholen einer Gift-Nachricht vermieden.
  • Die DLQ muss denselben Typ haben wie die Quellwarteschlange.
  • Zum Neuverarbeiten Nachrichten zurück in die Quelle verschieben.
Anwendungen auf AWS entwickeln

Warteschlangen absichern

 

securing SQS

  • Standardmäßig per HTTPS in der Übertragung verschlüsselt.
  • Serverseitige Verschlüsselung im Ruhezustand mit AWS KMS.
  • Nutzdaten clientseitig mit dem AWS Encryption SDK verschlüsseln.
  • IAM-Richtlinien steuern den Zugriff auf SQS-Warteschlangen.
  • Ressourcenbasierte Richtlinien bieten feingranulare Kontrolle auf Queue-Ebene.
Anwendungen auf AWS entwickeln

Amazon SNS: Grundlagen

  • Verwalteter Publish-Subscribe-(Pub/Sub)-Dienst.
  • Nutzt ein Push-Modell.
  • Publisher senden Nachrichten an ein Topic.
    • Maximale Nachrichtengröße: 256 KB.
  • Konsumenten abonnieren Topics.
  • Abonnenten empfangen Nachrichten passiv.

 

sns overview

Anwendungen auf AWS entwickeln

Skalierung

  • Unterstützt bis zu 12,5 Mio. Abonnements pro Topic.
  • Keine Nachrichtenaufbewahrung:
    • Nachrichten gehen verloren, wenn ein Abonnent nicht verfügbar ist.
    • Verwende DLQ oder einen dauerhaften Abonnenten (SQS-Warteschlange), um Verluste zu vermeiden.
  • Verteilt ein Ereignis an viele Konsumenten (Fan-out).

 

scaling sns

Anwendungen auf AWS entwickeln

Nachrichten filtern

  • SNS unterstützt Nachrichten-Filterrichtlinien.
  • Abos erhalten nur relevante Nachrichten.
  • Ohne Filter erhält ein Abo jede Nachricht.
  • Filter gelten auf Abo-Ebene, nicht auf Topic-Ebene.

 

filter

Anwendungen auf AWS entwickeln

Filterlogik und Auswertung

 

filter polices

  • Filter werden in JSON definiert.
  • Abgleich mit Nachrichtenattributen.
  • Mehrere Bedingungen werden als UND ausgewertet.
  • Mehrere Werte innerhalb einer Bedingung als ODER.
  • Viele Filter-Operatoren werden unterstützt:
    • Exakter String, numerisch, Präfix, Ausschluss und Bereich.
Anwendungen auf AWS entwickeln

SNS-Sicherheit

 

sns security

  • Standardmäßig mit HTTPS in der Übertragung verschlüsselt.
  • Serverseitige Verschlüsselung im Ruhezustand mit AWS KMS.
    • SNS Berechtigung zum Verwenden des KMS-Schlüssels erteilen.
  • IAM-Richtlinien regeln den Zugriff.
    • Steuern, wer auf ein Topic publishen oder davon abonnieren darf.
Anwendungen auf AWS entwickeln

Lass uns üben!

Anwendungen auf AWS entwickeln

Preparing Video For Download...