Contactez-nous

DevOps

DevOps, définition, démarche et outils

Qu’est-ce que le DevOps et comment adopter cette démarche au sein de vos équipes ?

Illustration - Nos expertises-2-min

Définition : Qu'est-ce que DevOps ?

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.

Definition Image

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.

Comment adopter le 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.

  • icon_PARTAGE

    Partage

    Les Ops et les Devs doivent travailler main dans la main. Leur objectif n’est pas de servir l'efficacité d’un silos ou d’une BU. Ils servent le système de l’entreprise dans son ensemble. La prise de conscience de cette nécessité repose sur le partage entre les équipes.  

  • icon_MESURE

    Mesure

    Il n’est possible d’améliorer que ce que l’on connaît et mesure. Les métriques de production, de développement et de QA doivent être maintenues et partagées. Une plateforme d’observabilité est donc nécessaire. 

  • icon_FLEX

    Lean

    DevOps est né dans la tête d’ops férus d’agilité. L’adoption de méthodes agiles au sein de l’organisation est requise. Elles encouragent le travail par petits incréments et l’amélioration continue. Elles sont aussi particulièrement adaptées pour briser les silos. Enfin, elles permettent une bien meilleure communication entre les personnes.

  • icon_AUTOMATE

    Automatisation

    Accélérer la production logicielle passe par l’automatisation. Il faut éliminer les tâches répétitives et manuelles sources d’erreurs, …  faire du continuous delivery doit être la nouvelle norme. L’automatisation permet aussi de découvrir les erreurs au plus tôt. Elle doit améliorer l’expérience de travail pour tous.

  • icon_CULTURE

    Culture

    La culture changera par la répétition permanente de ces piliers. Notez que C.A.L.M.S se lit de gauche à droite mais se réalise dans le sens inverse. 

Les 3 voies du DevOps

1. Le flow ou flux de livraison

  1. Rendre les travaux visibles

    adopter un management visuel permet de rendre tangible un travail majoritairement “numérique”.

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

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

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

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

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

Le but est de créer un cadre de travail résilient et sécurisé.

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

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

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

  4. É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.

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

Le savoir, la responsabilité sont partagés au niveau de l’entreprise, et ne reposent plus uniquement sur quelques individus ou équipes.

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

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

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

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

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

  • Contactez un expert

FAQ - DevOps