Vous venez d'arriver dans une entreprise, et votre manager vous demande de mettre en place une démarche DevOps et les outils associés. Mais qu'est-ce que le DevOps ?
Les principaux avantages du DevOps sont :
l'accélération des déploiements applicatifs ;
la réduction du Time-to-Market.
Mais qu'est vraiment le DevOps, et pourquoi veut-on absolument réduire ce fameux Time-to-Market ?
Dans ce chapitre, vous allez découvrir l'historique du DevOps, pourquoi celui-ci est souvent associé à l'agilité dans les entreprises, et pourquoi il est perçu par ces dernières comme le Saint-Graal du déploiement. Vous verrez aussi, à travers deux exemples, les gains apportés aux entreprises qui implémentent le DevOps dans leur quotidien.
D'où vient le DevOps ?
Il faut savoir qu'à cette époque, l'informatique d'entreprise a "siloté" les aspects dev et ops des applications, en plaçant les responsabilités respectives dans des équipes séparées. Il s'est alors créé ce qu'on appelle le mur de la confusion. Ce mur est apparu car les deux équipes ont des objectifs respectifs antagonistes.
La première, l'équipe de développement, a pour objectif principal de faire évoluer l'application, en ajoutant de nouvelles fonctionnalités ou en corrigeant des bugs, le plus rapidement possible et cela, dans un délai et un coût moindres, souvent au détriment de la qualité quand les contraintes de planning arrivent.
La seconde équipe, l'équipe des ops, a comme objectif de maintenir l'application en conditions opérationnelles, en garantissant la stabilité de l'application et la qualité de cette dernière, en sacrifiant souvent le coût et le temps nécessaires au déploiement d'une nouvelle version.
De plus, dans les entreprises, ces objectifs ont souvent un impact sur les primes de fin d'année des différentes équipes. Les équipes de développement sont alors récompensées par le nombre de bugs qu'elles corrigent, ainsi que le nombre de nouvelles fonctionnalités livrées à chaque version. De leur côté, les équipes ops sont récompensées par le nombre de bugs critiques en production, ainsi que la disponibilité globale sur l'année de l'application.
Ces pratiques permettent alors de développer, tester et livrer des applications plus rapidement et avec plus de fiabilité.
La liste des avantages apportés par le DevOps est donc longue :
gain de confiance des équipes entre elles ;
accélération des livraisons et des déploiements ;
résolution des tickets plus rapide ;
gestion plus efficace des tâches non planifiées…
La transformation d'Etsy vers le DevOps
Etsy est une entreprise de vente en ligne spécialisée dans les créations personnelles et les produits vintage, et elle a implémenté le DevOps il y a quelques années.
Créée en 2005, elle se comportait comme une entreprise traditionnelle, ayant séparé les développeurs d'un côté et les opérations de l'autre. Le résultat :
les collaborateurs restaient tard le soir ;
les déploiements étaient vraiment compliqués ;
plus rien ne fonctionnait après la grande croissance de l'entreprise.
Pour donner quelques chiffres, les déploiements prenaient généralement 4 heures et se faisaient deux fois par semaine. En 2008, Etsy commença à se remettre en question et à se comparer à des entreprises comme Flickr, qui déployait déjà jusqu'à dix fois par jour !
Commença alors en 2009 une bascule vers un état d'esprit DevOps, en essayant de casser ces fameux silos qui empêchent toute collaboration efficace, et d'amener l'implémentation de pipelines d'intégration continue, et beaucoup d'automatisation. Ces méthodes furent implémentées par des petits changements, au fur et à mesure, mais de manière continue.
Le résultat en chiffres est assez impressionnant ! Etsy déploie maintenant plus de 50 fois par jour, et de manière plus sûre, chaque développement étant testé avant d'être déployé en production.
L'impact du DevOps sur un grand groupe français
Un autre exemple vient de mon expérience personnelle dans le cadre d'une grosse entreprise française. Pour garder l'anonymat de cette entreprise, appelons-la Contoso. À l'époque, j'intervenais dans cette entreprise comme Coach DevOps, pour aider les collaborateurs de cette entreprise à passer en DevOps ; c'est-à-dire que je les aidais à :
accélérer leurs déploiements grâce à des pipelines d'intégration continue ;
améliorer la qualité de leur code ;
mettre en place de la métrologie (monitoring de système) ;
créer des environnements à la demande.
Sur une de leurs applications dites legacy (donc avec plus de 10 ans d'historique), j'ai réussi, avec l'équipe, à passer d'un déploiement tous les 4 mois, à un déploiement tous les 15 jours. De plus, grâce à des outils d'Infrastructure-as-Code (que nous verrons dans la partie 3), les demandes d'environnements étaient plus fluides.
Au lieu d'attendre plusieurs semaines qu'un environnement soit disponible pour lancer les tests, les collaborateurs pouvaient créer un environnement en quelques minutes, déployer leur application, lancer les tests et avoir le résultat dans la foulée.
Une des conséquences de l'implémentation de l'Infrastructure-as-Code est aussi la possibilité de multiplier les environnements, tout en réduisant les coûts associés. En effet, avec un environnement dédié et facturé pendant un mois, il sera difficile de disposer d'environnements stables (par exemple avec des jeux de tests disponibles) pour plusieurs personnes. À l'inverse, avec l'Infrastructure-as-Code, il est possible de créer autant d'environnements nécessaires que de tests à jouer, mais uniquement pour la durée du test. Il en résulte alors une économie d'argent, malgré la multiplicité de ces derniers.
En résumé
Et voilà, vous avez maintenant compris l'intérêt et l'origine du DevOps. Le DevOps puise son sens dans le mur de la confusion, l'incompréhension et la non-communication entre les équipes dev et ops. Leurs objectifs et leurs pratiques diffèrent, ce qui rend la collaboration compliquée !
Dans le prochain chapitre, nous allons voir de quoi cette méthodologie est réellement constituée, et en quoi elle répond au problème de ce mur de la confusion.