10/03/2020
query_builder5 min de lecture
Cloud - DevOps

Le DevOps à succès

Un rapport récent de la compagnie Puppet [ 2019 State of DevOps Report ] analyse les retours d’expériences de transition vers le DevOps pour en tirer les facteurs à succès parmi les pratiques fondamentales et les étapes spécifiques de transformation.

Le rapport met en exergue que ces activités mesurables sont mises en place dans la plupart des transformations à succès et moins dans des entreprises qui n’ont pas ou peu adopté ces méthodes. L’automatisation, la culture et le partage renforceraient notablement l’attraction DevOps. Il est à souligner que ces pratiques sont présentes dans le modèle CAMS datant de 2010 comme des lignes directrices (CAMS pour « Culture, Automation, Measurement and Sharing »).

En fonction de la culture et des pratiques existantes déjà en place dans les entreprises, les chemins vers le concept du DevOps sont multiples. En sondant un panel d’entreprises à différents niveaux de maturité, l’étude montre que les meilleures évolutions s’accompagnent de cinq pratiques que l’on peut considérer comme des fondamentaux qui accélèrent l’adoption DevOps :

  • Une supervision assurée par l’équipe qui opère un produit applicatif ou plateforme (Sur le modèle du « you build it, you run it! »),

  • Des équipes qui contribuent à l’amélioration globale de la démarche via le partage de leurs choix d’outils et/ou de pratiques,

  • Des configurations produits qui sont gérées avec un outil d’automatisation,

  • La réutilisation des patterns de déploiement,

  • La réutilisation des patterns de tests.


Il est facile de constater que la discipline transverse à chaque pratique est le partage :

  1. Superviser soi même permet de communiquer sur l’état de l’application en production et de diffuser une vision qualité du système et du service. Cela active la culture du partage.

  2. Permettre aux équipes de participer à l’amélioration des pratiques amène d’autres façons de travailler ensemble, une communication différente et instaure progressivement une culture du partage autour de leurs contributions.

  3. Enfin, créer des patterns de tests ou de déploiement implique une collaboration plus large, un échange global adopté progressivement.


Quelles plus-values apportent ces pratiques ?

Lorsque l’équipe est capable d’opérer sa plateforme, de définir ses performances, ses indicateurs et ses alertes, elle est plus efficace grâce à la connaissance du produit et réduit les protocoles liés au support. Dans les transformations à succès, les équipes supervisent et définissent des indicateurs tels que les temps de réponse, la consommation en ressources, le prix global, le nombre de commandes réussies,  le nombre de fois qu’une fonctionnalité est utilisée sur un canal...

Réutiliser les routines de tests et déploiement c’est standardiser ce que l’on peut récupérer sur un projet (outils, code, processus). Le pivot entre Dev et Ops est difficile à appréhender et l’utilisation de patterns communs faciliterait l’adoption et la compréhension. Mais le gap de fonctionnement entre ces deux activités est important et c’est là l’un des challenges du DevOps.

A l’image des patterns de déploiements, la réutilisation de patterns de tests est plus difficile en fonction des technologies, du type de tests, de l’activité des équipes…

Une piste pour y parvenir est d’appliquer des processus dans sa propre équipe et de les réutiliser sur un scope plus large. Un cas concret serait de vouloir adopter une démarche TDD (Test Driven Development) pour les Dev et les Ops -car le TDD s’applique à l’IaC (Infrastructure As Code)-, cependant les langages qu’ils utilisent sont très différents (ex. Java en Dev et Ansible en Ops).

Dans certains cas des pratiques ne conviennent qu’à l’un des deux, comme appliquer Scrum pour les développements et Kanban côté opérations. Certaines pratiques comme les tests en production sont plus dures à adopter (par habitude et mesure du risque entre autres). Des patterns s’y prêtent (blue/green/canary) et viennent réduire la complexité de la chaîne d’environnements et donc réduire le coût de fabrication, les temps de livraison, l’effort de maintien et d’évolution… Faire les tests en production n’est pas toujours possible mais cela peut apporter une culture du « run it » et permet de se focaliser sur des sujets à valeur ajoutée (comme le métier). C’est donc fondamental et applicable lorsque les processus sont établis, bénéfiques et maîtrisés.

Utiliser un outil de gestion de configuration est une constante dans les organisations mâtures.

Cette pratique s’est étendue maintenant à l’IaC.

C’est un incontournable qui permet l’automatisation, l’application de processus standards plus sécurisés, la création des alertes, des statistiques... en résumé : la maîtrise et la visibilité.

Cette pratique doit intervenir très tôt dans un projet, dès le début. C’est la clé qui permettra d’accélérer les livraisons et qui favorise la réutilisation de patterns de test ou de déploiement.

Mettre le DevOps en application

Quelques points à prendre en compte lors d’une transformation :

  • Commencer avec une ligne directrice qui pose les bases des futurs développements en cherchant une valeur immédiate.

  • Déterminer la maturité de l’organisation : cela détermine par quoi il faut commencer.

  • Quelles sont les priorités ? (Qu’est-ce qui est nécessaire ?).

  • Des fondamentaux tout de suite : patterns de déploiement, GCL, autonomie sur le monitoring et l’alerting.

  • Les priorités pour ces trois pratiques devraient naturellement se faire sentir. Les résultats sont souvent visibles après leur mise en place (premier palier), avant de pouvoir l’étendre à un périmètre plus large.

  • Après l’adoption : mettre en place les patterns de test et favoriser la contribution et la collaboration pour améliorer les pratiques dans les équipes.

  • Identifier comment fonctionnent les équipes et transformer de façon à obtenir une valeur immédiatement (souvent là où il y en a le plus besoin).

  • Établir et partager une base d’indicateurs. Le faire tôt c’est voir le point de départ et apprécier les évolutions (adopter l’amélioration continue et le feedback continu).

  • Partager les pratiques et processus.  L’automatisation aidera à améliorer l’agilité et à montrer la plus-value sur le produit. Valoriser les personnes favorisera la confiance et l’engagement.

  • Partager et déployer les réussites ! Une équipe a évolué et connaît les pratiques qui fonctionnent. Ici la culture va prendre toute son importance ou va se révéler, d’abord dans l’équipe puis à plus grande échelle.


Pour conclure, le meilleur chemin est celui qui part des pratiques existantes et qui montrera des résultats assez rapidement tout en apportant de la confiance aux managers et aux équipes qui doivent adopter des nouvelles solutions ou une nouvelle organisation. L’automatisation et la standardisation vous permettront de concentrer votre temps sur d’autres sujets qui contribuent au succès de la transformation et, bien entendu, à la qualité des produits mis en œuvre.
Vous avez aimé ?
Partagez avec votre réseau
favorite5
favorite5