

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.

# Einfache Microservices-Architektur auf AWS
<a name="simple-microservices-architecture-on-aws"></a>

 Typische monolithische Anwendungen bestehen aus verschiedenen Schichten: einer Präsentationsschicht, einer Anwendungsschicht und einer Datenschicht. Microservices-Architekturen hingegen unterteilen Funktionen nach spezifischen Domänen und nicht nach technologischen Schichten in zusammenhängende *vertikale* Bereiche. Abbildung 1 zeigt eine Referenzarchitektur für eine typische Microservices-Anwendung auf. AWS

![\[Das Diagramm zeigt eine typische Microservices-Anwendung auf AWS\]](http://docs.aws.amazon.com/de_de/whitepapers/latest/microservices-on-aws/images/typical-microservices-application.png)


# Benutzeroberfläche
<a name="user-interface"></a>

 Moderne Webanwendungen verwenden häufig JavaScript Frameworks, um einseitige Anwendungen zu entwickeln, die mit dem Backend APIs kommunizieren. Diese APIs werden in der Regel mit Representational State Transfer (REST) oder RESTful APIs APIs GraphQL erstellt. Statische Webinhalte können mit Amazon Simple Storage Service ([Amazon S3](https://aws.amazon.com/s3/)) und [Amazon](https://aws.amazon.com/cloudfront/) bereitgestellt CloudFront werden. 

# Microservices
<a name="microservices"></a>

 APIs werden als *Eingangstor* für Microservices angesehen, da sie der Einstiegspunkt für die Anwendungslogik sind. In der Regel werden RESTful Webservice-API oder GraphQL APIs verwendet. Diese APIs verwalten und verarbeiten Client-Aufrufe und übernehmen Funktionen wie Verkehrsmanagement, Anforderungsfilterung, Routing, Caching, Authentifizierung und Autorisierung. 

## Microservices-Implementierungen
<a name="microservices-implementations"></a>

 AWS bietet Bausteine für die Entwicklung von Microservices, darunter Amazon ECS und Amazon EKS als Wahl für Container-Orchestrierungs-Engines AWS Fargate und EC2 als Hosting-Optionen. AWS Lambda ist eine weitere serverlose Methode, auf der Microservices aufgebaut werden können. AWS Die Wahl zwischen diesen Hosting-Optionen hängt von den Anforderungen des Kunden an die Verwaltung der zugrunde liegenden Infrastruktur ab. 

 AWS Lambda ermöglicht es Ihnen, Ihren Code hochzuladen und dessen Ausführung automatisch mit hoher Verfügbarkeit zu skalieren und zu verwalten. Dadurch entfällt die Notwendigkeit einer Infrastrukturverwaltung, sodass Sie schnell handeln und sich auf Ihre Geschäftslogik konzentrieren können. Lambda unterstützt [mehrere Programmiersprachen](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html) und kann durch andere AWS Dienste ausgelöst oder direkt aus Web- oder Mobilanwendungen aufgerufen werden. 

 Container-basierte Anwendungen haben aufgrund ihrer Portabilität, Produktivität und Effizienz an Beliebtheit gewonnen.AWS bietet verschiedene Dienste zum Erstellen, Bereitstellen und Verwalten von Containern. 
+  [App2Container](https://aws.amazon.com/app2container/), ein Befehlszeilentool für die Migration und Modernisierung von Java- und .NET-Webanwendungen in das Containerformat. AWS A2C analysiert und erstellt ein Inventar von Anwendungen, die in Bare Metal, virtuellen Maschinen, Amazon Elastic Compute Cloud (EC2) -Instanzen oder in der Cloud ausgeführt werden. 
+  Amazon Elastic Container Service ([Amazon ECS](https://aws.amazon.com/ecs/)) und Amazon Elastic Kubernetes Service ([Amazon EKS](https://aws.amazon.com/eks/)) verwalten Ihre Container-Infrastruktur und erleichtern so das Starten und Warten von containerisierten Anwendungen.  
  +  [Amazon EKS ist ein verwalteter Kubernetes-Service zum Ausführen von Kubernetes in der AWS Cloud und in lokalen Rechenzentren (Amazon EKS Anywhere).](https://aws.amazon.com/eks/eks-anywhere/) Dadurch werden Cloud-Dienste auf lokale Umgebungen ausgedehnt, um niedrige Latenz, lokale Datenverarbeitung, hohe Datenübertragungskosten oder Anforderungen an die Datenresidenz zu gewährleisten (siehe das Whitepaper „[Running Hybrid Container Workloads With Amazon](https://d1.awsstatic.com/kubernetes-pmm/eks-a/getting-started/AWS_Whitepaper_Running_Hybrid_Container_Workloads_with_Amazon_EKS_Anywhere.pdf) EKS Anywhere“). Sie können alle vorhandenen Plug-ins und Tools der Kubernetes-Community mit EKS verwenden. 
  +  Amazon Elastic Container Service (Amazon ECS) ist ein vollständig verwalteter Container-Orchestrierungsservice, der Ihre Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen vereinfacht. Kunden entscheiden sich aufgrund der Einfachheit und der umfassenden Integration mit Services für ECS. AWS 

 Weitere Informationen finden Sie im Blog [Amazon ECS vs Amazon EKS: Making Sense of AWS Container Services](https://aws.amazon.com/blogs/containers/amazon-ecs-vs-amazon-eks-making-sense-of-aws-container-services/). 
+  [AWS App Runner](https://aws.amazon.com/apprunner/)ist ein vollständig verwalteter Container-Anwendungsservice, mit dem Sie containerisierte Webanwendungen und API-Services ohne vorherige Infrastruktur- oder Container-Erfahrung erstellen, bereitstellen und ausführen können. 
+  [AWS Fargate](https://aws.amazon.com/fargate/), eine serverlose Compute-Engine, arbeitet sowohl mit Amazon ECS als auch mit Amazon EKS zusammen, um Rechenressourcen für Containeranwendungen automatisch zu verwalten. 
+  [Amazon ECR](https://aws.amazon.com/ecr/) ist eine vollständig verwaltete Container-Registry, die leistungsstarkes Hosting bietet, sodass Sie Anwendungsimages und Artefakte überall zuverlässig bereitstellen können. 

# Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD)
<a name="continuous-integration-and-continuous-deployment-cicd"></a>

 Continuous Integration and Continuous Delivery (CI/CD) ist ein entscheidender Bestandteil einer DevOps Initiative für schnelle Softwareänderungen. AWS bietet Dienste zur Implementierung CI/CD für Microservices an, aber eine ausführliche Diskussion würde den Rahmen dieses Dokuments sprengen. Weitere Informationen finden Sie im AWS Whitepaper [Practicing Continuous Integration and Continuous Delivery](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

# Private Vernetzung
<a name="private-networking"></a>

AWS PrivateLink ist eine Technologie, die die Sicherheit von Microservices verbessert, indem sie private Verbindungen zwischen Ihrer Virtual Private Cloud (VPC) und unterstützten AWS Diensten ermöglicht. Sie hilft dabei, den Microservice-Verkehr zu isolieren und zu sichern und stellt so sicher, dass er niemals das öffentliche Internet durchquert. Dies ist besonders nützlich für die Einhaltung von Vorschriften wie PCI oder HIPAA.

# Datastore
<a name="data-store"></a>

 Der Datenspeicher wird verwendet, um Daten zu speichern, die von den Microservices benötigt werden. Beliebte Speicher für Sitzungsdaten sind In-Memory-Caches wie Memcached oder Redis. AWS bietet beide Technologien als Teil des Managed [Amazon ElastiCache](https://aws.amazon.com/elasticache/) Services an. 

 Das Platzieren eines Caches zwischen Anwendungsservern und einer Datenbank ist ein gängiger Mechanismus, um die Leselast in der Datenbank zu reduzieren, was wiederum dazu führen kann, dass Ressourcen genutzt werden können, um mehr Schreibvorgänge zu unterstützen. Caches können auch die Latenz verbessern. 

 Relationale Datenbanken sind immer noch sehr beliebt, um strukturierte Daten und Geschäftsobjekte zu speichern. AWS bietet sechs Datenbank-Engines (Microsoft SQL Server, Oracle, MySQL, MariaDB, PostgreSQL und [Amazon Aurora) als verwaltete Services über Amazon](https://aws.amazon.com/rds/aurora/) [Relational Database Service (Amazon](https://aws.amazon.com/rds/) RDS) an. 

 Relationale Datenbanken sind jedoch nicht für endlose Skalierbarkeit konzipiert, was die Anwendung von Techniken zur Unterstützung einer hohen Anzahl von Abfragen schwierig und zeitaufwändig machen kann. 

 NoSQL-Datenbanken wurden so konzipiert, dass Skalierbarkeit, Leistung und Verfügbarkeit der Konsistenz relationaler Datenbanken vorgezogen werden. Ein wichtiges Element von NoSQL-Datenbanken ist, dass sie in der Regel kein striktes Schema erzwingen. Daten werden über Partitionen verteilt, die horizontal skaliert werden können, und werden mithilfe von Partitionsschlüsseln abgerufen. 

 Da einzelne Microservices darauf ausgelegt sind, eine Sache gut zu machen, verfügen sie in der Regel über ein vereinfachtes Datenmodell, das für NoSQL-Persistenz gut geeignet sein könnte. Es ist wichtig zu verstehen, dass NoSQL-Datenbanken andere Zugriffsmuster haben als relationale Datenbanken. Es ist beispielsweise nicht möglich, Tabellen zu verknüpfen. Wenn dies erforderlich ist, muss die Logik in der Anwendung implementiert werden. Sie können [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) verwenden, um eine Datenbanktabelle zu erstellen, die beliebige Datenmengen speichern und abrufen und jede Ebene von Anforderungsverkehr verarbeiten kann. DynamoDB bietet eine Leistung im einstelligen Millisekundenbereich. Es gibt jedoch bestimmte Anwendungsfälle, die Reaktionszeiten in Mikrosekunden erfordern. [DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) (DAX) bietet Caching-Funktionen für den Zugriff auf Daten. 

 DynamoDB bietet auch eine automatische Skalierungsfunktion, mit der die Durchsatzkapazität dynamisch an den tatsächlichen Verkehr angepasst werden kann. Es gibt jedoch Fälle, in denen die Kapazitätsplanung aufgrund großer, kurzzeitiger Aktivitätsspitzen in Ihrer Anwendung schwierig oder nicht möglich ist. Für solche Situationen bietet DynamoDB eine On-Demand-Option, die eine einfache pay-per-request Preisgestaltung bietet. DynamoDB On-Demand ist in der Lage, Tausende von Anfragen pro Sekunde sofort und ohne Kapazitätsplanung zu bearbeiten. 

 Weitere Informationen finden Sie unter [Verteiltes Datenmanagement](distributed-data-management.md) und [So wählen Sie eine](https://aws.amazon.com/startups/learn/maximizing-performance-with-aws-databases) Datenbank aus. 

# Vereinfachung von Abläufen
<a name="simplyfing-operations"></a>

 Um den betrieblichen Aufwand für den Betrieb, die Wartung und die Überwachung von Microservices weiter zu vereinfachen, können wir eine vollständig serverlose Architektur verwenden. 

## Bereitstellung von Lambda-basierten Anwendungen
<a name="deploying-lambda-based-applications"></a>

 Sie können Ihren Lambda-Code bereitstellen, indem Sie ein `zip` Dateiarchiv hochladen oder ein Container-Image über die Konsolen-Benutzeroberfläche mit einer gültigen Amazon ECR-Image-URI erstellen und hochladen. Wenn eine Lambda-Funktion jedoch komplex wird, was bedeutet, dass sie Ebenen, Abhängigkeiten und Berechtigungen hat, kann das Hochladen über die Benutzeroberfläche für Codeänderungen unhandlich werden. 

 Die Verwendung von AWS CloudFormation und AWS Serverless Application Model ([AWS SAM](https://github.com/awslabs/serverless-application-model)) oder Terraform optimiert den Prozess der Definition serverloser Anwendungen. AWS Cloud Development Kit (AWS CDK) AWS SAM, nativ unterstützt von CloudFormation, bietet eine vereinfachte Syntax für die Angabe serverloser Ressourcen.AWS Lambda Ebenen helfen dabei, gemeinsam genutzte Bibliotheken für mehrere Lambda-Funktionen zu verwalten, den Funktionsumfang zu minimieren, mandantenorientierte Bibliotheken zu zentralisieren und das Entwicklererlebnis zu verbessern. Lambda SnapStart für Java verbessert die Startleistung für latenzempfindliche Anwendungen. 

 Geben Sie zur Bereitstellung Ressourcen- und Berechtigungsrichtlinien in einer CloudFormation Vorlage an, packen Sie Artefakte für die Paketbereitstellung ein und stellen Sie die Vorlage bereit. SAM Local, ein AWS CLI Tool, ermöglicht die lokale Entwicklung, das Testen und die Analyse serverloser Anwendungen vor dem Hochladen auf Lambda. 

 Die Integration mit Tools wie AWS Cloud9 IDE,, und AWS CodePipeline optimiert das Erstellen AWS CodeBuild AWS CodeDeploy, Testen, Debuggen und Bereitstellen SAM-basierter Anwendungen. 

 Das folgende Diagramm zeigt die Bereitstellung von AWS Serverless Application Model Ressourcen mithilfe CloudFormation von CI/CD-Tools. AWS 

![\[Das Diagramm zeigt AWS Serverless Application Model ()AWS SAM\]](http://docs.aws.amazon.com/de_de/whitepapers/latest/microservices-on-aws/images/aws-sam.png)


## Abstraktion der Komplexität von Mehrmandantenverhältnissen
<a name="abstracting-multi-tenancy-complexities"></a>

 In einer Multi-Tenant-Umgebung wie SaaS-Plattformen ist es entscheidend, die Feinheiten im Zusammenhang mit Multi-Tenancy zu vereinfachen, sodass sich Entwickler auf die Entwicklung von Features und Funktionen konzentrieren können. Dies kann mit Tools wie [AWS Lambda Layers](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html) erreicht werden, die gemeinsam genutzte Bibliotheken zur Lösung bereichsübergreifender Probleme bieten. Der Grund für diesen Ansatz ist, dass gemeinsam genutzte Bibliotheken und Tools, wenn sie richtig eingesetzt werden, den Mandantenkontext effizient verwalten.  

 Aufgrund der Komplexität und der Risiken, die sie mit sich bringen können, sollten sie sich jedoch nicht auf die Kapselung von Geschäftslogik erstrecken. Ein grundlegendes Problem bei gemeinsam genutzten Bibliotheken ist die zunehmende Komplexität im Zusammenhang mit Updates, wodurch sie im Vergleich zur Duplizierung von Standardcode schwieriger zu verwalten sind. Daher ist es wichtig, bei der Suche nach der effektivsten Abstraktion ein Gleichgewicht zwischen der Verwendung gemeinsam genutzter Bibliotheken und der Vervielfältigung zu finden. 

## API-Management
<a name="api-management"></a>

 Die Verwaltung APIs kann zeitaufwändig sein, insbesondere wenn mehrere Versionen, Phasen des Entwicklungszyklus, Autorisierung und andere Funktionen wie Drosselung und Zwischenspeicherung berücksichtigt werden. Neben [API Gateway](https://aws.amazon.com/api-gateway/) verwenden einige Kunden auch ALB (Application Load Balancer) oder NLB (Network Load Balancer) für das API-Management. Amazon API Gateway trägt dazu bei, die betriebliche Komplexität der Erstellung und Wartung zu reduzieren RESTful APIs. Es ermöglicht Ihnen die APIs programmgesteuerte Erstellung, dient als „Eingangstür“ für den Zugriff auf Daten, Geschäftslogik oder Funktionen aus Ihren Backend-Services, Autorisierung und Zugriffskontrolle, Ratenbegrenzung, Caching, Überwachung und Datenverkehrsmanagement und läuft APIs ohne Serververwaltung. 

 Abbildung 3 zeigt, wie API Gateway API-Aufrufe verarbeitet und mit anderen Komponenten interagiert. Anfragen von Mobilgeräten, Websites oder anderen Backend-Diensten werden an den nächstgelegenen CloudFront Point of Presence (PoP) weitergeleitet, um die Latenz zu reduzieren und ein optimales Benutzererlebnis zu bieten. 

![\[Diagramm, das den API-Gateway-Anrufablauf zeigt\]](http://docs.aws.amazon.com/de_de/whitepapers/latest/microservices-on-aws/images/api-gateway-call-flow.png)
