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 ein Portal für Mikro-Frontends mithilfe AWS Amplify von Angular und Module Federation
Erstellt von Milena Godau (AWS) und Pedro Garcia () AWS
Übersicht
Eine Micro-Frontend-Architektur ermöglicht es mehreren Teams, unabhängig voneinander an verschiedenen Teilen einer Frontend-Anwendung zu arbeiten. Jedes Team kann ein Fragment des Frontends entwickeln, erstellen und bereitstellen, ohne andere Teile der Anwendung zu beeinträchtigen. Aus Sicht des Endbenutzers scheint es sich um eine einzige, zusammenhängende Anwendung zu handeln. Sie interagieren jedoch mit mehreren unabhängigen Anwendungen, die von verschiedenen Teams veröffentlicht werden.
In diesem Dokument wird beschrieben, wie Sie mithilfe des Angular-Frontend-Frameworks
Das Portal ist vertikal aufgeteilt. Das bedeutet, dass es sich bei den Mikrofrontends um ganze Ansichten oder Gruppen von Ansichten handelt, anstatt um Teile derselben Ansicht. Daher lädt die Shell-Anwendung jeweils nur ein Mikro-Frontend.
Die Mikrofrontends sind als Remote-Module implementiert. Die Shell-Anwendung lädt diese Remote-Module langsam, wodurch die Mikro-Frontend-Initialisierung verzögert wird, bis sie benötigt wird. Dieser Ansatz optimiert die Anwendungsleistung, indem nur die benötigten Module geladen werden. Dies reduziert die anfängliche Ladezeit und verbessert die allgemeine Benutzererfahrung. Darüber hinaus teilen Sie über die Webpack-Konfigurationsdatei (webpack.config.js) gemeinsame Abhängigkeiten zwischen den Modulen. Diese Vorgehensweise fördert die Wiederverwendung von Code, reduziert Doppelarbeit und optimiert den Bündelungsprozess.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktiver AWS-Konto
Zu verwendende Berechtigungen AWS Amplify
Vertrautheit mit Angular
Produktversionen
Angular CLI Version 13.1.2 oder höher
@angular -architects/module-federation Version 14.0.1 oder höher
Webpack-Version 5.4.0 oder höher
AWS Amplify Generation 1
Einschränkungen
Eine Micro-Frontend-Architektur ist ein leistungsstarker Ansatz für die Erstellung skalierbarer und robuster Webanwendungen. Es ist jedoch wichtig, die folgenden potenziellen Herausforderungen zu verstehen, bevor Sie diesen Ansatz anwenden:
Integration — Eine der größten Herausforderungen ist die potenzielle Zunahme der Komplexität im Vergleich zu monolithischen Frontends. Die Orchestrierung mehrerer Mikro-Frontends, die Verwaltung der Kommunikation zwischen ihnen und die Verwaltung gemeinsamer Abhängigkeiten können komplizierter sein. Darüber hinaus kann mit der Kommunikation zwischen den Mikrofrontends ein Leistungsaufwand verbunden sein. Diese Kommunikation kann die Latenz erhöhen und die Leistung verringern. Diesem Problem muss durch effiziente Nachrichtenmechanismen und Strategien für den Datenaustausch begegnet werden.
Codeduplizierung — Da jedes Mikro-Frontend unabhängig entwickelt wird, besteht die Gefahr, dass Code für gemeinsame Funktionen oder gemeinsam genutzte Bibliotheken dupliziert wird. Dies kann die Gesamtgröße der Anwendung erhöhen und zu Problemen bei der Wartung führen.
Koordination und Verwaltung — Die Koordination der Entwicklungs- und Bereitstellungsprozesse über mehrere Mikrofrontends hinweg kann eine Herausforderung sein. Die Sicherstellung einer konsistenten Versionierung, die Verwaltung von Abhängigkeiten und die Aufrechterhaltung der Kompatibilität zwischen den Komponenten werden in einer verteilten Architektur immer wichtiger. Die Einrichtung klarer Governance, Richtlinien und automatisierter Test- und Bereitstellungspipelines ist für eine reibungslose Zusammenarbeit und Bereitstellung unerlässlich.
Testen — Das Testen von Mikro-Frontend-Architekturen kann komplexer sein als das Testen monolithischer Frontends. Es erfordert zusätzlichen Aufwand und spezielle Teststrategien, um komponentenübergreifende Integrationstests und end-to-end Tests durchzuführen und konsistente Benutzererlebnisse über mehrere Mikrofrontends hinweg zu validieren.
Architektur
In einer Micro-Frontend-Architektur entwickelt und implementiert jedes Team Funktionen unabhängig. Das folgende Bild zeigt, wie mehrere DevOps Teams zusammenarbeiten. Das Portalteam entwickelt die Shell-Anwendung. Die Shell-Anwendung fungiert als Container. Sie ruft die Micro-Frontend-Anwendungen ab, zeigt sie an und integriert sie, die von anderen Teams veröffentlicht wurden. DevOps Sie verwenden, AWS Amplify um die Shell-Anwendung und die Micro-Frontend-Anwendungen zu veröffentlichen.

Das Architekturdiagramm zeigt den folgenden Arbeitsablauf:
Das Portalteam entwickelt und verwaltet die Shell-Anwendung. Die Shell-Anwendung orchestriert die Integration und das Rendern der Mikro-Frontends, um das gesamte Portal zusammenzustellen.
Die Teams A und B entwickeln und warten ein oder mehrere Mikrofrontends oder Funktionen, die in das Portal integriert sind. Jedes Team kann unabhängig an seinen jeweiligen Mikrofrontends arbeiten.
Der Endbenutzer authentifiziert sich mithilfe von Amazon Cognito.
Der Endbenutzer greift auf das Portal zu und die Shell-Anwendung wird geladen. Während der Benutzer navigiert, kümmert sich die Shell-Anwendung um das Routing und ruft das angeforderte Mikro-Frontend ab, wobei das Paket geladen wird.
Tools
AWS-Services
AWS Amplify
ist eine Reihe von speziell entwickelten Tools und Funktionen, mit denen Frontend-Web- und Mobilentwickler schnell Full-Stack-Anwendungen erstellen können. AWS In diesem Muster verwenden Sie Amplify, CLI um die Amplify-Mikrofrontend-Anwendungen bereitzustellen. AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie AWS-Services über Befehle in Ihrer Befehlszeilen-Shell interagieren können.
Andere Tools
@angular -architects/module-federation
ist ein Plugin, das Angular in Module Federation integriert. Angular
ist ein Open-Source-Framework für Webanwendungen zum Erstellen moderner, skalierbarer und testbarer einseitiger Anwendungen. Es folgt einer modularen und komponentenbasierten Architektur, die die Wiederverwendung und Wartung von Code fördert. Node.js
ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen konzipiert wurde. npm
ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten. Webpack Module Federation
hilft Ihnen dabei, Code, der unabhängig kompiliert und bereitgestellt wird, wie Mikro-Frontends oder Plugins, in eine Anwendung zu laden.
Code-Repository
Der Code für dieses Muster ist im Micro-Frontend-Portal unter Verwendung des Angular- und Module GitHub Federation-Repositorys
shell-app
enthält den Code für die Shell-Anwendung.feature1-app
enthält ein Beispiel-Mikrofrontend. Die Shell-Anwendung ruft dieses Mikro-Frontend ab und zeigt es als Seite innerhalb der Portalanwendung an.
Bewährte Methoden
Mikro-Frontend-Architekturen bieten zahlreiche Vorteile, bringen aber auch Komplexität mit sich. Im Folgenden finden Sie einige bewährte Methoden für eine reibungslose Entwicklung, hochwertigen Code und eine hervorragende Benutzererfahrung:
Planung und Kommunikation — Um die Zusammenarbeit zu optimieren, sollten Sie im Vorfeld in Planung, Design und klare Kommunikationskanäle investieren.
Einheitliches Design — Sorgen Sie mithilfe von Designsystemen, Styleguides und Komponentenbibliotheken für einen einheitlichen visuellen Stil auf allen Mikro-Frontends. Dies sorgt für ein einheitliches Benutzererlebnis und beschleunigt die Entwicklung.
Abhängigkeitsmanagement — Da sich Mikro-Frontends unabhängig weiterentwickeln, sollten Sie standardisierte Verträge und Versionsstrategien anwenden, um Abhängigkeiten effektiv zu verwalten und Kompatibilitätsprobleme zu vermeiden.
Mikro-Frontend-Architektur — Um eine unabhängige Entwicklung und Bereitstellung zu ermöglichen, sollte jedes Mikro-Frontend eine klare und klar definierte Verantwortung für eine gekapselte Funktionalität haben.
Integration und Kommunikation — Um eine reibungslose Integration zu ermöglichen und Konflikte zu minimieren, sollten Sie klare Verträge und Kommunikationsprotokolle zwischen Mikrofrontends definieren, einschließlich Ereignisse und gemeinsam genutzter Datenmodelle. APIs
Testen und Qualitätssicherung — Implementieren Sie Testautomatisierung und kontinuierliche Integrationspipelines für Mikro-Frontends. Dies verbessert die Gesamtqualität, reduziert den manuellen Testaufwand und validiert die Funktionalität zwischen den Mikro-Frontend-Interaktionen.
Leistungsoptimierung — Überwachen Sie kontinuierlich die Leistungskennzahlen und verfolgen Sie die Abhängigkeiten zwischen den Mikrofrontends. Auf diese Weise können Sie Engpässe erkennen und eine optimale Anwendungsleistung aufrechterhalten. Verwenden Sie zu diesem Zweck Tools zur Leistungsüberwachung und Abhängigkeitsanalyse.
Entwicklererfahrung — Konzentrieren Sie sich auf die Erfahrung der Entwickler, indem Sie klare Dokumentationen, Tools und Beispiele bereitstellen. Auf diese Weise können Sie die Entwicklung optimieren und neue Teammitglieder einarbeiten.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie die Shell-Anwendung. |
| App-Developer |
Installieren Sie das -Plug-in. | Geben Sie im Angular den folgenden Befehl einCLI, um das @angular -architects/module-federation
| App-Developer |
Fügen Sie das URL Micro-Frontend als Umgebungsvariable hinzu. |
| App-Developer |
Definieren Sie das Routing. |
| App-Developer |
|
| App-Developer |
Bereiten Sie das Preloading für das Micro-Frontend vor. | Das Vorladen des Mikro-Frontends hilft dem Webpack, die gemeinsam genutzten Bibliotheken und Pakete richtig auszuhandeln.
| App-Developer |
Passen Sie den Inhalt anHTML. |
| App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie das Mikro-Frontend. |
| App-Developer |
Installieren Sie das -Plug-in. | Geben Sie den folgenden Befehl ein, um das @angular -architects/module-federation Plugin zu installieren:
| App-Developer |
Erstellen Sie ein Modul und eine Komponente. | Geben Sie die folgenden Befehle ein, um ein Modul und eine Komponente zu erstellen und sie als Fernzugriffsmodul zu exportieren:
| App-Developer |
Legen Sie den Standard-Routingpfad fest. |
| App-Developer |
Fügen |
| App-Developer |
Bearbeiten Sie die Datei webpack.config.js. |
| App-Developer |
Passen Sie den Inhalt an. HTML |
| App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie die |
| App-Developer |
Führen Sie die Shell-Anwendung aus. |
| App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie ein Modul und eine Komponente. | Geben Sie im Stammordner der Shell-Anwendung die folgenden Befehle ein, um ein Modul und eine Komponente für eine Fehlerseite zu erstellen:
| App-Developer |
Passen Sie den HTML Inhalt an. |
| App-Developer |
Legen Sie den Standard-Routingpfad fest. |
| App-Developer |
Erstellen Sie eine Funktion zum Laden von Mikro-Frontends. |
| App-Developer |
Testen Sie die Fehlerbehandlung. |
| App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Stellen Sie das Mikro-Frontend bereit. |
| App-Entwickler, AWS DevOps |
Stellen Sie die Shell-Anwendung bereit. |
| App-Entwickler, App-Besitzer |
Aktivieren Sie CORS. | Da die Shell- und Micro-Frontend-Anwendungen unabhängig voneinander auf verschiedenen Domänen gehostet werden, müssen Sie die ursprungsübergreifende gemeinsame Nutzung von Ressourcen (CORS) im Mikrofrontend aktivieren. Dadurch kann die Shell-Anwendung den Inhalt von einem anderen Ursprung laden. Um dies zu aktivierenCORS, fügen Sie benutzerdefinierte Header hinzu.
| App-Entwickler, AWS DevOps |
Erstellen Sie eine Rewrite-Regel für die Shell-Anwendung. | Die Angular-Shell-Anwendung ist für die Verwendung von HTML5 Routing konfiguriert. Wenn der Benutzer eine Hard-Refresh durchführt, versucht Amplify, eine Seite aus der aktuellen URL Version zu laden. Dies generiert einen 403-Fehler. Um dies zu vermeiden, fügen Sie in der Amplify-Konsole eine Rewrite-Regel hinzu. Gehen Sie folgendermaßen vor, um die Rewrite-Regel zu erstellen:
| App-Entwickler, AWS DevOps |
Testen Sie das Webportal. |
| App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Löschen Sie die Anwendungen. | Wenn Sie die Shell- und Micro-Frontend-Anwendungen nicht mehr benötigen, löschen Sie sie. Auf diese Weise können Sie vermeiden, dass Gebühren für Ressourcen anfallen, die Sie nicht nutzen.
| Allgemein AWS |
Fehlerbehebung
Problem | Lösung |
---|---|
Beim Ausführen des | Wenn Sie kein AWS Profil konfiguriert haben, können Sie trotzdem mit dem Alternativ können Sie ein benanntes Profil für die konfigurieren AWS CLI. Anweisungen finden Sie in der AWS CLI Dokumentation unter Einstellungen für die Konfiguration und die Anmeldeinformationsdatei. |
Fehler beim Laden von Remote-Einträgen | Wenn beim Laden der Remote-Einträge in der Datei main.ts der Shell-Anwendung ein Fehler auftritt, stellen Sie sicher, dass die |
404-Fehler beim Zugriff auf das Micro-Frontend | Wenn Sie beim Versuch, auf das lokale Micro-Frontend zuzugreifen, einen 404-Fehler erhalten, z. B. unter
|
Zusätzliche Informationen
AWS Dokumentation
Mikrofrontends verstehen und implementieren auf AWS (AWS Prescriptive Guidance)
Amplify CLI
(Amplify-Dokumentation) Amplify Hosting (Amplify-Dokumentation)
Andere Referenzen