Architekturstile und Kommunikationsmuster

Anwendungen auf AWS entwickeln

Ricardo Sueiras

Principal Technologist

Dein Dozent

Dozent

Anwendungen auf AWS entwickeln

Was sind Architekturmuster?

 

 

Anwendungsarchitektur

 

  • Wiederverwendbare Lösung für ein häufiges Problem.
  • Muster zeigen dir, wie AWS-Services zusammenpassen.
  • Die Architektur bestimmt, wie gut deine App unter Last läuft.
  • Mehrere Architekturmuster solltest du kennen.
Anwendungen auf AWS entwickeln

Monolithen

 

 

Diagramm einer Beispiel-Monolith-Architektur

 

 

  • Eine einzelne, eng gekoppelte Einheit.
  • Eine Codebasis, ein Deployment.
  • Anfangs einfach zu entwickeln.
  • Schwer zu skalieren: du skalierst alles zusammen.
Anwendungen auf AWS entwickeln

Microservices

 

Microservices-Architektur

 

  • Kleine, unabhängige Services: jeder besitzt genau eine Geschäftsfähigkeit.
  • Jeden Service separat deployen, skalieren und aktualisieren.
  • Trade-off: mehr Betriebsaufwand und Service-zu-Service-Kommunikation.
Anwendungen auf AWS entwickeln

Serverless

  • Keine Infrastruktur verwalten, nur Code und Konfiguration.
  • Aufbau durch Kombinieren verwalteter AWS-Services.
  • AWS übernimmt Bereitstellung, Skalierung und Wartung.
  • Trade-off: Ausführungszeitlimits, Cold Starts, Vendor-Lock-in.
  • Nahezu kein Betriebsaufwand und automatische Skalierung.

 

Serverless-Architektur

Anwendungen auf AWS entwickeln

Ereignisgesteuerte Architektur (EDA)

  • Komponenten kommunizieren über Ereignisse statt direkte Aufrufe.
  • Ein Ereignis protokolliert etwas, das passiert ist (Bestellung aufgegeben, Zahlung eingegangen, Artikel versandt).
  • Produzenten senden Ereignisse.
  • Konsumenten abonnieren relevante Ereignisse.

 

ereignisgesteuerte Architektur

Anwendungen auf AWS entwickeln

Eng und lose gekoppelte Systeme

  • Moderne Cloud-Apps bestehen aus mehreren Services.
  • Services müssen kommunizieren und koordinieren, um Arbeit zu erledigen.
  • Synchrone Kommunikation ist eng gekoppelt.
  • Asynchrone Kommunikation ist lose gekoppelt.

eng und lose gekoppelte Systeme

Anwendungen auf AWS entwickeln

Synchrone Kommunikation

 

synchrone Kommunikation

  • Ein Service sendet eine Anfrage und wartet auf die Antwort.
  • Der Aufrufer ist blockiert bis zur Antwort oder zum Timeout.
  • Einfach zu implementieren und zu verstehen.
  • Enge Kopplung: Verzögerungen oder Ausfälle wirken sich kaskadenartig aus.
  • Abmildern mit Timeouts, Retries und Circuit Breakers.
Anwendungen auf AWS entwickeln

Muster: Request/Response

Request-Response

  • Rückgrat der meisten Anwendungs-Interfaces.
  • Vorhersehbares Verhalten.
  • Sofortiges Nutzerfeedback.
Anwendungen auf AWS entwickeln

Asynchrone Kommunikation

 

asynchrone Kommunikation

  • Sender wartet nicht auf eine Antwort.
  • Sendet eine Nachricht oder ein Ereignis und macht weiter.
  • Empfänger verarbeitet die Nachricht unabhängig.
  • Lose gekoppelt: bessere Skalierung und Fehlertoleranz.
  • Bewältigt Lastspitzen und Teilausfälle gut.
  • Herausforderungen: Duplikate, Reihenfolge, Eventual Consistency.
Anwendungen auf AWS entwickeln

Muster: Warteschlangenbasiertes Entkoppeln

  • Produzent sendet Nachrichten an eine Queue.
  • Konsument zieht und verarbeitet Nachrichten unabhängig.
  • Verhindert kaskadierende Ausfälle.
  • Produzent und Konsument skalieren unabhängig.

  warteschlangenbasiert

Anwendungen auf AWS entwickeln

Muster: Worker-Queue

  • Mehrere Worker ziehen Nachrichten aus einer Queue.
  • Nachrichten werden parallel verarbeitet.
  • Ermöglicht horizontale Skalierung und höheren Durchsatz.
  • Nachrichtenreihenfolge nicht garantiert.

Worker-Queue

Anwendungen auf AWS entwickeln

Muster: Publish/Subscribe

  • Publisher senden Nachrichten an ein SNS-Topic.
  • Mehrere Abonnenten erhalten dieselbe Nachricht.
  • Echtzeit-Broadcast an viele Konsumenten.

 

Publish/Subscribe-Muster

Anwendungen auf AWS entwickeln

Muster: Fan-out

Fan-out

  • Eine Nachricht wird gleichzeitig an mehrere Konsumenten zugestellt.
  • Weit verbreitet in ereignisgesteuerten Architekturen.
  • Nützlich, wenn mehrere Services auf dasselbe Ereignis reagieren müssen.
Anwendungen auf AWS entwickeln

Nachrichtenreihenfolge

Nachrichtenreihenfolge

  • Manche Workloads müssen Nachrichten in korrekter Reihenfolge verarbeiten.
  • Amazon SQS FIFO und Kinesis unterstützen geordnete Verarbeitung.
  • Strikte Ordnung reduziert den Durchsatz.
  • Korrektheit gegen Skalierbarkeit abwägen.
Anwendungen auf AWS entwickeln

Lass uns üben!

Anwendungen auf AWS entwickeln

Preparing Video For Download...