Erstellen Sie mithilfe von DevOps Praktiken und Cloud9 eine lose gekoppelte Architektur mit Microservices AWS - AWS Prescriptive Guidance

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.

Erstellen Sie mithilfe von DevOps Praktiken und Cloud9 eine lose gekoppelte Architektur mit Microservices AWS

Erstellt von Alexandre Nardi () AWS

Umgebung: PoC oder Pilotprojekt

Technologien: DevOps; Serverlos; Web- und mobile Apps; Datenbanken

AWSDienste: AWS Cloud9;; AWS CloudFormation AWS CodePipeline; Amazon DynamoDB; AWS CodeCommit

Übersicht

Hinweis: AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. Weitere Informationen

Hinweis: AWS CodeCommit steht Neukunden nicht mehr zur Verfügung. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen

Dieses Muster zeigt, wie eine typische Webanwendung in einer serverlosen Architektur für Entwickler und Entwicklungsleiter entwickelt wird, die damit beginnen, DevOps Praktiken auf Amazon Web Services zu testen (AWS). Es erstellt eine Beispielanwendung, die eine Storefront und ein Backend für das Durchsuchen und Kaufen von Büchern erstellt und einen Microservice bereitstellt, der unabhängig entwickelt werden kann. Das Muster verwendet AWS Cloud9 als Entwicklungsumgebung, eine Amazon DynamoDB DynamoDB-Datenbank als Datenspeicher und AWS Dienste wie AWS CodePipeline und AWS CodeBuild für Continuous Integration and Continuous Deployment (CI/CD) -Funktionalität.

Das Muster führt Sie durch die folgenden Entwicklungsaktivitäten: 

  • Erstellen einer standardmäßigen AWS Cloud9-Entwicklungsumgebung

  • Verwenden von AWS CloudFormation Vorlagen zur Erstellung einer Webanwendung und eines Microservices für Bücher

  • AWSCloud9 verwenden, um das Front-End zu modifizieren, Änderungen zu übernehmen und Änderungen zu testen

  • Erstellen und Testen einer CI/CD-Pipeline zum Microservice

  • Automatisierung von Komponententests

Der Code für dieses Muster befindet sich im GitHub AWS DevOps End-to-End Workshop-Repository.

Voraussetzungen und Einschränkungen

Voraussetzungen

Wichtig: Wenn Sie diese Demo-Anwendung in Ihrem AWS Konto erstellen, werden AWS Ressourcen erzeugt und verbraucht. Sie sind für die Kosten der AWS Dienste und Ressourcen verantwortlich, die für die Erstellung und Ausführung der Anwendung verwendet werden. Stellen Sie sicher, dass Sie nach Abschluss Ihrer Arbeit alle Ressourcen entfernen, um laufende Kosten zu vermeiden. Anweisungen zur Bereinigung finden Sie im Abschnitt Epics

Einschränkungen

Diese exemplarische Vorgehensweise dient nur zu Demonstrations- und Entwicklungszwecken. Informationen zur Verwendung in einer Produktionsumgebung finden Sie unter Bewährte Sicherheitsmethoden in der Dokumentation zu AWS Identity and Access Management (IAM) und nehmen Sie die erforderlichen Änderungen an IAM Rollen, Amazon DynamoDB und anderen verwendeten Diensten vor. Die Webanwendung ist von der AWSBookstore-Demo-App abgeleitet. Weitere Überlegungen finden Sie im Abschnitt Bekannte Einschränkungen der Datei. README

Architektur

Die Architektur der Bookstore-Anwendung wird im Abschnitt Architektur der README Datei für die AWSBookstore-Demo-App veranschaulicht. 

Aus Sicht der Bereitstellung verwendet die Bookstore-Demo-App eine einzige CloudFormation Vorlage, um alle Dienste und Objekte in einem Stack bereitzustellen. Dieses Muster enthält einige Änderungen, um zu demonstrieren, wie ein bestimmter Entwickler oder ein bestimmtes Team an einem bestimmten Produkt (Bücher) arbeiten und es unabhängig vom Rest der Anwendung aktualisieren könnte. Aus diesem Grund teilt der Code für dieses Muster die AWS Lambda-Funktionen und zugehörigen Objekte für den Microservice Books in eine zweite CloudFormation Vorlage auf, die einen Books-Stack erstellt. Auf diese Weise können Sie sehen, wie der Microservice mithilfe von CI/CD-Praktiken aktualisiert wird. In der folgenden Abbildung kennzeichnet der gestrichelte Rand den Microservice Books.

Ein Microservice für Bücher in einer lose gekoppelten Architektur, der Praktiken verwendet. DevOps

Tools

Tools

  • Jest-Framework zum Testen JavaScript

  • Python 3.9

Code

Der Quellcode und die Vorlagen für dieses Muster sind im AWS DevOps End-to-End Workshop-Repository verfügbar. GitHub Bevor Sie den Schritten im Abschnitt Epics folgen, laden Sie alle Dateien aus dem Repository auf Ihren Computer herunter.

Hinweis: Der Abschnitt Epics enthält die allgemeinen Schritte für diese exemplarische Vorgehensweise, um Ihnen allgemeine Informationen über den Prozess zu geben. In der READMEDatei im AWS DevOps End-to-End Workshop-Repository finden Sie detaillierte Anweisungen, wie Sie die einzelnen Schritte abschließen können.

Das AWS DevOps End-to-End Workshop-Repository erweitert das AWSBookstore Demo App-Repository und verwendet eine modifizierte Version des AWSCloud9-Bootstrapping-Codes, um den Cloud9 zu erstellen. AWS IDE

Bewährte Methoden

Die Verwendung der Bookstore-Anwendung ist unkompliziert. Im Folgenden finden Sie einige empfohlene bewährte Methoden:

  • Bei der Installation der Anwendung können Sie einen Projektnamen Ihrer Wahl oder der Einfachheit halber den Standardnamen (demobookstore) verwenden.

  • Nachdem Sie die Anwendung betriebsbereit haben, empfiehlt es sich, die Amazon Neptune Neptune-Datenbank herunterzufahren, wenn Sie den Test für einen weiteren Tag fortsetzen möchten, da die Datenbank-Instance zusätzliche Kosten verursachen kann. Beachten Sie jedoch, dass die Datenbank nach sieben Tagen automatisch gestartet wird.

  • Einzelheiten zum Code finden Sie in der Dokumentation zum AWSBookstore Demo App-Repository. Sie beschreibt jeden Microservice und jede Tabelle.

  • Weitere bewährte Methoden finden Sie unter Einige Herausforderungen, wenn Sie Zeit haben... Abschnitt der READMEDatei im AWS DevOps End-to-End Workshop-Repository. Wir empfehlen Ihnen, die Informationen zu lesen, um sich eingehend mit zusätzlichen Sicherheitsfunktionen vertraut zu machen und Entkopplungsdienste zu üben.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Laden Sie den Quellcode von herunter GitHub.

Der Quellcode und die Vorlagen für dieses Muster sind im GitHub AWS DevOps End-to-End Workshop-Repository verfügbar. Laden Sie alle Dateien aus dem Repository auf Ihren Computer herunter, bevor Sie die nächsten Schritte im Abschnitt Epics ausführen.

Hinweis: Der Abschnitt Epics enthält die allgemeinen Schritte für diese exemplarische Vorgehensweise, um Ihnen allgemeine Informationen über den Vorgang zu geben. In der READMEDatei im AWS DevOps End-to-End Workshop-Repository finden Sie detaillierte Anweisungen, wie Sie die einzelnen Schritte abschließen können.

Das AWS DevOps End-to-End Workshop-Repository erweitert das AWSBookstore Demo App-Repository und verwendet eine modifizierte Version des AWSCloud9-Bootstrapping-Codes, um den Cloud9 zu erstellen. AWS IDE

App-Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die Front-End- und Lambda-Funktionen für die Bookstore-App.

  1. Melden Sie sich bei der CloudFormation Konsole an und stellen Sie die DemoBookstoreMainTemplate.yml Vorlage bereit, um den Stack zu erstellen. DemoBookStoreStack Dadurch werden die Front-End- und Lambda-Funktionen erstellt, die sich außerhalb des Microservices Books befinden.

  2. Notieren Sie sich auf der Registerkarte Outputs des Stacks die Website URL unter dem Label. WebApplication

Developer

Erstellen Sie den Microservice Bücher.

Stellen Sie auf der CloudFormation Konsole die DemoBookstoreBooksServiceTemplate.yml Vorlage bereit, um den DemoBooksServiceStack Stack zu erstellen.

Developer

Testen Sie Ihre Anwendung.

Verwenden Sie die Website URL aus dem DemoBookStoreStack Stack, um auf die Bookstore-Anwendung zuzugreifen.

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine AWS Cloud9IDE.

Stellen Sie die C9EnvironmentTemplate.yml Vorlage auf der CloudFormation Konsole bereit, um eine AWS Cloud9-Umgebung zu erstellen.

Entwickler, Leiter des Entwicklers

Erstellen Sie CodeCommit Repositorys.

  1. Melden Sie sich bei der AWS CodeCommit Konsole an und stellen Sie sicher, dass Sie über ein demobookstore-WebAssets Repository verfügen, das den Code für die Front-End-Anwendung enthält.

  2. Erstellen Sie ein Repository für den Microservice Books namens. demobookstore-BooksService

  3. Klonen Sie die beiden Repositorys in AWS Cloud9 (demobookstore-WebAssetsunddemobookstore-BooksService) mithilfe des git clone Befehls.

Developer

Ändern Sie den Code im Frontend und überprüfen Sie die Pipeline.

  1. Verwenden Sie AWS Cloud9, um einige Codeänderungen auf einer Webseite vorzunehmen. Dadurch wird das demobookstore-WebAssets Repository aktualisiert.

  2. Stellen Sie auf der AWS CodePipeline Konsole sicher, dass DemoBookStore-Assets-Pipeline läuft. 

  3. Testen Sie Ihre Webanwendung, indem Sie sie im Browser aktualisieren (Strg+F5 in Firefox).

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Fügen Sie die YAML Dateien für den Build und das Service-Update hinzu.

  1. Laden Sie in AWS Cloud9 die DemoBookstoreBooksServiceUpdateTemplate.yml  Dateien buildspec.yml und hoch.

    • buildspec.ymlenthält Bauanleitungen und enthält auch Testanweisungen für automatisierte Tests. Sie werden an dieser Stelle kommentiert und werden später verwendet.

    • DemoBookstoreBooksServiceUpdateTemplate.ymlist eine aktualisierte Version vonDemoBookstoreBooksServiceTemplate.yml, die in der Bereitstellungsphase der Pipeline verwendet werden soll.

  2. Übergeben Sie die Dateien und übertragen Sie sie.

Developer

Erstellen Sie einen S3-Bucket für die Build-Pipeline.

Um einen S3-Bucket zu erstellen, folgen Sie den Anweisungen in der Amazon S3 S3-Dokumentation.

  • Der Bucket-Name muss global eindeutig sein, zum Beispieldemobookstore-books-service-pipeline-bucket-<YYYYMMDDHHMM>

  • Deaktivieren Sie das Kontrollkästchen Allen öffentlichen Zugriff blockieren und aktivieren Sie das Kontrollkästchen Ich bestätige...

Developer

Wird verwendetIAM, um eine Rolle für die CloudFormation Bereitstellung zu erstellen.

Erstellen Sie eine demobookstore-CloudFormation-role Rolle und hängen Sie die AdministratorAccess Richtlinie an. Im nächsten Epic kannst du diese Rolle für Mindestberechtigungen neu konfigurieren.

Developer

Erstellen Sie eine neue Pipeline, um die Erstellung und Bereitstellung des Microservices Books zu automatisieren.

Erstellen Sie eine Pipeline (z. B. demobookstore- BooksService -Pipeline) mit den Phasen Commit, Build und Deploy, wie in der Datei beschrieben. README

Developer

Testen Sie Ihren Microservice in AWS Cloud9.

Nehmen Sie eine Änderung an der ListBooksFunktion vor und sehen Sie, wie die Pipeline funktioniert.

Developer

Automatisieren Sie den Komponententest für die ListBooks Lambda-Funktion.

Aktivieren Sie in der AWS Cloud9 den BuildIDE, um Komponententests auszuführen, und überprüfen Sie die Testergebnisse. Anweisungen finden Sie in der READMEDatei.

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Machen Sie Ihre Lösung sicher.

Stellen Sie demobookstore-CloudFormation-role die Konfiguration so ein, dass Sie über Mindestberechtigungen verfügen, und überprüfen Sie auch andere verwendete Rollen.

Developer

Beseitigen Sie Abhängigkeiten in den CloudFormation Vorlagen.

Die Methode für den Informationsaustausch zwischen der DemoBookstoreMainTemplate.yml Vorlage und der DemoBookstoreBooksServiceTemplate.yml Vorlage basiert auf Ausgaben und Importen. Durch die Übergabe von Werten zwischen diesen beiden Vorlagen werden Abhängigkeiten hinzugefügt. Um die Abhängigkeiten zu beseitigen, sollten Sie die Verwendung des AWSSystems Manager Manager-Parameterspeichers in Betracht ziehen.

Developer

Erstellen Sie einen Cart-Microservice.

Verwenden Sie den Microservice Books als Beispiel, um Funktionen im Zusammenhang mit Einkaufswagen aus der DemoBookstoreMainTemplate.yml Vorlage zu übernehmen und einen Warenkorb-Microservice zu erstellen.

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Löschen Sie die S3-Buckets.

Löschen Sie auf der Amazon S3 S3-Konsole die folgenden Buckets, die mit der Beispiel-Webanwendung verknüpft sind:

  • Zwei Buckets, die für die AWS Bookstore-Demo-App erstellt wurden. Die Buckets-Namen beginnen mit dem Stack-Namen, den Sie AWS CloudFormation bei der Erstellung des Frontends angegeben haben; zum Beispiel. DemoBookStoreStack

  • Ein Bucket für die Build-Pipeline, zum Beispiel demobookstore-books-service-pipelineYYYYMMDDHHMM-bucket-< >.

Developer

Lösche die Stapel.

Löschen Sie auf der CloudFormation Konsole die Stacks, die der Beispiel-Webanwendung zugeordnet sind:

  • DemoBooksServiceStack

  • DemoBookStoreStack

Das Entfernen kann mehr als 90 Minuten dauern. Wenn das Entfernen fehlschlägt, löschen Sie sie erneut und löschen Sie auch alle manuellen Ressourcen (z. B. die VPC oder Netzwerkschnittstellen), die auf Benachrichtigungen basieren.

Developer

Löschen Sie die IAM Rollen.

Löschen Sie auf der IAMKonsole die folgenden Rollen:

  • demobookstore-Cloudformation-role

  • demobookstore-BooksService-BuildProject-service-role

step-by-stepAnweisungen finden Sie in der IAMDokumentation

Developer

Zugehörige Ressourcen

Zusätzliche Informationen

Eine ausführliche step-by-step Anleitung finden Sie in der READMEDatei im AWS DevOps End-to-End GitHub Workshop-Repository.

Über das Update vom Mai 2023: Dieses Muster wurde aktualisiert, um neuere Versionen von Node und Python zu verwenden. Wir haben viele Pakete im Quellcode aktualisiert und Glyphicon entfernt, da es nicht mehr kostenlos ist. Wir haben auch alle Abhängigkeiten vom AWSBookstore Demo App-Repository entfernt, sodass sich die beiden Repositorys nun unabhängig voneinander weiterentwickeln können.