Aller au contenu
hexora

Mise en production progressive : déployer sans stress, revenir en arrière vite

Déploiement progressif, feature flags, canary, blue-green et retour arrière : comment mettre une application métier en production sans bloquer vos équipes.

Par la rédaction Hexora8 min de lecture
Salle de contrôle avec pupitres, écrans de supervision et horloge murale
Photo : Miha Meglic / Unsplash

L’essentiel en 30 secondes

  • Une mise en production progressive expose une nouvelle version à une petite partie des utilisateurs avant de l’étendre à tous, pour détecter un problème tant qu’il touche peu de monde.
  • Selon le livre Site Reliability Engineering de Google, environ 70 % des pannes sont dues à des changements apportés à un système en fonctionnement : c’est le moment de la livraison qu’il faut sécuriser.
  • Les feature flags séparent le déploiement du code de l’activation d’une fonctionnalité : on peut livrer le mardi et ouvrir la fonction aux équipes le lundi suivant, ou la couper en un clic.
  • Le retour arrière doit être prévu, répété et rapide ; les changements de base de données se font en plusieurs étapes compatibles avec l’ancienne et la nouvelle version.
  • Pour une PME ou une ETI, la combinaison la plus rentable est souvent : petites livraisons fréquentes, interrupteurs de fonctionnalités, ouverture par groupe pilote et supervision de quelques indicateurs simples.

Une mise en production progressive consiste à déployer une nouvelle version d’une application d’abord pour une petite partie des utilisateurs, à observer son comportement, puis à l’étendre par paliers jusqu’à tout le monde. Elle s’appuie sur trois outils : des livraisons petites et fréquentes, des interrupteurs de fonctionnalités (feature flags) et un retour arrière rapide et répété à l’avance. Résultat : une anomalie touche quelques personnes pendant quelques minutes, au lieu de bloquer toute l’entreprise un lundi matin.

Ce guide s’adresse aux dirigeants et responsables métier qui pilotent une application interne, un portail client ou un SaaS. Il explique les techniques, ce qu’elles coûtent en organisation et comment choisir la bonne combinaison.

Pourquoi la mise en production est-elle le moment le plus risqué ?

Une application qui tourne sans changement tombe rarement en panne. Ce sont les modifications qui introduisent les défauts. Le livre Site Reliability Engineering de Google l’énonce clairement : environ 70 % des pannes sont dues à des changements apportés à un système en fonctionnement. Les auteurs recommandent d’automatiser trois pratiques pour limiter les dégâts : les déploiements progressifs, la détection rapide des problèmes et le retour arrière sûr.

Dans une PME ou une ETI, le risque prend une forme très concrète :

  • les préparateurs ne peuvent plus valider les commandes ;
  • les techniciens terrain n’ont plus accès à leurs interventions du jour ;
  • les clients du portail voient une page d’erreur au moment de passer commande.

La réaction instinctive consiste à livrer moins souvent, en gros lots soigneusement testés. C’est l’inverse qu’il faut faire : un gros lot contient davantage de changements, donc davantage de causes possibles de panne, et il est plus difficile à diagnostiquer et à annuler. C’est l’une des raisons pour lesquelles nous livrons à chaque sprint des incréments de taille modeste.

Déploiement et mise à disposition : deux décisions distinctes

La notion qui change tout est la séparation entre déployer et mettre à disposition.

  • Déployer, c’est installer une nouvelle version du code sur les serveurs de production. C’est une opération technique.
  • Mettre à disposition (on parle aussi de « release »), c’est rendre une fonctionnalité visible et utilisable par des utilisateurs. C’est une décision métier.

Tant que les deux sont confondues, chaque livraison est un pari : tout le code est actif pour tout le monde au même instant. Une fois séparées, l’équipe technique peut déployer souvent et sans enjeu, pendant que le responsable métier choisit quand ouvrir chaque fonctionnalité, et à qui.

Un feature flag est un interrupteur dans l’application qui active ou désactive une fonctionnalité sans redéployer le code. C’est l’outil qui rend cette séparation possible.

Les quatre techniques à connaître

Les feature flags (interrupteurs de fonctionnalités)

L’article de référence de Pete Hodgson publié sur martinfowler.com distingue quatre familles d’interrupteurs, qui n’ont ni la même durée de vie ni le même usage :

Type d’interrupteur À quoi il sert Durée de vie typique
De livraison Livrer du code inachevé ou non encore ouvert, sans le rendre visible Courte : une à deux semaines selon l’article
D’expérimentation Comparer deux versions d’un écran ou d’un parcours (test A/B) Le temps d’obtenir un résultat fiable
D’exploitation Couper ou dégrader une fonction coûteuse en cas de surcharge ou d’incident Souvent courte, parfois permanente (« coupe-circuit »)
De permission Réserver une fonction à un groupe : pilotes, offre premium, un site Longue, parfois plusieurs années

Le même article met en garde : les interrupteurs sont un stock qui a un coût. Chaque interrupteur ajoute une condition dans le code et un cas à tester. Les équipes sérieuses ajoutent une tâche de suppression dès qu’elles créent un interrupteur de livraison, fixent une date d’expiration et limitent leur nombre total.

Le déploiement canari

Le nom vient des mineurs qui descendaient un canari dans la mine : l’oiseau signalait le gaz avant les hommes. Un déploiement canari envoie d’abord une petite partie du trafic ou des utilisateurs vers la nouvelle version, puis élargit à mesure que la confiance grandit. En cas de problème, on redirige tout le monde vers l’ancienne version.

Le guide SRE de Google consacré aux canaris apporte deux conseils très utiles. D’abord, choisir quelques indicateurs qui reflètent directement ce que vit l’utilisateur (taux d’erreur, temps de réponse), en se limitant à une douzaine au plus. Ensuite, comparer le groupe canari au reste des utilisateurs, et non regarder la moyenne globale : un taux d’erreur de 20 % sur 5 % du trafic n’apparaît que comme environ 1 % d’erreurs sur l’ensemble.

Le déploiement bleu-vert

Le principe du déploiement bleu-vert : deux environnements de production aussi identiques que possible. L’un (bleu) sert les utilisateurs pendant que la nouvelle version est installée et vérifiée sur l’autre (vert). Une fois le vert validé, on bascule tout le trafic. En cas de problème, on rebascule vers le bleu, qui fait toujours tourner l’ancienne version.

L’ouverture par groupe pilote

C’est la variante la plus naturelle pour une application métier interne : on active la nouvelle fonctionnalité pour un site, une agence ou un service volontaire, pendant une à deux semaines, avant de l’ouvrir à tous. Techniquement, c’est un interrupteur de permission ; humainement, c’est un excellent levier d’adoption, comme nous l’expliquons dans notre article sur la conduite du changement.

Baie de serveurs avec voyants verts allumés dans une salle technique
Une infrastructure qui permet de basculer d’une version à l’autre en quelques secondes. Photo : Domaintechnik / Unsplash

Quelle technique choisir pour votre application ?

Toutes ces techniques ne se valent pas selon le contexte. Voici une grille de décision simple :

Situation Combinaison recommandée
Application interne, quelques dizaines d’utilisateurs, un seul site Livraisons fréquentes + interrupteurs de livraison + retour arrière scripté
Application interne multi-sites ou multi-services Ouverture par groupe pilote (site ou service) + interrupteurs de permission
Portail client ou extranet à fort trafic Canari par pourcentage d’utilisateurs + supervision des erreurs et temps de réponse
SaaS B2B multi-clients Interrupteurs par client + ouverture aux clients volontaires + canari technique
Application critique pour la production ou la logistique Bleu-vert + fenêtre de déploiement hors pic d’activité + retour arrière répété

Dans tous les cas, ces techniques supposent des fondations : un déploiement automatisé (une même commande installe la version en production, sans manipulation manuelle), des tests automatisés qui s’exécutent avant chaque livraison, et une supervision qui alerte avant que les utilisateurs n’appellent le support.

Le point délicat : la base de données

Revenir à l’ancienne version du code est facile. Revenir à l’ancienne structure de la base de données, avec les données saisies entre-temps, l’est beaucoup moins. C’est le principal piège des retours arrière.

La réponse s’appelle le changement en parallèle, ou « expand and contract », décrit par Danilo Sato. Il se déroule en trois temps :

  1. Étendre : ajouter la nouvelle structure (une colonne, une table) sans supprimer l’ancienne. Les deux versions du code fonctionnent.
  2. Migrer : faire passer progressivement le code et les données vers la nouvelle structure.
  3. Contracter : une fois que plus rien n’utilise l’ancienne structure, la supprimer.

Exemple hypothétique : une entreprise de négoce veut scinder le champ « adresse » de ses clients en adresse de facturation et adresse de livraison. Plutôt que de transformer la colonne en une seule opération, l’équipe ajoute les deux nouveaux champs, les alimente en parallèle pendant deux sprints, bascule les écrans un par un, puis retire l’ancien champ. À chaque étape, un retour arrière reste possible sans perte de données. Le sujet rejoint celui de la migration de données : on ne transforme jamais une donnée sans chemin de retour.

La checklist d’une mise en production sereine

Avant chaque livraison significative, vérifiez ces points avec votre équipe ou votre prestataire :

  • La livraison est petite : on peut décrire ce qu’elle contient en quelques lignes.
  • Les tests automatisés sont passés et la recette métier des fonctions concernées est faite.
  • Les nouvelles fonctionnalités sont derrière un interrupteur, fermé par défaut.
  • Le groupe pilote est identifié et prévenu, avec un canal pour remonter les problèmes.
  • Les indicateurs à surveiller sont listés (erreurs, temps de réponse, volume de transactions métier).
  • Le retour arrière est documenté, automatisé et a déjà été répété.
  • Les changements de base de données sont compatibles avec la version précédente.
  • Le créneau évite les pics d’activité (clôture comptable, inventaire, rush commercial).
  • Une personne est disponible pour surveiller pendant l’heure qui suit.
  • Les interrupteurs des livraisons précédentes devenus inutiles sont planifiés pour suppression.

Ce dernier point est souvent oublié. Un interrupteur qui reste en place après l’ouverture générale devient de la dette technique : du code mort, des conditions que plus personne ne comprend, des combinaisons non testées.

Ce que cela change pour vos équipes métier

Pour le dirigeant ou le responsable métier, la mise en production progressive a trois effets visibles.

Les livraisons deviennent des non-événements. Plus besoin de prévenir tout le monde d’une coupure, ni de mobiliser une équipe un samedi. Les nouvelles fonctions apparaissent quand le métier décide de les ouvrir.

Le métier reprend la main sur le calendrier. Une fonction peut être prête techniquement et attendre le bon moment : après la formation des équipes, après la clôture de fin de mois, au lancement d’une offre commerciale.

Le droit à l’erreur devient réel. Si une fonction déroute les utilisateurs pilotes, on la referme, on corrige et on rouvre. Personne n’a perdu de journée.

Ces pratiques font partie du socle de toute application web sur mesure bien conçue, et elles se prévoient dès la conception de l’architecture. Elles se mesurent aussi : les indicateurs DORA suivent précisément la fréquence des déploiements, le taux d’échec des changements et le temps de rétablissement.

Par où commencer si vos mises en production sont aujourd’hui stressantes ?

Si chaque livraison mobilise l’équipe tard le soir, inutile de tout transformer d’un coup. Trois étapes, dans cet ordre :

  1. Automatiser le déploiement : une seule commande, identique à chaque fois, sans manipulation manuelle sur le serveur.
  2. Rendre le retour arrière trivial, puis le répéter une fois à froid pour vérifier qu’il fonctionne.
  3. Introduire le premier interrupteur sur la prochaine fonctionnalité importante, avec un groupe pilote.

Vous voulez savoir si votre application actuelle permet ce type de livraison, ou concevoir une nouvelle application qui l’intègre dès le départ ? Décrivez votre contexte dans notre diagnostic de projet en ligne : il prend deux minutes et nous revenons vers vous avec une première analyse.

Applications web

Des outils métier que vos équipes ont envie d’utiliser.

Des applications métier rapides, accessibles et pensées pour vos équipes.

Sources et références

  1. Site Reliability Engineering, chapitre Introduction · Google
  2. Canarying Releases (The Site Reliability Workbook) · Google
  3. Feature Toggles (aka Feature Flags) · martinfowler.com (Pete Hodgson)
  4. Canary Release · martinfowler.com (Danilo Sato)
  5. Blue Green Deployment · martinfowler.com
  6. Parallel Change (expand and contract) · martinfowler.com (Danilo Sato)
  • mise en production
  • déploiement progressif
  • feature flags
  • canary release
  • retour arrière
FAQ

Vos questions, nos réponses

Faut-il arrêter l’application pendant une mise en production ?

Non, dans la grande majorité des cas. Avec un déploiement par bascule entre deux environnements ou un remplacement progressif des serveurs, les utilisateurs continuent à travailler pendant la mise à jour. Les rares coupures planifiées concernent des migrations de données lourdes, et elles se préparent et s’annoncent à l’avance.

Qu’est-ce qu’un feature flag, concrètement ?

C’est un interrupteur dans l’application qui active ou désactive une fonctionnalité sans redéployer le code. Il peut être global (tout le monde ou personne) ou ciblé (un site, un service, une liste d’utilisateurs). Il permet de livrer du code non encore visible, d’ouvrir une fonction à un groupe pilote ou de couper rapidement une fonction qui pose problème.

Combien de temps doit durer un retour arrière ?

Il n’existe pas de durée réglementaire, mais l’objectif est de revenir à la version précédente en quelques minutes, par une action simple et déjà testée. Si revenir en arrière demande une réunion, une restauration de sauvegarde ou une intervention manuelle sur la base de données, le dispositif n’est pas prêt.

Le déploiement progressif est-il réservé aux grandes plateformes grand public ?

Non. Une application interne utilisée par trois sites peut très bien être ouverte d’abord à un site pilote, puis aux deux autres. Le principe est le même : limiter le nombre de personnes touchées par un éventuel défaut et observer avant d’élargir.

Qui décide d’ouvrir une fonctionnalité à tous les utilisateurs ?

Idéalement le responsable métier, sur la base de critères définis à l’avance : retours du groupe pilote, absence d’anomalie bloquante, indicateurs techniques stables. L’équipe technique garantit que l’ouverture et la fermeture sont sûres ; le métier décide du moment.

À lire ensuite

Tous les articles →

Un projet ? Parlons-en.

Démarrer un projet