So stellen Sie mehrere abhängige Mikrodienste bereit


7

Wir möchten mehrere Microservices auf AWS ECS bereitstellen.

Das Problem, das wir lösen müssen, ist, wie man sie auf atomare Weise einsetzt:

Angenommen, wir haben die Front-End-Dienste, für die der Benutzerdienst Version 2.0 erforderlich ist.

So stellen Sie sicher, dass der Benutzerdienst verfügbar ist, bevor der Front-End-Dienst bereitgestellt wird.

Wir haben die Idee, die gesamte Infrastruktur zu replizieren, alles bereitzustellen und dann verfügbar zu machen. Aber es scheint mir komplex. Wie erstellen Sie diese Ersatzinstanzen, stellen die Dienste bereit und führen den Wechsel durch?

Wir verwenden zwei ALB- und Zielgruppen für jeden Dienst (dynamische Portzuordnungen).

Antworten:


6

Eine solche Frage könnte ein Hinweis auf eine schlechte architektonische Aufteilung in Mikrodienste sein. Von was sind Microservices? ::

Diese Services basieren auf Geschäftsfunktionen und können unabhängig voneinander von vollautomatisierten Bereitstellungsmaschinen bereitgestellt werden.

Der entscheidende Punkt, der in einem solchen Fall übersehen wird, wäre ihr unabhängig einsetzbarer Aspekt.

Der Punkt könnte auch einfach missverstanden werden: Es bedeutet nicht unbedingt, dass jeder Mikrodienst in der Lage sein sollte, seine gesamte Funktionalität für sich selbst auszuführen, sondern nur, dass er ordnungsgemäß entlassen werden kann, wenn ein anderer Mikrodienst, von dem seine Funktionalität abhängt, nicht verfügbar ist. Vielleicht behalten Sie den Überblick über "Aufgaben" für die spätere Ausführung, wenn dieser Microservice verfügbar wird.

Aus einer anderen Perspektive betrachtet: Die Behandlung der Nichtverfügbarkeit externer Dienstabhängigkeiten sollte eigentlich Teil jeder Mikroservice-Funktionalität sein - daher kann man den Mikroservice auch dann als voll funktionsfähig betrachten, wenn seine Laufzeitabhängigkeiten nicht erfüllt sind :)

Ich denke, es ist erwähnenswert, dass ich mich in den obigen Kommentaren auf die Nichtverfügbarkeit von Microservices beziehe, unabhängig von deren Grund, sei es die Reihenfolge der Bereitstellungsabhängigkeit oder etwas anderes (z. B. Ausfälle).

Eine andere zu berücksichtigende Sache wäre der feinere Unterschied zwischen der Bereitstellung der Mikrodienste und ihrer Umsetzung durch Umschalten des Datenverkehrs auf sie. Das Wechseln des Datenverkehrs ist häufig schneller als die Bereitstellung selbst. Daher kann die Verfügbarkeit auf der gesamten Systemebene erhöht werden, indem zuerst alle Mikrodienste bereitgestellt werden und erst dann die Verkehrsumschaltung für alle ausgeführt wird.


Das ist was ich dachte! Vielen Dank für diese Erklärungen.
Kaymaz

1

Wir hatten eine ähnliche Situation, in der eine unserer Anwendungen erstellt, bereitgestellt und betriebsbereit sein musste, bevor die zweite ausgeführt wurde. Dies lag daran, dass Anwendung A über einige Funktionen verfügt, die ausgeführt werden sollten, bevor über Anwendung B auf sie verwiesen wird. Wir haben dies erreicht, indem wir sie in eine einzelne Übermittlungspipeline integriert haben. Auf diese Weise wurden alle Abhängigkeiten nach Bedarf entweder nacheinander oder parallel bereitgestellt. Wir hatten auch unsere Datenbankskripte nacheinander zusammen mit Rollback-Funktionen, nur für den Fall. Um Ihren Fall neu zu formulieren, können Sie Ihre API vor Ihrem Front-End-Service bereitstellen. Hoffe das hilft.


0

Die Lösung besteht darin, die Mikrodienste mithilfe des blau / grünen Bereitstellungsmusters bereitzustellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.