In diesem Modul werden Sie die node.js-Anwendung in mehrere miteinander verbundene Services aufteilen und das Image jedes Service in ein Amazon Elastic Container Registry (Amazon ECR)-Repository verschieben. Erste Schritte
Die endgültige Anwendungsarchitektur verwendet den Amazon Elastic Container Service (Amazon ECS) und den Application Load Balancer (ALB).

a. Client
Der Client stellt Datenverkehrsanfragen über Port 80.
b. Load Balancer
Der ALB leitet den externen Datenverkehr an den richtigen Service weiter. Der ALB prüft die Client-Anfrage und verwendet die Routing-Regeln, um die Anfrage an eine Instance und einen Port für die Zielgruppe zu leiten, die der Regel entspricht.
c. Zielgruppen
Jeder Service hat eine Zielgruppe, die die Instances und Ports der einzelnen für diesen Service laufenden Container verfolgt.
d. Microservices
Amazon ECS stellt jeden Service in einem Container in einem EC2-Cluster bereit. Jeder Container übernimmt nur ein einzelnes Feature.
Isolierung von Abstürzen
Selbst in den besten Entwicklungsabteilungen kommt es in der Produktion zu fatalen Abstürzen. Neben der Befolgung aller herkömmlichen Best Practices für den ordnungsgemäßen Umgang mit Abstürzen ist ein Ansatz, der die Auswirkungen solcher Abstürze begrenzen kann, die Entwicklung von Microservices. Bei einer guten Microservice-Architektur fällt nur ein Teil des gesamten Service aus, wenn einer der Microservices abstürzt. Der Rest Ihres Service kann weiterhin ordnungsgemäß funktionieren.
Isolation für Sicherheit
Wenn in einer monolithischen Anwendung eine Funktion der Anwendung eine Sicherheitsverletzung aufweist, z. B. eine Schwachstelle, die eine Remote-Codeausführung ermöglicht, dann müssen Sie davon ausgehen, dass ein Angreifer auch auf jede andere Funktion des Systems Zugriff hätte haben können. Dies kann gefährlich sein, wenn z. B. Ihre Funktion zum Hochladen von Avataren ein Sicherheitsproblem aufweist, das dazu führt, dass Ihre Datenbank mit Benutzerpasswörtern kompromittiert wird. Die Trennung der Funktionen in Microservices mit Amazon ECS ermöglicht es Ihnen, den Zugang zu AWS Ressourcen zu schützen, indem Sie jedem Service eine eigene AWS Identity and Access Management (IAM)-Rolle zuweisen. Wenn die Best Practices der Microservices befolgt werden, können sich Angreifer höchstens Zugang zu den Ressourcen eines einzelnen Service verschaffen und nicht serviceübergreifend auf andere Ressourcen zugreifen, ohne sich vorher Zugriff auf die anderen Services zu verschaffen.
Unabhängige Skalierung
Wenn Funktionen in Mikroservices aufgeteilt werden, können die Menge der Infrastruktur und die Anzahl der von jeder Microservice-Klasse verwendeten Instances unabhängig voneinander nach oben und unten skaliert werden. Dies erleichtert es, die Kosten für ein bestimmtes Feature zu messen und Features zu identifizieren, die möglicherweise zuerst optimiert werden müssen. Wenn der Ressourcenbedarf eines bestimmten Features problematisch ist, sind andere Features davon nicht betroffen und die Leistung wird somit nicht beeinträchtigt.
Entwicklungsgeschwindigkeit
Microservices senken die Risiken bei der Entwicklung und beschleunigen diese so. Bei monolithischer Software können sich neue Features schnell auf jedes andere Feature der Software auswirken. Entwickler müssen die Auswirkungen jedes hinzugefügten Codes sorgfältig abwägen und sicherstellen, dass er keine Fehler verursacht. Dagegen wird bei einer richtig aufgebauten Microservice-Architektur neuer Code für neue Features in einen neuen Service eingepflegt. Entwickler können sicher sein, dass jeder von ihnen verfasste Code den bestehenden Code nicht beeinflussen kann, es sei denn, sie stellen explizit eine Verbindung zwischen zwei Microservices her.