REL 3: Wie entwerfen Sie Ihre Workload-Service-Architektur?
Erstellen Sie hoch skalierbare und zuverlässige Workloads mithilfe einer serviceorientierten Architektur (SOA) oder einer Microservices-Architektur. Eine serviceorientierte Architektur (SOA) hat zum Ziel, Softwarekomponenten über Service-Schnittstellen wiederverwendbar zu machen. Die Microservices-Architektur geht noch weiter, um Komponenten kleiner und einfacher zu machen.
Ressourcen
Amazon API Gateway: Configuring a REST API Using OpenAPI
Implementing Microservices on AWS
Microservices on AWS
Microservices - a definition of this new architectural term
Microservice Trade-Offs
Bounded Context (a central pattern in Domain-Driven Design)
Bewährte Methoden:
-
Auswählen, wie Ihre Workload segmentiert werden soll: Eine monolithische Architektur sollte vermieden werden. Stattdessen sollten Sie zwischen SOA und Microservices wählen. Bei der Wahl sollten Sie Vorteile und Komplexität abwägen. Was für ein neues Produkt, das gerade auf dem Markt eingeführt wird, richtig ist, unterscheidet sich von den Anforderungen eines Workloads, der von Anfang an skalierbar sein muss. Zu den Vorteilen der Verwendung kleinerer Segmente gehören höhere Agilität, Organisationsflexibilität und Skalierbarkeit. Zu den Komplexitäten gehören mögliche höhere Latenz, komplexeres Debugging und erhöhter betrieblicher Aufwand.
-
Entwickeln von Services, die sich auf bestimmte Geschäftsbereiche und Funktionen konzentrieren: SOA entwickelt Services mit genau abgegrenzten Funktionen, die von Geschäftsanforderungen definiert werden. Microservices verwenden Domänenmodelle und begrenzten Kontext, um dies weiter einzuschränken, sodass jeder Service nur eine Aufgabe erledigt. Wenn Sie sich auf bestimmte Funktionen konzentrieren, können Sie die Zuverlässigkeitsanforderungen verschiedener Services differenzieren und Investitionen genauer ausrichten. Ein präzises Geschäftsproblem und ein kleines Team, das mit jedem Service verbunden ist, ermöglichen auch eine einfachere Skalierung der Organisation.
-
Bereitstellung von Serviceverträgen pro API: Serviceverträge sind dokumentierte Vereinbarungen zur Service-Integration zwischen Teams und enthalten eine maschinenlesbare API-Definition, Ratenlimits und Leistungserwartungen. Eine Versioning-Strategie ermöglicht es Clients, die vorhandene API weiter zu verwenden und ihre Anwendungen auf die neuere API zu migrieren, wenn sie bereit sind. Die Bereitstellung kann jederzeit erfolgen, solange der Vertrag nicht verletzt wird. Das Serviceanbieterteam kann den Technologie-Stack seiner Wahl verwenden, um den API-Vertrag zu erfüllen. Ebenso kann der Service-Verbraucher seine eigene Technologie verwenden.
Verbesserungsplan
Auswählen, wie Ihre Workload segmentiert werden soll
- SOA und Microservices bieten eine jeweils kleinere Segmentierung, die als moderne skalierbare und zuverlässige Architektur bevorzugt wird. Wenn Sie jedoch einen guten Grund haben, eine monolithische Architektur zu wählen, müssen Sie sicherstellen, dass sie modular ist und sich letztendlich zu SOA oder Microservices weiterentwickeln kann, wenn Ihr Produkt mit der Benutzerakzeptanz skaliert wird.
- SOA kann ein guter Kompromiss für das Erreichen einer kleineren Segmentierung sein,
während die Komplexität von Microservices zum Teil vermieden wird.
Microservice Trade-Offs - Wenn Ihre Workload für sie zugänglich ist und Ihre Organisation sie unterstützen kann,
sollten Sie eine Microservices-Architektur verwenden, um die beste Agilität und Zuverlässigkeit
zu erzielen.
Implementing Microservices on AWS - AWS App Mesh kann mit serviceorientierten Architekturen verwendet werden, um eine
zuverlässige Erkennung und den Zugriff auf Services zu ermöglichen.
What is AWS App Mesh?
Entwickeln von Services, die sich auf bestimmte Geschäftsbereiche und Funktionen konzentrieren
- Führen Sie eine Domänenanalyse durch, um Ihrer Workload ein domänengesteuertes Design
(DDD) zuzuordnen. Anschließend können Sie einen Architekturtyp auswählen, der die
Anforderungen Ihrer Workload erfüllt.
How to break a Monolith into Microservices
Getting Started with DDD when Surrounded by Legacy Systems
Eric Evans “Domain-Driven Design: Tackling Complexity in the Heart of Software”
Implementing Microservices on AWS
- Definieren Sie die API für den Workload und ihre Designziele, Limits und sonstigen
Nutzungsanforderungen.
- Definieren Sie die API.
- Lassen Sie in der API-Definition Raum für Wachstum und weitere Parameter.
- Definieren Sie die gewünschten Verfügbarkeiten.
- Sie können für Ihre API mehrere Designziele für unterschiedliche Funktionen haben.
- Limits festlegen
- Definieren Sie mithilfe von Tests die Limits Ihrer Workload-Funktionen.
- Definieren Sie die API.
Bereitstellung von Serviceverträgen pro API
Amazon API Gateway: Configuring a REST API Using OpenAPI
- Eine Versioning-Strategie ermöglicht es Clients, die vorhandene API weiter zu verwenden und ihre Anwendungen auf die neuere API zu migrieren, wenn sie bereit sind.
- Amazon API Gateway ist ein vollständig verwalteter Service, der es Entwicklern leicht macht, APIs beliebiger Größe zu erstellen. Mit der OpenAPI-Spezifikation (OAS), früher als Swagger-Spezifikation bezeichnet, können Sie Ihren API-Vertrag definieren und in API Gateway importieren. Mit API Gateway können Sie die APIs versionieren und bereitstellen.