Mercredi 9 juin 2021
Devops, définition et pratique
By Bassam
*********************************************************************
Définition
Le modèle DevOps est une approche de la culture informatique, de l'automatisation et de la conception de plateformes conçue pour accroître la valeur ajoutée et optimiser la réactivité des entreprises grâce à une distribution plus rapide et efficace des services.
Source : https://www.redhat.com/fr/topics/devops
Je trouve que la définition ci-dessus explique du mieux le terme Devops et met l’accent sur la “culture” et non seulement sur les pratiques et techniques utilisées dans ce qu’on appelle dans le marché de recrutement “le poste Devops”.
En effet le Devops est une culture à apprendre à tous les salariés de l’entreprise. C’est une nouvelle philosophie qui vise à améliorer la production, en termes de qualité et rapidité dans le but de satisfaire le besoin du client.
Avant de continuer, il faut parler des circonstances qui ont amené à la naissance de cette culture.
Histoire, le mur de la confusion
Dans les entreprises classiques, on trouve, en gros, 2 équipes dans le département IT : l’équipe de développement “dev team” et l’équipe des opérations “Ops team”.
Le dev team a pour mission de développer le produit demandé (souhaité) par le client. Pour cela, les devs, souciant des performances et la qualité du produit et les critères spécifiés par le client, en plus le désir urgent pour essayer la dernière technologie sur le marché, le dev team va proposer une solution qui demande l’installation de nouveaux logiciels (bdd, messagerie, conteneurs, …), nouveaux serveurs, nouveau OS, … etc.
Le Ops team a pour mission de garantir un certain niveau de performance, de stabilité et de stabilité (non ce n’est pas une faute de frappe) de la solution fournie au client. DE ce fait l’Ops team est très réticents aux changements. L’Ops team va parfois aller jusqu’à s’opposer à toute modification d’infrastructure, installation de nouveau produit ou utilisation de nouveaux systèmes pour éviter tout risque d’instabilité ou de régression des performances.
Ces 2 philosophies vont souvent rentrer en conflit et cela va engendrer une mauvaise atmosphère de travail au sein de l’entreprise. Ce conflit est connu sous le nom “le mur de la confusion”.
D’un côté il y a les Devs qui eux poussent pour faire évoluer la techno utilisée et adopter de nouvelles procédures, de l’autre les Ops qui eux poussent pour garder une certaine stabilité des systèmes et un certain niveau de performances.
Dans les 2 situations, le but est, et devrait toujours être, la satisfaction du client. En effet, sans l’approbation du client, un projet peut vite devenir pas rentable. Selon la situation financière de l’entreprise, cela peut vite se transformer en une ambiance de travail insupportable, entre le commercial qui veut pousser pour avoir la fonctionnalité demandée par le client, le dev qui souhaite implémenter la meilleure solution pour le client, l’Ops qui souhaite livrer une stabilité et un certain niveau de qualité en travaillant avec une techno fiable et connue au détriment de la rapidité ou la simplicité. Ce conflit entre les équipes peut s’étendre jusqu’à causer des délais extrêmes de livraison ou même avoir des retards conduisant à des pénalités qui peuvent causer de grandes pertes pour l’entreprise.
Devops, la philosophie
Le Devops est arrivé sur le marché pour décrire une nouvelle philosophie de travail pour mieux collaborer entre équipes pour faire passer une tâche de la phase de développement à la phase de livraison sans accrochages ou réticences.
La philosophie Devops consiste à appliquer plusieurs techniques, humaines et technologiques pour atteindre un but commun : satisfaire le besoin du client en lui offrant une solution satisfaisante fiable et stable, le plus rapidement possible. Cette philosophie se repose sur 5 piliers qui se résument par les lettres C.A.L.M.S. (explications à suivre ci-dessous). D’ailleurs, un mantra a été créé pour se rappeler facilement de ses piliers : Keep C.A.L.M.S. and do devops.
Devops, les piliers
- Culture : tous les collaborateurs au sein de la société doivent avoir le même but : développer et livrer un produit qui satisfait le client, ce qui en retour va faire avancer la société et les équipes. On peut renforcer cette culture et ce lien en adoptant les pratiques Agiles. Ces dernières mettent en focus la collaboration entre les différentes équipes d’une chaine de production pour livrer un produit qui satisfait le client tout en renforçant la culture de partage et collaboration.
- Automatisation : pour avancer plus vite, les processus doivent être automatiser pour permettre aux équipes de développer, tester et livrer sans difficultés et sans perte de temps sur des taches de routine qui déstabilisent l’effort de l’équipe. Utiliser des outils pour l’intégration continu, comme Jenkins, va dans ce sens. Des outils de gestion d’infrastructure comme Ansible qui aident à gérer les conteneurs et les serveurs sont très utiles aussi.
- LEAN : appliquer la méthodologie LEAN peut contribuer à améliorer l’organisation de l’équipe, canaliser l’effort, éviter les taches inutiles et le surplus de production. En adoptant l’agilité et des outils de suivi comme Jira aident à lister les tâches utiles, leur répartition par équipe et par individu et monitorer leur avancement.
- Mesure : Mesurer l’avancement du travail, monitorer les différents indicateurs du livrable, production, test, … etc. permet à l’équipe de garder le cap et rester concentrée pour continuer à livrer une meilleure qualité. L’équipe de dev peut intégrer des indicateurs de performance dans le livrable pour valider l’évolution du produit, tandis que l’équipe d’opération peut monitorer la performance des équipements de l’infrastructure utilisée.
- Solidarité : Une équipe soudée est une pièce très importante dans une société à succès. Tous les membres de l’équipe doivent partager le succès comme ils doivent partager l’échec. Il ne doit pas avoir du favoritisme. Les membres de l’équipe doivent tirer les uns les autres vers le meilleur, s’écouter, partager leurs expériences, être curieux et découvrir de nouvelles technos qui peuvent aider la société à s’avancer.
Devops, le marché d’emploi
Actuellement, parmi les postes IT proposés sur le marché, on trouve beaucoup de poste de Devops. Selon la présentation ci-dessus, le Devops est une philosophie à appliquer et à apprendre à tous les équipes d’une entreprise. C’est une méthodologie pour bien amener une idée de la phase de création, vers la phase de concrétisation et finalement celle de livraison. Mais de quoi s’agit-il quand on parle d’un poste de Devops ?
En effet, même les recruteurs ou les chasseurs de têtes n’arrivent pas encore à bien définir les caractéristiques d’un poste Devops. Malheureusement, la mode dans la techno fait que le terme Devops soit très utilisé par les recruteurs sans qu’ils sachent vraiment quoi chercher chez le candidat.
Un des piliers de la méthode Devops est l’automatisation (le A de C.A.L.M.S). Cela demande une connaissance, ou une expertise selon la taille de l’entreprise, dans l’implémentation et l’installation des solutions d’intégration continue (GitLab, TFS, Jenkins), de livraison continue, de virtualisation (VMWare), de configuration automatique (terraform) des environnements de test et de production sur le cloud (AWS, Azure), de conteneurisation (docker, kubernetes), de systèmes de supervision ou suivi (Elastic Search, Azure Application Insights).
La plupart des postes Devops s’orientent vers un profil de candidature ayant des compétences dans les domaines cités ci-dessus plutôt qu'un développeur avec des connaissances en configuration et un esprit Devops. Le problème avec un tel choix est que la philosophie n’est pas répandue dans l’entreprise ou elle est difficilement diffusée aux autres équipes et donc la chaine de travail n’évolue pas comme souhaité.
Il faut se rappeler que l’esprit équipe est très important dans la philosophie Devops et tous les membres de la société doivent être soudés et être tous d'accord sur la manière d’opérer.