2016-10-06 2 views
8

Ich suche eine Lösung für ein bisschen eine seltsame Situation. Werfen wir einen kurzen Blick auf das angular2-seed-Projekt, damit ich es besser erklären kann: https://github.com/mgechev/angular2-seed/tree/master/src/client/app.Frontend "Micro Services" mit Angular 2

In diesem Projekt haben wir 3 isolierte Module - etwa, zu Hause, geteilt. Was ich suche, ist eine Möglichkeit, die Entwicklung von diesen zu isolieren, so dass wir letztendlich jedes Stück unabhängig voneinander veröffentlichen können. Angenommen, Team A arbeitet an der About-Sektion und Team B arbeitet zu Hause. Die Arbeit ist für jeden abgeschlossen, und wir sind bereit zu veröffentlichen, aber wir wissen, dass der About-Abschnitt eine kritische Funktionalität fehlt, aber wir wollen dennoch die Änderung in den Home-Bereich freigeben. Was wir suchen, ist ein Weg, dies zu erreichen.

Hier sind einige Lösungen, die bereits erforscht, aber ich bin nicht wirklich glücklich mit:

  • für zu Hause völlig unterschiedliche Anwendungen haben/um (in meinen Augen, das viele der Vorteile eines SPA eliminiert).
  • Lassen Sie jedes Modul (ungefähr, nach Hause, geteilt) in sein eigenes NPM-Paket rollen. Wenn wir mit der Bereitstellung beginnen, haben wir eine Möglichkeit, alle veröffentlichten NPM-Pakete für diese Module zu orchestrieren.
+0

Was ist Ihre Frage genau? Wie isoliert sind die Module "about" und "home"? – KTCO

+0

@KTCO das ist ein Teil dessen, was ich noch herausfinden muss, was wahrscheinlich in die endgültige Lösung eingebunden sein wird. Das Unternehmen möchte in der Lage sein, neue Funktionen unabhängig voneinander in der Anwendung freizugeben, anstatt die gesamte Anwendung auf einmal freizugeben. Da jede Funktion von einem anderen Team betrieben wird, möchten sie, dass Team A ihren neuen Code freigibt, ohne Team B überhaupt zu beeinträchtigen. Wie im Titel erwähnt, wollen sie wirklich eine "Micro Service" -Architektur am Frontend erreichen. – SpareWalrus

+0

@KTCO Während ich meine Bedenken bezüglich dieser Methode am Frontend habe, möchte ich zumindest die Optionen erkunden, bevor ich direkt Nein sage. – SpareWalrus

Antwort

5

Besetzung:

Lassen Sie jedes Team eine Komponentenbibliothek (NPM) bauen und diese in einer einzigen Winkel 2-Anwendung ziehen. Auf diese Weise können die Teams unter Verwendung von microservices principles entwickeln, aber Sie können einen SPA Monolith bereitstellen, der die Komplexität reduziert.

Große Komponentenbibliotheken sollten mehrere Bundles und Module, so dass Sie über selektiv sein können, was Sie ziehen in

Kommunikation zwischen Microservices.

Bei Bedarf können die Komponenten-Bibliotheken einen Hinter- kommunizieren Ende Nachrichtenbus.

Wenn eine direkte clientseitige Integration zwischen den Komponentenbibliotheken erforderlich ist, benötigen Sie eine dritte Komponentenbibliothek, die und home abhängt, die einen leichtgewichtigen injizierbaren Nachrichten-/Ereignisdienst enthält. Sie können diesen Service mit RxJS Subjects implementieren.

Verwandte Themen