Zero Downtime Deployment ist die Praxis der Aktualisierung einer Anwendung, ohne dass die Arbeit unterbrochen wird und sie für Benutzer nicht erreichbar ist. Dies wird erreicht, indem alte Instanzen der Anwendung schrittweise abgeschaltet und neue eingeführt werden.
Ein Beispiel für die Implementierung einer stateless Anwendung in der Cloud (zum Beispiel mit Kubernetes):
Beispiel deployment.yaml mit rolling update:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2
Schlüsselfunktionen:
Ist Zero Downtime Deployment unmöglich bei Änderungen des Datenschemas?
Es ist möglich, wenn die Schemasmigrationen in zwei Schritten durchgeführt werden: Zuerst wird der Code mit dem alten und neuen Schema kompatibel, dann erfolgt die eigentliche Migration und die Entfernung des Legacy-Codes.
Ist bei stateless Anwendungen Zero Downtime Deployment immer gewährleistet?
Nein! Eine Einschränkung kann der externe Zustand, Zeitüberschreitungen bei Verbindungen, nicht bearbeitete Anfragen oder nicht unterstützte rückwärtsinkompatible Änderungen in der API sein.
Brauchen nur große Unternehmen Zero Downtime Deployment?
Nein. Selbst für kleine Startups und SaaS-Lösungen ist Zero Downtime ein kritischer Faktor für die Benutzererfahrung (insbesondere auf globalen Märkten und bei hohen Lasten).