Zero Downtime Deployment — praktyka aktualizacji aplikacji bez przerywania działania i niedostępności dla użytkowników. Osiąga się to przez stopniowe wyłączanie starych i włączanie nowych instancji aplikacji.
Przykład realizacji dla aplikacji stateless w chmurze (np. z użyciem Kubernetes):
Przykład deployment.yaml z 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
Kluczowe cechy:
Zero Downtime Deployment jest niemożliwe przy zmianie schemy danych?
Jest możliwe, jeśli migracje schematu są realizowane w dwóch krokach: najpierw kod staje się zgodny ze starą i nową schemą, a następnie — sama migracja i usunięcie legacy-kodu.
Jeśli aplikacja jest stateless, zero downtime deployment zawsze jest gwarantowany?
Nie! Ograniczającym czynnikiem może być zewnętrzny stan, czas oczekiwania na połączenia, nieprzetworzone zapytania lub nieobsługiwane zmiany niezgodne wstecz w API.
Zero Downtime Deployment jest potrzebny tylko dużym firmom?
Nie. Nawet dla małych startupów i rozwiązań SaaS zero downtime — krytyczny czynnik dla doświadczeń użytkowników (szczególnie na rynkach globalnych i przy dużym obciążeniu).