DevOps
Rapprocher, coopérer et accélérer
DevOps est une pratique de collaboration entre Dev et Ops. Elle vise à supprimer les contraintes entre ces équipes, pour accélérer la livraison de valeur aux utilisateurs. En deux mots , il s’agit de mettre la collaboration entre les équipes au service de l’amélioration continue du système de production logicielle. L’adoption d’une culture DevOps permet aux entreprises de rester compétitives et réactives.
4 raisons de passer au DevOps
L’acronyme C.A.L.M.S. (Culture, Automation, Lean, Measure, Share) résume parfaitement les ingrédients du DevOps. C’est concrètement la route à suivre pour faire naître une culture DevOps au sein d’une organisation.
-
Partage
-
Mesure
-
Lean
-
Automatisation
-
Culture
Pourquoi faire du DevOps ?
Adopter cette culture c’est améliorer la capacité de l’entreprise à produire des systèmes de qualité vite et bien.
1. Réduire le temps de cycle de développement
DevOps met en avant l'automatisation pour gagner en vitesse. L’objectif est de supprimer les tâches manuelles longues et répétitives. L’utilisation de l’intégration continue (CI) et du déploiement continue (CD), permet de découvrir les erreurs au plus tôt. Les équipes évitent ainsi de dépenser de l’énergie et du temps sur des voies sans issues. DevOps crée un cycle unique pour l’ensemble d’un produit en brisant les silos entre les équipes. Les équipes évoluent dans une même ligne temporelle, un projet ne passe plus d’un cycle développement à un cycle de test puis à un cycle de production. Cela se traduit par la suppression des goulets d’étranglement et une plus grande vélocité. Vous gagnez ainsi du temps et de l’argent.
2. Améliorer la cohésion des équipes
Lorsque les équipes évoluent dans des silos séparés par des murs étanches, elles restent focalisées sur un objectif personnel. Cette absence d’alignement est à l’origine du fameux “mur de la confusion” : les développeurs veulent livrer plus de code plus souvent, tandis que les opérations cherchent la stabilité des systèmes pour fiabiliser la production. DevOps repose sur la collaboration entre les équipes et l’alignement autour d’un objectif commun : fournir des solutions à forte valeur ajoutée pour les utilisateurs. La collaboration permanente centrée sur cet objectif final libère la parole, supprime les prés carrés, permet la mise en place d’une responsabilité partagée et favorise finalement une forte cohésion entre les équipes. Les personnes sont fières et impliquées.
3. Réduire le taux d’indisponibilité et le temps de correction
Toutes les informations sont partagées entre les équipes. La supervision de la production n’est plus de la seule responsabilité des opérateurs. Lorsque le bateau brûle, plutôt que d’appeler les pompiers et d’attendre qu’ils arrivent, vous prévenez les pompiers et prenez un extincteur !
Les indisponibilités, les bugs sont découverts plus vite dans les organisations DevOps. Les équipes utilisent leur énergie à régler les problèmes plutôt qu’à flageller les responsables. Lorsque l’objectif final est en péril, la notion d’urgence fédère l’ensemble. Mais les choses se jouent aussi avant l’arrivée en production car les erreurs sont découvertes plus tôt. L’ancrage de la culture DevOps s’accompagne d’une baisse du nombre de bugs.
4. Favoriser l’innovation
Dans la culture DevOps, les équipes s’inscrivent dans une quête d’amélioration continue. Elles confrontent souvent leurs points de vue. De cette confrontation naît régulièrement de nouvelles idées, concertées, pour adresser les problèmes rencontrés. Elles évitent l’écueil des solutions construites en mode tunnel qui ne prennent en compte les besoins que d’une partie des équipes. Le lean est plébiscité dans les transformations DevOps pour permettre à ces innovations d’être rapidement testées et adoptées. La réduction des temps de cycle de développement libère du temps qui est investi en R&D et favorise l’innovation.
Les 3 piliers du DevOps
1. Le flow ou flux de livraison
-
Rendre les travaux visibles
adopter un management visuel permet de rendre tangible un travail majoritairement “numérique”.
-
Limiter l’en-cours
Réduire le nombre de tâches ‘in-progress’ permet d’augmenter les cadences de résolution et d’éviter un trop grand context-switching
-
Réduire le volume des itérations
Cela permet de limiter l’en-cours (voir ci dessus), et d’atteindre plus facilement des incréments qui permettent de livrer rapidement de la valeur.
-
Eviter les aller-retours entre équipes
Chaque fois qu’une tâche nécessite l’intervention d’une équipe tierce, il existe un temps perdu dans la transmission. Automatisez, ou donnez le pouvoir aux équipes d’aller plus loin.
-
Identifier et atténuer les contraintes de manière constante
Adoptez des cérémonies qui permettent de mettre en lumière continuellement les difficultés de vos équipes, et agissez.
-
Supprimer les pertes dans la chaîne de valeur
identifiez les points dur, et fluidifiez l’ensemble de la chaîne de production de valeur à l’aide d’une Value Stream Map par exemple.
2. Le feedback pour valoriser l’expérience
-
Travailler en sécurité dans un environnement complexe
La panne est inévitable, son traitement doit donc être prévu dès la conception, pour avancer en confiance.
-
Détecter les problèmes dès qu’ils surviennent
Mettre en place des boucles de feedback courtes et automatisées permet de traiter les problèmes au plus tôt.
-
Collaborer, trouver des solutions et construire une base de connaissances
En cas de problème, tous les acteurs doivent-être mobilisés. L’entreprise capitalise systématiquement sur la résolution de problèmes pour étendre une base de connaissances commune et lutter contre l’effet super-héros.
-
Évaluer la qualité au plus près de la production de code
Responsabiliser les acteurs à la qualité, plutôt que d’avoir un contrôle qualité a posteriori, éloigné dans la chaîne de production de valeur, augmente mécaniquement la qualité des logiciels produits.
-
Optimiser son flux pour le prochain acteur de la chaîne
Les optimisations concernent les clients finaux, et les équipes internes. Les besoins doivent provenir des équipes aussi bien que des clients.
3. Continuous learning
-
Apprendre à l’échelle de l’organisation, et offrir le droit à l’erreur
Un système d’information complexe est enclin à la panne. Plutôt que de chercher un coupable, chercher comment améliorer les process et la collaboration pour qu’un problème ne se représente plus.
-
Ancrer l’amélioration continue sur des bases quotidiennes
Réserver du temps explicite pour réduire la dette, les points de douleur, et refactorer.
-
Partager les améliorations locales au niveau global
Mettre en place des cérémonies et outils de partage qui permettent à tous d’apprendre d’autres individus ou équipes. Donner corps à l’intelligence collective.
-
Mettre la résilience au cœur du travail quotidien
Résilience et haute disponibilité doivent être la préoccupation de chacun, et non pas une étape finale et “égoïste” dans la mise en place logicielle.
-
Faire émerger des leaders inspirants
Les leaders ne sont pas des super-héros, ils doivent renforcer la volonté d’amélioration collective et favoriser une culture de l’apprentissage.
Les outils de l’ingénieur DevOps
-
Terraform
-
Grafana
-
Argo Workflows et Argo CD
-
Kanban
- Contactez un expert