Zero Downtime Deployment — la pratique de mettre à jour une application sans interrompre son fonctionnement et sans la rendre inaccessible aux utilisateurs. Cela se fait en déployant progressivement de nouvelles instances de l'application tout en gardant les anciennes en fonctionnement.
Exemple de mise en œuvre pour une application sans état dans le cloud (par exemple, avec Kubernetes) :
Exemple de deployment.yaml avec mise à jour progressive :
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
Caractéristiques clés :
Le Zero Downtime Deployment est-il impossible lors de la modification du schéma des données ?
C'est possible, si les migrations de schéma se font en deux étapes : d'abord, le code devient compatible avec l'ancien et le nouveau schéma, puis la migration elle-même et la suppression du code obsolète.
Si l'application est sans état, le zero downtime deployment est-il toujours garanti ?
Non ! Le facteur limitant peut être un état externe, des délais d'attente des connexions, des requêtes non traitées ou des modifications incompatibles avec l'API.
Le Zero Downtime Deployment est-il uniquement nécessaire pour les grandes entreprises ?
Non. Même pour des startups et des solutions SaaS de petite taille, le zero downtime est un facteur critique pour l'expérience utilisateur (surtout sur des marchés mondiaux et à fort chargement).