Ereignisgesteuerte Anwendungen

Anwendungen auf AWS entwickeln

Ricardo Sueiras

Principal Technologist

Was ist ein Ereignis?

 

Ereignisse vs. Nachrichten

  • Eine Nachricht ist eine Arbeitseinheit zwischen Komponenten.
  • Ein Ereignis protokolliert, dass etwas bereits passiert ist.
  • Services kommunizieren, indem sie Ereignisse veröffentlichen.
  • Andere Services reagieren unabhängig auf diese Ereignisse.
  • Entkopplung reduziert Abhängigkeiten und verbessert Skalierbarkeit.
Anwendungen auf AWS entwickeln

Ereignisproduzenten

 

Ereignisproduzenten

  • Produzenten erstellen und veröffentlichen Ereignisse, wenn Aktionen stattfinden.
  • Sowohl AWS-Services als auch eigene Anwendungen können Ereignisse erzeugen.
  • Das Hochladen einer Datei in Amazon S3 ist ein Beispiel.
  • Amazon S3 sendet dann ein „object-created"-Ereignis.
Anwendungen auf AWS entwickeln

Ereigniskonsumenten

 

Konsumenten

  • Konsumenten empfangen und verarbeiten Ereignisse asynchron.
  • Ereignisquellen nutzen unterschiedliche Zustellmodelle.
  • Push-basiert: Ereignisse werden sofort zugestellt.
  • Pull-basiert: Konsumenten holen Ereignisse beim Polling ab.
Anwendungen auf AWS entwickeln

Event-Source-Mapping

  • AWS Lambda ist ein gängiger Ereigniskonsument.
  • Es pollt Quellen und holt automatisch Batches von Datensätzen.

 

Event-Source-Mapping

Anwendungen auf AWS entwickeln

Lambda-Event-Source-Mappings optimieren

  • Optimiere Event-Source-Mappings für mehr Durchsatz.
  • Passe die Batchgröße an, um Datensätze pro Aufruf zu steuern.
  • Konfiguriere Retry-Steuerungen für fehlgeschlagene Datensätze.
  • Nutze partielle Batch-Antworten bei unterstützten Quellen.
  • ReportBatchItemFailures verhindert erneute Verarbeitung erfolgreicher Datensätze.

 

Event-Source-Mapping

Anwendungen auf AWS entwickeln

Amazon EventBridge

  • EventBridge leitet Ereignisse zwischen Services und Apps.
  • Es ermöglicht dynamisches Routing ohne enge Kopplung.
  • Anwendungen veröffentlichen ihre Ereignisse in EventBridge.
  • Routingregeln entscheiden, welche Ziele jedes Ereignis erhalten.

 

EventBridge

Anwendungen auf AWS entwickeln

EventBridge-Funktionen

 

Funktionen

  • EventBridge bietet mehrere Routingfunktionen.
  • Regeln verteilen ein Ereignis auf viele Ziele.
  • Geplante Regeln ersetzen eigene Cron-Server.
  • Zeitpläne unterstützen rate(), at() und cron()-Ausdrücke.
  • Pipes bieten Punkt-zu-Punkt-Integration.
  • Pipes ermöglichen auch Filterung und Transformation.
Anwendungen auf AWS entwickeln

Eventbusse

 

Eventbus

  • Unterschiedliche Eventbusse optimieren das Routing.
  • Der Standardbus empfängt Ereignisse von AWS-Services.
  • Benutzerdefinierte Busse tragen anwendungsspezifische Ereignisse.
  • Partnerbusse empfangen Ereignisse von Drittanbietern.
  • Regeln sitzen zwischen jedem Bus und seinen Zielen.
Anwendungen auf AWS entwickeln

Schemaerkennung

 

Ereignisschema und -registrierung

  • Produzenten und Konsumenten entwickeln sich oft unabhängig.
  • Das Verständnis der Ereignisstruktur ist essenziell.
  • Schemaerkennung erfasst die Struktur eingehender Ereignisse.
  • Nutze sie, um Ereignis-Payloads zu prüfen.
  • Nutze sie zur Validierung von Integrationen.
  • Nutze sie zum Generieren von Bindings für unterstützte Sprachen.
Anwendungen auf AWS entwickeln

Schema-Registry

  • Das Schema-Registry speichert deine Ereignisschemata.
  • Es hilft Entwicklerinnen und Entwicklern, die Struktur zu verstehen und Bindings zu erzeugen.

 

Ereignisschema und -registrierung

Anwendungen auf AWS entwickeln

Ereignisfilterung

  • Filtern reduziert unnötige Verarbeitung.
  • Definiere Treffer mit JSON-Ereignismustern.
  • Muster passen nur auf die gewünschten Ereignisse.
  • Nachgelagerte Systeme verarbeiten dann nur Relevantes.

 

Ereignisfilterung

Anwendungen auf AWS entwickeln

Ereignisreihenfolge

  • Ereignisreihenfolge ist nicht immer garantiert.
  • Manche Services verarbeiten Ereignisse außerhalb der Reihenfolge.
  • Nutze Ordnungssteuerungen, um Reihenfolgen explizit zu erzwingen.

 

Ereignisreihenfolge

Anwendungen auf AWS entwickeln

Ereignisse archivieren und wiedergeben

 

Archivieren und Wiedergeben

  • EventBridge kann Ereignisse archivieren und später wiedergeben.
  • Spiele Ereignisse wieder ab, um Ausfälle zu beheben.
  • Spiele Ereignisse wieder ab, um neue Konsumenten zu testen.
  • Spiele Ereignisse wieder ab, um nachgelagerte Systeme neu aufzubauen.
Anwendungen auf AWS entwickeln

Fehlerbehandlung

 

Fehlerbehandlung

  • Ereignisgesteuerte Apps müssen Fehler sicher behandeln.
  • Fehler umfassen doppelte Ereignisse.
    • Fehlgeschlagene Verarbeitung.
    • Nicht verfügbare Konsumenten.
  • Gestalte Konsumenten möglichst idempotent.
Anwendungen auf AWS entwickeln

DLQs und Destinations

 

Fehlerbehandlung

  • Nutze DLQs, um wiederholt fehlschlagende Ereignisse zu isolieren.
  • In EventBridge werden DLQs pro Regelziel konfiguriert, nicht pro Funktion.
  • Lambda Destinations erweitern dieses Routing.
  • Destinations leiten sowohl Erfolgs- als auch Fehlschlagsergebnisse weiter.
Anwendungen auf AWS entwickeln

Ereignisse testen und validieren

  • Das Testen ereignisgesteuerter Apps validiert das Routing.
  • Es validiert auch die Ereignisfilterung.
  • Es validiert auch Wiederholungen.
  • Es bestätigt die Verarbeitung über verteilte Systeme.
  • Nutze AWS SAM, um Beispieltestereignisse zu erzeugen.
  • Beispielereignisse replizieren die exakte JSON-Ausgabe.

 

Testen

Anwendungen auf AWS entwickeln

Was testen?

  • Mit SAM kannst du lokal vor dem Deployment testen.
  • Validiere Event-Pattern-Matching.
  • Validiere Retry-Verhalten.
  • Validiere Drosselungsszenarien.
  • Validiere doppelte Ereigniszustellung.
  • Validiere idempotentes Konsumentenverhalten.

 

Testen

Anwendungen auf AWS entwickeln

Lass uns üben!

Anwendungen auf AWS entwickeln

Preparing Video For Download...