Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Infrastrukturbeispiele auf AWS
Dieser Abschnitt enthält Beispiele für den Entwurf einer Infrastruktur für Ihre Anwendung AWS , auf der Sie eine hexagonale Architektur implementieren können. Wir empfehlen, dass Sie mit einer einfachen Architektur beginnen, um ein Minimum Viable Product (MVP) zu erstellen. Die meisten Microservices benötigen einen einzigen Einstiegspunkt für die Bearbeitung von Client-Anfragen, eine Rechenebene zum Ausführen des Codes und eine Persistenzschicht zum Speichern von Daten. Die folgenden AWS Dienste eignen sich hervorragend für den Einsatz als Clients, Primäradapter und Sekundäradapter in hexagonaler Architektur:
-
Kunden: Amazon API Gateway, Amazon Simple Queue Service (Amazon SQS), Elastic Load Balancing, Amazon EventBridge
-
Primäre Adapter: AWS Lambda Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), Amazon Elastic Compute Cloud (Amazon) EC2
-
Sekundäre Adapter: Amazon DynamoDB, Amazon Relational Database Service (Amazon RDS), Amazon Aurora, API Gateway, Amazon SQS, Elastic Load Balancing EventBridge, Amazon Simple Notification Service (Amazon SNS)
In den folgenden Abschnitten werden diese Dienste im Kontext der hexagonalen Architektur ausführlicher behandelt.
Fangen Sie einfach an
Wir empfehlen Ihnen, einfach zu beginnen, wenn Sie eine Anwendung mithilfe einer hexagonalen Architektur entwerfen. In diesem Beispiel wird API Gateway als Client (REST-API), Lambda als primärer Adapter (Compute) und DynamoDB als sekundärer Adapter (Persistenz) verwendet. Der Gateway-Client ruft den Einstiegspunkt auf, der in diesem Fall ein Lambda-Handler ist.

Diese Architektur ist vollständig serverlos und bietet dem Architekten einen guten Ausgangspunkt. Wir empfehlen, das Befehlsmuster in der Domäne zu verwenden, da es die Wartung des Codes erleichtert und sich an neue geschäftliche und nicht funktionale Anforderungen anpasst. Diese Architektur könnte ausreichen, um einfache Microservices mit wenigen Vorgängen zu erstellen.
Wenden Sie das CQRS-Muster an
Wir empfehlen, zum CQRS-Muster zu wechseln, wenn die Anzahl der Operationen auf der Domain skaliert werden soll. Mithilfe des folgenden Beispiels können Sie das CQRS-Muster als vollständig serverlose Architektur anwenden. AWS

In diesem Beispiel werden zwei Lambda-Handler verwendet, einer für Abfragen und einer für Befehle. Abfragen werden synchron ausgeführt, wobei ein API-Gateway als Client verwendet wird. Befehle werden asynchron ausgeführt, indem Amazon SQS als Client verwendet wird.
Diese Architektur umfasst mehrere Clients (API Gateway und Amazon SQS) und mehrere Primäradapter (Lambda), die von ihren entsprechenden Einstiegspunkten (Lambda-Handlern) aufgerufen werden. Alle Komponenten gehören zu demselben begrenzten Kontext, befinden sich also innerhalb derselben Domäne.
Entwickeln Sie die Architektur weiter, indem Sie Container, eine relationale Datenbank und eine externe API hinzufügen
Container sind eine gute Option für lang andauernde Aufgaben. Möglicherweise möchten Sie auch eine relationale Datenbank verwenden, wenn Sie über ein vordefiniertes Datenschema verfügen und von der Leistungsfähigkeit der SQL-Sprache profitieren möchten. Darüber hinaus müsste die Domäne mit externen APIs kommunizieren. Sie können das Architekturbeispiel weiterentwickeln, um diese Anforderungen zu unterstützen, wie in der folgenden Abbildung dargestellt.

In diesem Beispiel wird Amazon ECS als primärer Adapter für das Starten von Aufgaben mit langer Laufzeit in der Domain verwendet. Amazon EventBridge (Kunde) initiiert eine Amazon ECS-Aufgabe (Einstiegspunkt), wenn ein bestimmtes Ereignis eintritt. Die Architektur beinhaltet Amazon RDS als weiteren sekundären Adapter zum Speichern relationaler Daten. Außerdem wird ein weiteres API-Gateway als sekundärer Adapter zum Aufrufen eines externen API-Aufrufs hinzugefügt. Daher verwendet die Architektur mehrere primäre und sekundäre Adapter, die auf unterschiedlichen zugrunde liegenden Rechenschichten in einer Geschäftsdomäne basieren.
Die Domäne ist über Abstraktionen, die als Ports bezeichnet werden, immer lose mit allen primären und sekundären Adaptern verbunden. Die Domäne definiert mithilfe von Ports, was sie von der Außenwelt benötigt. Da es in der Verantwortung des Adapters liegt, den Port zu implementieren, hat der Wechsel von einem Adapter zu einem anderen keine Auswirkungen auf die Domäne. Sie können beispielsweise von Amazon DynamoDB zu Amazon RDS wechseln, indem Sie einen neuen Adapter schreiben, ohne dass sich dies auf die Domain auswirkt.
Fügen Sie weitere Domänen hinzu (verkleinern)
Die sechseckige Architektur passt gut zu den Prinzipien einer Microservices-Architektur. Die bisher gezeigten Architekturbeispiele enthielten eine einzelne Domäne (oder einen begrenzten Kontext). Anwendungen umfassen in der Regel mehrere Domänen, die über primäre und sekundäre Adapter kommunizieren müssen. Jede Domäne stellt einen Microservice dar und ist lose mit anderen Domänen verknüpft.

In dieser Architektur verwendet jede Domain eine andere (n) Gruppe von Rechenumgebung (en). (Jede Domäne kann auch mehrere Rechenumgebungen haben, wie im vorherigen Beispiel.) Jede Domäne definiert ihre erforderlichen Schnittstellen für die Kommunikation mit anderen Domänen über Ports. Ports werden mithilfe von Primär- und Sekundäradaptern implementiert. Auf diese Weise wird die Domäne nicht beeinträchtigt, wenn eine Änderung am Adapter vorgenommen wird. Darüber hinaus sind Domänen voneinander entkoppelt.
In dem im vorherigen Diagramm gezeigten Architekturbeispiel werden Lambda, Amazon EC2, Amazon ECS und AWS Fargate Lambda als Primäradapter verwendet. API Gateway, Elastic Load Balancing und Amazon SQS werden als sekundäre Adapter verwendet. EventBridge