Zero Downtime Deployment is de praktijk van het bijwerken van een applicatie zonder onderbreking van de werking en zonder dat deze onbereikbaar is voor gebruikers. Dit wordt bereikt door oude instanties sequentially uit te schakelen en nieuwe instanties in te voeren.
Een voorbeeld van implementatie voor een stateless applicatie in de cloud (bijvoorbeeld met Kubernetes):
Een voorbeeld van deployment.yaml met 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
Belangrijke kenmerken:
Is Zero Downtime Deployment onmogelijk bij het wijzigen van het datamodel?
Het is mogelijk als schema-migraties in twee stappen worden uitgevoerd: eerst wordt de code compatibel met zowel het oude als het nieuwe schema, daarna volgt de daadwerkelijke migratie en het verwijderen van legacy-code.
Als de applicatie stateless is, is zero downtime deployment altijd gegarandeerd?
Nee! Beperkende factoren kunnen externe status, time-outs van verbindingen, niet-verwerkte verzoeken of niet-ondersteunde reverse-incompatible veranderingen in de API zijn.
Is Zero Downtime Deployment alleen nodig voor grote bedrijven?
Nee. Zelfs voor kleine start-ups en SaaS-oplossingen is zero downtime een cruciale factor voor de gebruikerservaring (vooral op wereldwijde markten en bij hoge belasting).