Rolling Deployment

Bild von maniacvector auf Freepik
Rolling Deployment ist eine Deployment-Strategie, bei der eine neue Version einer Anwendung schrittweise auf mehreren Servern oder Instanzen ausgerollt wird, anstatt die gesamte Benutzerbasis auf einmal umzuschalten. Dabei wird die alte Version schrittweise durch die neue Version ersetzt, ohne dass die gesamte Anwendung gleichzeitig aus dem Verkehr genommen wird.
Funktionsweise von Rolling Deployment:
- Schrittweises Rollout:
- Bei einem Rolling Deployment wird die neue Version auf den Servern oder Instanzen der Anwendung nacheinander ausgerollt. Dies bedeutet, dass zu jedem Zeitpunkt immer noch eine Teilmenge der alten Version verfügbar ist, während die neue Version bereits auf anderen Servern läuft.
- Selektiver Austausch der Instanzen:
- Verfügbarkeit während des Rollouts:
- Während des gesamten Prozesses bleibt die Anwendung verfügbar und der Traffic wird zwischen den Servern verteilt. Solange immer genügend Instanzen mit der alten Version laufen, ist die Verfügbarkeit für die Benutzer gewährleistet.
- Überwachung und Kontrolle:
- Während des Rollouts wird die neue Version überwacht, um sicherzustellen, dass sie stabil läuft. Falls Probleme auftreten, kann der Rollout gestoppt werden, und es kann zu einem Rollback auf die vorherige Version kommen.
- Abschluss des Rollouts:
- Sobald alle Instanzen auf die neue Version aktualisiert wurden, ist das Deployment abgeschlossen, und die gesamte Anwendung läuft auf der neuen Version.
Vorteile von Rolling Deployment:
- Geringe Ausfallzeiten:
- Da nicht alle Instanzen gleichzeitig aktualisiert werden, bleibt die Anwendung während des gesamten Prozesses verfügbar. Dies ist besonders wichtig für Anwendungen, die hohe Verfügbarkeit erfordern.
- Flexibilität:
- Rolling Deployments ermöglichen es, das Rollout individuell zu steuern, indem jeweils nur einige Instanzen aktualisiert werden. Wenn eine Instanz Probleme hat, kann der Rollout gestoppt oder angepasst werden.
- Skalierbarkeit:
- Einfache Rollback-Option:
- Da nur einzelne Instanzen gleichzeitig aktualisiert werden, kann der Rollback-Prozess ebenfalls selektiv erfolgen. Falls ein Fehler auftritt, kann die betroffene Instanz schnell auf die alte Version zurückgesetzt werden, während der Rest der Anwendung unverändert bleibt.
Nachteile von Rolling Deployment:
- Längere Rollout-Zeiten:
- Da die neue Version schrittweise ausgerollt wird, kann der Rollout länger dauern als bei anderen Methoden wie Blue-Green Deployment, bei dem die gesamte Version gleichzeitig umgeschaltet wird.
- Komplexität der Verwaltung:
- Obwohl der Rollout schrittweise erfolgt, muss eine exakte Überwachung durchgeführt werden, um sicherzustellen, dass keine Instanz mit der alten Version weiterläuft, wenn die neue Version stabil ist. Auch das Testen auf jeder Instanz kann zusätzlichen Aufwand bedeuten.
- Inkonsistenzen während des Rollouts:
- Während des Rollouts können unterschiedliche Versionen der Anwendung gleichzeitig laufen, was zu Inkonsistenzen führen kann. Wenn eine neue Version auf den Servern läuft, aber ein Teil der Infrastruktur noch die alte Version verwendet, können Probleme auftreten, die nur schwer zu erkennen sind.
- Fehlende Benutzersegmente:
- Anders als bei Canary Deployments, bei denen nur eine kleine Benutzergruppe die neue Version sieht, kann bei Rolling Deployments jeder Benutzer zufällig auf Server mit der alten oder der neuen Version zugreifen. Dies könnte zu uneinheitlichen Benutzererfahrungen führen.
Beispiel für Rolling Deployment:
Angenommen, ein Unternehmen betreibt eine Webanwendung, die auf einem Cluster von 10 Servern läuft. Eine neue Version der Anwendung soll bereitgestellt werden:
- Initialer Rollout:
- Die neue Version wird zuerst auf 1 von 10 Servern ausgerollt. Der Traffic wird weiterhin auf die anderen 9 Server umgeleitet, die die alte Version ausführen.
- Überwachung:
- Die neue Version auf dem ersten Server wird überwacht, um sicherzustellen, dass keine Fehler auftreten und die Anwendung ordnungsgemäß funktioniert.
- Fortschreitender Rollout:
- Wenn der erste Server erfolgreich auf die neue Version umgestellt wurde, wird der nächste Server aktualisiert. Der Rollout geht so weiter, bis alle Server auf die neue Version umgestellt sind.
- Abschluss:
- Wenn alle Server erfolgreich auf die neue Version aktualisiert wurden, ist das Rollout abgeschlossen, und die gesamte Anwendung läuft auf der neuen Version.
- Rollback bei Problemen:
- Wenn während des Rollouts auf einem Server ein Fehler auftritt, kann dieser Server schnell wieder auf die alte Version zurückgesetzt werden, während die anderen Server weiterhin mit der neuen Version laufen.
Rolling Deployment im Vergleich zu anderen Deployment-Strategien:
- Blue-Green Deployment:
- Bei Blue-Green Deployment wird die gesamte Anwendung auf einmal von der alten auf die neue Version umgestellt. Im Gegensatz dazu erfolgt beim Rolling Deployment das Update in kleinen Schritten. Blue-Green Deployment ist in der Regel schneller, da der Rollout sofort auf die gesamte Benutzerbasis angewendet wird, während Rolling Deployments länger dauern können.
- Canary Deployment:
- Canary Deployment richtet sich an eine kleine Benutzergruppe, während beim Rolling Deployment die neue Version schrittweise über alle Server verteilt wird. Canary Deployments können verwendet werden, um das Verhalten der Anwendung mit einer kleinen Nutzergruppe zu testen, während Rolling Deployments den Rollout auf alle Nutzer verteilen, nur nicht gleichzeitig.
Fazit:
Rolling Deployment ist eine flexible und risikoarme Strategie, die sich hervorragend für Anwendungen eignet, die hohe Verfügbarkeit erfordern. Die schrittweise Einführung der neuen Version minimiert das Risiko eines vollständigen Ausfalls und ermöglicht es, schnell auf mögliche Probleme zu reagieren. Allerdings kann der Rollout länger dauern, und es erfordert eine sorgfältige Überwachung und Verwaltung, um sicherzustellen, dass keine Instanzen mit einer veralteten Version laufen und Inkonsistenzen auftreten.
„Möchtest Du zu diesen Begriff oder einem anderen Thema mit uns ins Gespräch kommen?“
