Développement logiciel

DevOps : présentation, fonctionnement et outils

23/9/2024
Sommaire
Partager cet article

Qu’est-ce que DevOps ?

Pour expliquer ce qu’est DevOps, prenons deux définitions, celle du Gartner :

DevOps est un changement de culture informatique, axé sur la fourniture rapide de services informatiques par l’adoption de pratiques agiles et allégées dans le cadre d’une approche orientée système. DevOps met l’accent sur les personnes (et la culture), et cherche à améliorer la collaboration entre les équipes d’exploitation (Ops pour IT Operations) et de développement (Developers - Equipes de développement de logiciels).

Une autre définition sur Wikipédia :

Le devops — ou DevOps (selon la graphie habituellement utilisée en langue anglaise) — est un mouvement en ingénierie informatique et une pratique technique visant à l’unification du développement logiciel (dev) et de l’administration des infrastructures informatiques (ops), notamment l’administration système. Ce mouvement Devops se caractérise principalement par la promotion de l’automatisation et du suivi (monitoring) de toutes les étapes de la création d’un logiciel.

L’objectif de DevOps est donc de rapprocher les équipes de développement et les opérations IT (aussi appelées la Production Informatique) pour livrer plus rapidement les évolutions de services demandées par les utilisateurs et clients et ceci sans dégrader la qualité de service ou la sécurité.

Traditionnellement, les équipes de développeurs ou le bureau d’étude créent les logiciels puis les transmettent aux équipes hébergeant les logiciels chargées de les rendre disponibles, c’est le rôle des équipes de la production informatique. Cette organisation traditionnelle sécurise la fourniture des services digitaux (applications, logiciels …) mais ralentit le processus de production de nouveaux services aux utilisateurs/clients. Le but de DevOps est d’accélérer et faciliter le déploiement des évolutions et nouveaux services Digitaux.

Pourquoi DevOps est important ?

L’organisation traditionnelle de l’informatique avec les “Dev” d’un côté et les “Ops” de l’autre ralenti la mise à disposition des nouveaux services digitaux ou logiciels aux clients/utilisateurs. Les professionnels du Digital évoquent généralement un mur entre les équipes de développement et les opérations.

A une époque accélérée où les innovations sont constantes, il est essentiel que les entreprises puissent déployer rapidement des nouveaux services et de manière fiable et sécurisée pour tester le marché, co-construire leurs services avec leurs clients et réagir face à la concurrence rapidement lorsque nécessaire. DevOps permet tout cela.

DevOps réduit donc le délai de mise à disposition de ces nouveaux services digitaux aux utilisateurs bénéficiaires. Ce délai est variable en fonction des entreprises, il peut aller d’un jour, à plusieurs semaines ou mois, tout dépend de la taille et de la culture de l’organisation.

DevOps accélère la livraison des nouveautés en permettant potentiellement aux développeurs de déployer en temps réel les évolutions qu’ils créent en les mettant directement à disposition des Utilisateurs/clients.

Ces fréquences de livraisons peuvent être très impressionnantes :

Chez Netflix, il y a plus de 1 000 mises en production par jour et les livraisons s’effectuent “On Demand” dès que souhaitées par les développeurs.

Traduisez mise en production par déploiement de nouveaux services à disposition des utilisateurs/clients.

Comment DevOps fonctionne ?

Devops Tooo Chain

Bien sûr pour être en capacité de développer et déployer des logiciels fiables rapidement aux utilisateurs et clients cela se fait en suivant des étapes clés garantissant le bon fonctionnement des systèmes.

Les grandes étapes DevOps sont les suivantes :

  1. Plan : Priorisation des demandes et explicitation de la fonctionnalité à réaliser
  2. Code : Développement de la fonctionnalité attendue, création des lignes de code, base de données …
  3. Build : Compilation du code développé dans le logiciel ciblé à livrer (validation de l’intégration continue et du versioning)
  4. Test : On s’assure que tout fonctionne tel que voulu et que la nouvelle fonctionnalité n’introduit pas de régression
  5. Release : Le logiciel est packagé dans un environnement prêt pour le déploiement
  6. Deploy : Le logiciel est déployé pour être utilisé par les utilisateurs / clients
  7. Operate : Le logiciel est géré en environnement opération pour délivrer la fonctionnalité tel que prévu
  8. Monitor : On mesure le résultat fourni par la fonctionnalité aux utilisateurs clients et on ajuste, retour à l’activité Plan

DevOps peut être intégré avec un Framework Agile ou une démarche projet mais excelle particulièrement avec les méthodes permettant de livrer des évolutions avec une fréquence élevée aux utilisateurs / clients (Comme Kanban).

DevOps est-il différent d’Agile ou de l’Agilité ?

AgileDevops

Ces 4 valeurs décrites ci-dessus sont celles du Manifeste Agile (Agile Manifesto), à la source de l’Agilité

En réponse: NON, DevOps n’est pas différent de l’Agilité, DevOps, c’est l’Agilité !

DevOps est une démarche Agile totalement compatible avec des grands Framework Agiles répandus.

Que vous fassiez par exemple du Scrum, Kanban, Lean Startup, SAFe ou DAD (Disciplined Agile Delivery), l’intégration DevOps se fait naturellement.

DevOps facilite les démarches Agiles, les boucles d’inspection et d’adaptation et donc facilite les approches empiriques.

Si vous souhaitez livrer très rapidement des évolutions ou corrections vous pouvez conjuguer l’approche DevOps avec une application stricte de Kanban. Cela vous permettra d’offrir une meilleure réactivité à vos clients / partenaires / utilisateurs en optimisant vos flux de travaux.

A contrario, pour cadencer le rythme des développements afin de structurer les besoins clients et stabiliser le périmètre fonctionnel de création du projet, vous pouvez vous orienter vers une démarche Scrum avec DevOps. La fréquence de déploiement sera moins élevée, de 1 semaine à 1 mois. Cela peut être une bonne chose pour cadrer la démarche projet et la structuration des besoins alignés avec la construction progressive du produit.

DevOps peut-il être appliqué avec une approche Waterfall ?

L’approche Waterfall est une approche prédictive où l’on cherche à définir tout le travail en amont d’un projet. Il est possible de faire du DevOps avec une approche Waterfall mais cela a peu de sens. En approche Waterfall on effectue généralement la livraison du logiciel développé en fin de projet ou quelques livraisons en cours de projet. Cela revient généralement à une fréquence de livraison de plus de 2 mois. A cette fréquence de livraison, il n’est pas nécessaire de déployer une démarche DevOps, il n’y a donc pas de réels gains de DevOps pour une démarche projet organisée en Waterfall.

Est-ce que DevOps est (ou sera) automatisé ?

Robot

DevOps est une démarche fortement (pour ne pas dire intégralement) liée à l’automatisation.

Plus vous automatisez, plus vous êtes en capacité de déployer rapidement vos évolutions/demandes des utilisateurs et ceci de manière sécurisée et fiable.

Appliquer une démarche DevOps sans aucune automatisation n’a, de notre point de vue, pas de sens.

Vous n’êtes pas en obligation de tout automatiser vous pouvez automatiser par étapes, progressivement.

Dans la chaîne de déploiement DevOps décrite ci-dessus, tout est en grande partie automatisable, SAUF :

  • La partie “Plan” : la priorisation et planification des travaux à réaliser, gérée manuellement dans un Product Backlog où le responsable de la valeur est un Product Owner (Si le Framework employé est Scrum)
  • La partie “Code” : le développement est géré par les développeurs ayant aussi, dans le cadre de DevOps, une casquette de testeurs, et la maîtrise des opérations IT pour sécuriser le déploiement des évolutions réalisées.

Les parties pouvant être fortement automatisées dans une démarche DevOps sont les suivantes : Test - Release - Deploy - Operate - Monitor.

Si ces étapes sont automatisées, elles nécessitent l’intervention de professionnels, comme des ingénieurs DevOps, qui sont en capacité d’automatiser et garder sous-contrôle les automatisations DevOps déployées.

DevOps propose de nombreux outils, généralement Open Source et gratuits, permettant ces automatisations.

Quels sont les outils DevOps les plus utilisés en 2022 ?

De nombreux outils DevOps existent sur le marché, des centaines.

De nombreuses sociétés ont créé des “DevOps PERIODIC TABLE” ou “tableau périodique des logiciels DevOps” en un clin d’oeil au célèbre tableau périodique des éléments chimiques.

Vous trouverez ci-dessous une de ces tables en exemple, la version 3 proposée par la société Xebia Labs :

DevOps_PeriodicTable_XebiaLabs_v3

Ce tableau a pour intérêt de classer les outils DevOps par catégories et types de licences.

En mai 2022, nous avons recherché les outils DevOps qui nous semblent les plus populaires auprès des entreprises.

Voici nos premières conclusions, pour les principales catégories d’outils, nous avons listé les outils DevOps suivants :

  • “Code” pour la partie Outil de contrôle des sources - Intégration Continue (CI) : Git qui est un logiciel permettant de suivre les modifications de n’importe quel ensemble de fichiers. Il est généralement utilisé pour permettre le travail collaboratif des programmeurs sur le code source d’un algorithme.
  • “Code” pour la partie Intégration Continue (CI) - Déploiement Continu (CD) : Jenkins qui est un serveur d’automatisation open source. Il permet d’automatiser les parties du développement logiciel liées aux « build », aux tests et aux déploiements, facilitant ainsi l’intégration et la livraison continues.
  • “Test - Automatisation des tests” : Selenium : Selenium est un projet open source comprenant outils et bibliothèques pour automatiser les tests fonctionnels sans avoir besoin d’apprendre un langage de script de tests (Selenium IDE).
  • “Release / Deploy” : Ansible qui est un outil open-source d’approvisionnement en logiciels, de gestion de la configuration et de déploiement d’applications et d’infrastructures permettant l’utilisation de l’infrastructure en tant que code (infrastructure as code).
  • “Release / Deploy” : Docker qui est un outil permettant de réunir (=“package”) une application et ses dépendances sous forme d’une image de conteneur portable. Ce conteneur pourra être exécuté sur n’importe quel environnement de manière cohérente, en allant de Kubernetes en interne (“on-premise”) à AWS ECS, Azure ACI, Google GKE et plus encore. En résumé Docker permet de faire de la virtualisation d’applications afin de simplifier le déploiement et la compatibilité entre environnements.

A noter que les principales plateformes de Cloud offrent des solutions DevOps prêtes à l’emploi basées généralement sur tout ou partie de ces outils Open Source, comme Microsoft Azure DevOps et Amazon Web Service AWS CodeStar, CodeDeploy et CodePipeline.

En quoi DevOps est utile aux développeurs ?

Devops permet aux développeurs d’être plus autonomes en déployant leurs codes directement auprès des utilisateurs finaux.

Pour les développeurs DevOps leurs permet :

  • D’améliorer la qualité des produits créés (logiciels, API …) à l’aide des différents outils d’automatisation (Intégration Continue, tests automatisés, Déploiement Continu). Ces outils permettent d’améliorer la qualité des produits créés par les développeurs tout en leur dégageant du temps à l’aide des processus DevOps automatisés d’ingénierie logicielle.
  • De livrer plus rapidement les clients/utilisateurs.
  • Faciliter et fluidifier le travail avec les Ops (opérations) en parlant un langage, des processus, des outils plus intégrés et transverses.
  • De rendre les développeurs plus autonomes en leur permettant de potentiellement livrer leurs travaux directement en production.
  • Elargir ses compétences de Dev en développant des connaissances des Opérations (configuration, déploiement, de sécurité, serveurs, monitoring, capacité, disponibilité … ) …
  • Être plus responsable notamment avec des approches du type “you deliver it, you run it” : “vous le livrez, vous le gérez”, mettant les Dev au même niveau de responsabilité que les Ops en cas d’interruption de services.

Que fait un ingénieur système DevOps ? Quelle est la différence entre un ingénieur système DevOps et un Développeur logiciel DevOps ?

Un ingénieur développeur utilisant DevOps, n’est pas un ingénieur système DevOps.

L’ingénieur développeur DevOps développe des logiciels en utilisant des méthodes et outils DevOps. Ceci pour créer et rendre disponible des logiciels de qualité plus rapidement aux utilisateurs. Il utilisera donc, par exemple, Git pour le gestionnaire de code, des méthodes d’intégrations continues entre développeurs intervenant sur le même produit à l’aide de Jenkins, automatisera ses tests avec Selenium, maîtrisera Docker pour déployer facilement son code et le rendre disponible aux utilisateurs dès que souhaité. Ceci par exemple en mode Agile en appliquant une méthode Scrum ou Kanban, par exemple.

L’ingénieur système DevOps lui est centré sur la création d’un environnement DevOps pour les développeurs et équipes des opérations de l’organisation.

Les compétences et activités de l’ingénieur DevOps sont principalement :

  • d’Automatiser le déploiement d’une infrastructure dans le cloud privé, public ou hybride (Automatiser la création de serveurs à l’aide de scripts, Automatiser le déploiement d’une infrastructure - Infrastructure As a Code, Sécuriser l’infrastructure, Mettre une infrastructure en production dans le cloud)
  • de permettre le déploiement en continu d’applications (Préparation des environnements de test, Gérer le stockage des données, Gérer des containers, permettre l’automatisation de la mise en production d’une application à l’aide de plateformes)
  • d’assurer la supervision des services déployés (Définir et mettre en place des statistiques de services, Exploiter une/des solution(s) de supervision)

Du fait de l’explosion de DevOps ces dernières années, il y a de plus en plus de demandes d’ingénieurs développeurs de logiciels DevOps et d’ingénieurs systèmes DevOps sur le marché.

Quelles sont les fréquences des déploiements DevOps ?

La fréquence des déploiements varie en fonction de la maturité d’une organisation à bien maîtriser DevOps.

Dans une étude évaluant la performance des livraisons de logiciels en 2021:

  1. Les entreprises les plus performantes déploient “à la demande”, c’est à dire en temps réel, et donc plusieurs fois par jour, tel que choisi par le développeur (Whenever we want). Des sociétés comme NetFlix produisent plus de 1 000 mises en production par jour. On parle alors de Déploiement en continu (CD). La solution est automatiquement déployée sur tous les environnements concernés et en production sans intervention humaine.
  2. Les entreprises moyennement performantes déploient avec une fréquence entre une journée et une semaine.
  3. Les moins performantes ont une fréquence de déploiement d’un mois ou plus.

Source: 2021 State of DevOps Report presented by Puppet

Les ingénieurs DevOps sont-ils demandés ?

En mai 2022, nous remarquons que de plus en plus d’offres d’emplois font référence à DevOps.

Le terme DevOps apparait dans plus de 13 770 offres d’emplois actuellement publiées dans les agrégateurs d’offres d’emplois principaux.

Est-ce que DevOps remplace l’ITSM ?

Non, DevOps est complémentaire à l’ITSM, les deux approches ITSM/ITIL4 et DevOps se marient parfaitement. ITIL 4, le référentiel d’ITSM le plus répandu intègre des principes de déploiements propres à DevOps mais propose un cadre plus large couvrant l’intégralité des pratiques ITSM.

Je vous conseille la lecture de cet article “DevOps va-t-il remplacer ITIL ?” expliquant les articulations entre DevOps et ITSM / ITIL 4.

Est-ce que DevOps va disparaître ?

DevOps est apparu en 2007, en Belgique avec Patrick Debois. L’origine du nom DevOps est apparu à la conférence “Agile” de Toronto en 2008 où Patrick Debois et Andrew Shafer y introduisent le terme “Agile Infrastructure”.

Depuis les concepts DevOps n’ont cessés de se déployer dans les différents frameworks Agiles comme SAFe, Disciplined Agile ou encore LeSS pour ne citer qu’eux.

Des démarches comme le Lean Startup permettant d’explorer en continu et rapidement de nouvelles opportunités nécessitent elles aussi DevOps.

L’analyse en continu des usages des clients/utilisateurs à l’aide de la Data, couplée avec des développements rapides de produits et des tests d’appropriations ciblés militent aussi pour une progression de DevOps les années à venir.

En bref, les besoins des entreprises de minimiser les risques, d’optimiser les coûts et d’innover de manière permanente, rapide avec une approche Agile font que le mouvement DevOps a encore de beaux jours devant lui !

Benjamin Laffont
TechLead .Net, Architecte logiciel

Prêt à franchir une nouvelle étape dans votre carrière