Un besoin
Le DevOps est issu du besoin de faire travailler les équipes de Développement et les équipes de Production (Opérationnels) ensemble vers un objectif commun. Ce qui n’est pas évident puisque les équipes de Développement ont pour objectif de mettre à disposition des fonctionnalités, le plus vite possible sous la pression des plannings des projets (quitte à sacrifier certains éléments de qualité), et les équipes de Production (Opérationnels) doivent garantir la stabilité du système de manière transverse et contrôlent un certain nombre d’indicateurs de qualité des livraisons sur les systèmes dont ils sont responsables.
Une méthode de travail
La mise en place de DevOps est avant tout la mise en place d’une méthode de travail permettant la compréhension mutuelle des problématiques inhérentes aux équipes et le rassemblement autour d’objectifs communs.
Pour la compréhension mutuelle, on peut citer : l’intégration dans les équipes de Développement d’un ambassadeur Opérationnel et vice-versa, la mise en place d’équipes d’astreintes mixtes (Dev + Ops), définition puis intégration des pré-requis de production en amont lors du développement, déploiement régulier des applications pour fiabiliser le processus par la répétition (Livraison Continue, et préparation fiable des livrables en amont via l’Intégration Continue), …
Pour le rassemblement autour d’objectifs communs, un des premiers éléments est la définition et la mise à disposition d’indicateurs de qualité et de métriques communs et accessibles par tous. Il y a évidemment les indicateurs centrés sur le code et le système (techniques donc, qui permettent également d’améliorer la compréhension du métier des différentes équipes), mais surtout sur le service rendu (taux d’indisponibilité du service, temps de réponse des fonctionnalités, …) et le business (taux de transformation, nombre et valeurs des transactions, tendance des avis clients, …). Ces derniers indicateurs/métriques permettent de réunir les équipes autour d’un objectif commun qui est celui de la progression de l’entreprise vers la cible qu’elle s’est fixée.
Mais aussi des outils
Et toute cette stratégie repose sur la mise à disposition d’outils communs afin de partager entre les équipes la même sémantique et les mêmes processus : un gestionnaire de sources (Gitlab, …) et de binaires/artefacts (Nexus, …), un outil de gestion des tâches (Jira, …), une documentation contributive comme un wiki (Confluence, …), un ordonnanceur (Jenkins, …), un outil de métrologie remontant des indicateurs de l’application (business + service rendu + code + système) en production (Zabbix, Centreon, ELK, NewRelic, Datadog, Dynatrace, …), plate-forme de communication collaborative (Slack, IRC ? , …), …
L’extension du DevOps
Cependant, d’un point de vu marketing, le DevOps a été étendu aux notions d’Industrialisation et d’Agile. Les clients exprimant un besoin d’Industrialisation ou d’Agile, le libelleront souvent sous la mention DevOps, alors même que le besoin peut être interne à une équipe de Développement OU bien d’Opérationnels/Production.
L’industrialisation est la mise en place de processus et d’outils qui vont améliorer la fiabilité et la vélocité des actions régulières et évidemment l’automatisation des tâches techniques qui en découlent. Cette industrialisation va permettre aux équipes de passer moins de temps sur des problématiques isolées ou sur des tâches répétitives et consommatrices de temps, et de s’orienter vers des tâches amenant de la valeur, de l’amélioration continue de l’existant, … et avec cela une progression technique/métier des équipes et une valorisation de leur travail.
Au niveau de l’industrialisation même, l’outillage diffère entre les équipes de Développement et celles de Production :
- Du côté du Développement, on entend par Industrialisation les processus et les outils de l’Intégration Continue, dont certains sont nécessaires au travail en commun des équipes Dev/Ops, comme le gestionnaire de sources (Gitlab, …) et l’ordonnanceur (Jenkins, …). Il y a beaucoup de composants disponibles pour enrichir le workflow de l’IC en ajoutant des Tests Unitaires, du contrôle de la qualité de code, … directement intégrables dans l’ordonnanceur via des plugins (ou exécutables comme un composant externe). Il y en a beaucoup trop pour se lancer dans une liste, sachant, de plus, qu’ils dépendent généralement du langage de développement utilisé.
- Du côté de la Production, on trouve l’outillage de gestion de parc informatique incluant le provisionnement de VMs/services via des catalogues de services (ManageIQ, Red Hat Cloudforms, vRealize Automation, …), la gestion de la conformité (OpenSCAP, Red Hat Insights, …), la gestion des identités (FreeIPA, Red Hat IPA, …), la gestion de l’obsolescence logicielle via la gestion de patch (Red Hat Satellite, Spacewalk, WSUS, …), le monitoring (supervision et métrologie), …
Pour l’automatisation des tâches techniques incluses dans les processus précédents d’industrialisation, on utilise souvent des outils de gestion centralisée des configurations des systèmes, des logiciels, voire des applications comme Ansible, Chef ou Puppet ou bien un framework de conteneurisation, comme Docker ou Buildah/Podman/Skopeo, remplaçant de Docker dans Red Hat Enterprise Linux (RHEL) 8.
L’Agile est avant tout un cadre méthodologique (Scrum, Kanban, Xtreme Programming, …) de gestion de projets/produits/tâches qui peut s’appliquer autant au développement qu’à la production (avec la méthode Kanban par exemple). Il nécessite également un outillage qui permet sa mise en œuvre : plugin Agile de Jira, des post-it, un buzzer ?, …
Conclusion
Le terme DevOps regroupe une vaste étendue de savoir-faire. Ces savoir-faire étaient plutôt ciblés à l’origine autour des méthodes et outils permettant aux équipes de Développement et de Production (Opérationnels) de travailler ensemble vers un objectif commun. Mais assez rapidement le terme DevOps, gage d’une meilleure productivité (quantité et qualité), a été étendu, dans les discours marketing, à d’autres notions qui œuvrent dans la même direction, celle de l’amélioration de la vélocité et de la fiabilité des projets et des tâches via l’Agile et l’Industrialisation. Il est donc important pour les clients, et les sociétés de services qui les accompagnent, de travailler sur le besoin exprimé pour définir clairement les personnes ayant les compétences nécessaires pour y répondre, car le DevOps est devenu un terme recouvrant un champ de notions très large.
Frédéric FAURE