Aller au contenu
Culture DevOps high
🚧 Section en cours de réécriture — Le contenu est en cours de restructuration et peut évoluer.

Value Stream et Flow

15 min de lecture

Imaginez une équipe de développement qui travaille sur une nouvelle fonctionnalité. Le développeur termine son code en 2 jours. Mais entre ce moment et la mise en production, il se passe 6 semaines. Où est passé le temps ? Le code attend une revue (3 jours), puis un environnement de test (1 semaine), puis une validation métier (2 semaines), puis un créneau de déploiement (2 semaines). Le travail réel représente moins de 10% du temps total. C’est exactement le problème que le Value Stream et le Flow permettent de résoudre.

Comment ce concpet article s’inscrit dans le DevOps

Section intitulée « Comment ce concpet article s’inscrit dans le DevOps »

Le concept de Flow est le premier des Three Ways de Gene Kim, qui structurent la philosophie DevOps :

  1. First Way — Flow : accélérer le flux de valeur de l’idée à la production ← c’est cet article
  2. Second Way — Feedback : raccourcir les boucles de retour d’information
  3. Third Way — Learning : créer une culture d’apprentissage continu

Le Value Stream Mapping (VSM) est un outil issu du Lean Manufacturing (Toyota Production System) que le DevOps a adapté au développement logiciel. Comprendre le flow est essentiel car toutes les autres pratiques DevOps (CI/CD, automatisation, monitoring) visent à l’améliorer.

Le Value Stream (flux de valeur en français) représente l’ensemble des étapes nécessaires pour transformer une idée en valeur livrée au client. C’est comme une chaîne de production dans une usine, mais appliquée au développement logiciel.

Analogie simple : Pensez à la préparation d’un repas au restaurant. Le flux de valeur commence quand le client passe commande et se termine quand le plat est servi. Entre les deux : prise de commande, préparation en cuisine, cuisson, dressage, service. Chaque étape prend du temps, et le client ne perçoit de la valeur qu’au moment où il reçoit son plat.

En développement logiciel, le flux de valeur inclut généralement :

ÉtapeCe qui se passeValeur pour le client
IdéationUne idée ou un besoin est identifiéAucune (l’idée n’existe que dans les esprits)
SpécificationLe besoin est formaliséAucune (du papier)
DéveloppementLe code est écritAucune (le code n’est pas déployé)
TestsLe code est validéAucune (toujours pas en production)
DéploiementLe code arrive en productionEnfin de la valeur !
ExploitationLe code est utiliséValeur continue

Sans une vision claire de votre flux, vous ne pouvez pas savoir où vous perdez du temps. La cartographie du flux de valeur révèle :

  • Le temps de travail réel : combien de temps quelqu’un travaille activement sur la tâche
  • Le temps d’attente : combien de temps la tâche attend (revue, validation, environnement…)
  • Les transferts : combien de fois la tâche change de mains

Dans la plupart des organisations, le temps d’attente représente 80 à 90% du temps total. C’est là que se trouve le gisement d’amélioration.

Le Flow (flux en français) mesure la vitesse à laquelle la valeur traverse votre système. Un bon flow signifie que les idées se transforment rapidement en fonctionnalités utilisables.

Analogie : Imaginez une autoroute. Le flow représente le nombre de voitures qui arrivent à destination par heure. Même si chaque voiture roule vite, si l’autoroute est embouteillée, le flow global est faible.

Pour mesurer le flow, on utilise principalement deux métriques :

Le Cycle Time (temps de cycle) mesure la durée entre le début du travail sur une tâche et sa livraison en production. Plus il est court, plus vous livrez vite.

Cycle TimeInterprétation
< 1 jourExcellent : livraison quasi continue
1-7 joursBon : livraison fréquente
1-4 semainesMoyen : cycles de sprint classiques
> 1 moisProblématique : délais significatifs

Le Throughput (débit) mesure le nombre de tâches livrées par unité de temps (par jour, par semaine). Il indique la capacité de production de votre équipe.

Un goulot d’étranglement (bottleneck en anglais) est une étape du flux qui limite le débit global du système. C’est le point le plus lent, celui qui fait attendre tout le reste.

Analogie : Dans un sablier, le goulot est l’étroit passage entre les deux parties. Peu importe la quantité de sable au-dessus, il ne peut s’écouler que grain par grain à travers le goulot. Agrandir le haut du sablier ne sert à rien : seul l’élargissement du goulot accélère l’écoulement.

Les goulots courants dans le développement logiciel :

SymptômeGoulot probableImpact
Files d’attente longues pour les revues de codePas assez de reviewers disponiblesLes développeurs attendent, changent de contexte
Environnements de test indisponiblesInfrastructure partagée sous-dimensionnéeLes tests sont retardés ou bâclés
Approbations manuelles qui traînentProcessus de validation bureaucratiqueDes semaines perdues en attente de signatures
Déploiements risqués et raresPeur de casser la productionGros lots, gros risques, gros délais
Une personne indispensableConnaissances concentrées sur un expertTout s’arrête quand cette personne est absente

Eliyahu Goldratt, dans son livre The Goal, a formalisé une idée contre-intuitive mais fondamentale :

Optimiser une étape qui n’est pas le goulot n’améliore pas le débit global du système.

Cela signifie que si votre goulot est la revue de code, améliorer la vitesse de vos déploiements ne changera rien. Les tâches continueront de s’empiler devant la revue de code.

La taille des lots désigne la quantité de travail regroupée avant d’être livrée. Dans le développement logiciel, c’est le nombre de fonctionnalités ou de modifications incluses dans une release.

Analogie : Imaginez que vous fassiez les courses une fois par mois avec un énorme caddie. Si vous oubliez quelque chose ou achetez un produit périmé, vous ne le découvrez qu’au moment de l’utiliser, parfois des semaines plus tard. À l’inverse, si vous faites de petites courses tous les 2-3 jours, vous détectez rapidement les problèmes et pouvez corriger le tir.

AspectGros lots (release trimestrielle)Petits lots (release quotidienne)
RisqueÉlevé : beaucoup de changements = beaucoup de bugs potentielsFaible : peu de changements = problèmes faciles à isoler
FeedbackLent : 3 mois avant de savoir si ça plaît aux utilisateursRapide : retour utilisateur en quelques heures
CorrectionCoûteuse : le développeur a oublié le contextePeu coûteuse : le contexte est frais
CoordinationComplexe : nombreux conflits, merges difficilesSimple : modifications isolées
StressIntense : la release est un événement critiqueMinimal : la release est une non-événement

Intuitivement, on pourrait penser que faire moins de releases réduit le risque (« moins on touche, moins on casse »). C’est l’inverse qui est vrai :

  • Gros lots = gros risques : des centaines de changements, des dizaines de développeurs impliqués, des semaines de travail en jeu. Si ça casse, c’est la panique.
  • Petits lots = petits risques : quelques lignes modifiées, un développeur concerné, quelques heures de travail. Si ça casse, on revient en arrière et on corrige tranquillement.

Le Work In Progress (travail en cours) désigne le nombre de tâches commencées mais pas encore terminées. C’est une métrique souvent négligée mais cruciale pour le flow.

Analogie : Imaginez un jongleur. Avec 3 balles, il peut maintenir un rythme régulier. Avec 10 balles, il en fait tomber constamment et passe son temps à les ramasser au lieu de jongler. Le WIP, c’est le nombre de balles en l’air.

WIP élevé cause…Parce que…
Changements de contexteVous passez d’une tâche à l’autre sans cesse, perdant du temps à chaque switch
Rallongement du Cycle TimeChaque tâche attend son tour plus longtemps
Baisse de qualitéL’attention est dispersée, les erreurs se multiplient
Stress et surchargeLa liste des choses « en cours » est écrasante
Masquage des problèmesLes goulots sont invisibles car tout est « en cours »

Limiter le WIP signifie fixer un nombre maximum de tâches pouvant être en cours simultanément à chaque étape du flux.

Exemple concret : Une équipe limite le nombre de tâches « En revue de code » à 3. Si 3 tâches sont déjà en revue, les développeurs qui terminent leur code ne peuvent pas en ajouter une 4ᵉ. Ils doivent d’abord aider à vider la file de revue.

Cet effet est bénéfique :

  • Force à finir avant de commencer : plus d’accumulation de travail inachevé
  • Révèle les goulots : si une colonne est toujours pleine, c’est le goulot
  • Encourage la collaboration : on aide les autres pour débloquer le flux

Scénario concret : une équipe qui améliore son flow

Section intitulée « Scénario concret : une équipe qui améliore son flow »

Situation initiale : L’équipe Produit A déploie une fois par mois. Le Cycle Time moyen est de 6 semaines. Les développeurs sont frustrés car leurs fonctionnalités mettent « une éternité » à arriver en production.

Étape 1 — Cartographier le flux : L’équipe dessine son flux de valeur et mesure les temps à chaque étape :

  • Développement : 3 jours (travail)
  • Attente revue : 5 jours (attente)
  • Revue : 1 jour (travail)
  • Attente test : 7 jours (attente)
  • Test : 2 jours (travail)
  • Attente déploiement : 18 jours (attente)
  • Déploiement : 1 jour (travail)

Constat : 8 jours de travail, 30 jours d’attente. Le goulot est l’attente du créneau de déploiement mensuel.

Étape 2 — Attaquer le goulot : L’équipe automatise ses déploiements et passe à des releases hebdomadaires. L’attente déploiement passe de 18 à 4 jours en moyenne.

Étape 3 — Nouveau goulot révélé : Maintenant, c’est l’attente test qui devient le goulot (7 jours). L’équipe investit dans l’automatisation des tests et la parallélisation des environnements.

Résultat après 6 mois :

  • Déploiements quotidiens
  • Cycle Time moyen : 5 jours
  • L’équipe livre 10x plus de fonctionnalités par trimestre
  1. Le Value Stream est le chemin complet de l’idée à la production. Seule la production génère de la valeur pour le client.

  2. Le temps d’attente domine : dans la plupart des organisations, 80-90% du Cycle Time est de l’attente, pas du travail.

  3. Un seul goulot limite tout : identifiez-le et concentrez vos efforts dessus. Améliorer ailleurs ne sert à rien.

  4. Petits lots = moins de risques : contrairement à l’intuition, les releases fréquentes de petites modifications sont plus sûres que les grosses releases rares.

  5. Limiter le WIP révèle les problèmes : moins de tâches en cours = meilleur focus, plus de visibilité sur les goulots.

  6. Mesurez pour progresser : Cycle Time et Throughput sont vos indicateurs clés. Ce que vous ne mesurez pas, vous ne pouvez pas l’améliorer.

  • Value stream cartographié avec temps de travail ET temps d’attente
  • Goulot principal identifié (étape avec la plus longue file d’attente)
  • Limite de WIP définie pour chaque étape du flux
  • Taille de lot cible définie (viser des releases quotidiennes ou hebdomadaires)
  • Métriques de flow en place (Cycle Time, Throughput)
  • Plan d’action pour réduire le goulot principal

Consultez le parcours Fondamentaux DevOps pour suivre la formation complète en 8 modules.