Architecture systèmeIngénieur DevOps, Développeur Backend

Qu'est-ce que le Zero Downtime Deployment dans le contexte de l'architecture des systèmes informatiques et comment le mettre en œuvre ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

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) :

  1. Déployer la nouvelle version des pods sans supprimer les anciens.
  2. Vérifier que les nouvelles instances sont en bonne santé.
  3. Ce n’est qu’après cela que l’on bascule le trafic vers elles (blue-green/release ou mise à jour progressive).
  4. Les anciens conteneurs sont progressivement arrêtés après que l’on soit totalement confiant dans la nouvelle version.

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 :

  • Nécessite des services sans état ou des stratégies de migration d'état spécialisées.
  • Souvent mis en œuvre via des mises à jour progressives ou un déploiement blue-green.
  • Pour un zero downtime au niveau de la base de données, une migration en plusieurs étapes est nécessaire (schémas compatibles en avant/arrière).

Questions pièges.

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).