Dans beaucoup d’entreprises numériques et plus précisément dans le contexte d’une application ou d’un projet informatique, on distingue différents types d’acteurs. D’une part les équipes de développement (Dev) en charge de coder et de transformer les demandes du métier en nouvelles fonctionnalités. D’autres part, les équipes d’opérations (Ops) en charge du maintien, du pilotage et du monitoring de l’infrastructure IT (serveurs, réseau, base de données, etc.). Et enfin les équipes de sécurité (Sec) qui s’attèlent à maintenir la sécurité de la plateforme (gestion de Firewall, règles de sécurité réseau, scan de vulnérabilité, sécurité applicative, etc.).
Une fois qu’une nouvelle fonctionnalité ou nouvelle application a été validée et testée, c’est aux Ops de l’intégrer en production. On parle aussi d’équipe d’intégration. À la suite de cela les équipes d’exploitation ont la tâche d’assurer le bon fonctionnement des applications pour les utilisateurs finaux.
19 octobre 2020
Lecture 4 mn
Les tâches de développement applicatif et de gestion d’infrastructure étant fondamentalement différentes, on peut comprendre la différenciation distincte des rôles. Cette approche plutôt classique a cependant quelques inconvénients comme par exemple de long cycle de livraisons pour de nouvelles fonctionnalités, de grosses livraisons plus sensibles à la casse car plus complexes et potentiellement des bugs plus longs à corriger, etc. On se heurte bien souvent à un “mur de l’incompréhension” où on a d’une part les équipes de développement qui souhaitent délivrer des nouveautés beaucoup plus rapidement et d’autre part les équipes d’infrastructure qui militent pour une plateforme stable et résiliente. Il n’est pas toujours évident de trouver le juste milieu. Cependant, l’approche DevOps semble apporter un premier élément de réponse.
Le terme DevOps apparue autour de 2007 en Belgique et a été inventé par Patrick Debois, CTO de Zender à l’époque. Il désigne par ce terme « ... une approche fédérée des développements informatiques (build) et des opérations (run) ». Wikipédia définit entre autres le DevOps comme « un mouvement qui se caractérise principalement par la promotion de l'automation et du suivi (monitoring) de toutes les étapes de la création d'un logiciel, depuis le développement, l'intégration, les tests, la livraison jusqu'au déploiement, l'exploitation et la maintenance des infrastructures. »
Il existe plusieurs définitions, plusieurs variantes du DevOps. On la voit par la multitude de conférences, de littératures, de blogs sur le sujet. C’est même le cœur de métier de certaines ESN qui se positionnent en tant qu’experts sur le sujet. Nous avons d’ailleurs eu la chance de travailler avec l’une d’entre elles, Padok une entreprise d’expert Cloud et DevOps de la région parisienne. Tout ce nouvel écosystème ainsi que notre expérience du cloud jusqu’à présent nous confortent dans la direction que nous avons choisie de prendre.
Chez Ekwateur, nous avons choisi d’adopter une approche différente, l’approche DevSecOps ! Chez nous pas de séparation entre équipe de développement et équipe d’exploitation. Notre maxime : « You build it, you run it ! » Les équipes de développement sont responsables de leurs applications : elles prennent en charge tout le cycle de vie des applications de la conception, au développement, test, livraisons, déploiement et à l’exploitation en production. Ce sont ceux qui connaissent le mieux le fonctionnement de l’application et donc à même d’en tirer le meilleur parti possible lorsqu’un bug client ou incident est remonté en production.
Le DevSecOps pour nous est cette idéologie qui motive nos choix en matière de pratiques que nous mettons en œuvre et des outils que nous mettons en place ; dans le but de faciliter, d’automatiser, d’améliorer, d'accélérer le rythme de livraisons d’applications ainsi que la maintenance de notre infrastructure. Tout cela en s’efforçant de maintenir la sécurité à la fois de nos applications, de nos serveurs mais aussi de nos données et de celles de nos clients. Le DevSecOps nous permet d’industrialiser notre usine logicielle et de construire une plateforme stable, sécurisée et scalable.
Quand on arrive à mettre en place tout cela, on arrive à retrouver et libérer une ressource rare : le temps ! En automatisant les actions chronophages, répétitives et à faible valeur ajoutée on dégage du temps. Un temps qui pourra être investi dans la mise en place de nouvelles technologies, de nouvelles fonctionnalités, de nouvelles améliorations. Il est important de souligner que le DevSecOps ne se résume pas non plus à une liste d’outils et de logiciels. La méthodologie a un rôle déterminant dans le succès d’une telle entreprise. Nous avons fait le choix d’avancer de manière incrémentale, avec des objectifs mesurables et atteignables. En adoptant une approche DevSecOps combinée à une méthodologie agile, on est capable d’avancer grâce à de petits incréments, ces petits incréments qui nous permettent d’assurer un meilleur TTM (time to market), une meilleure qualité et sécurité à la fois pour nos applications et pour notre plateforme.
Ce gain de temps est la résultante de la mise en place d’une chaîne d’intégration et de déploiement continue, c’est à dire l’automatisation des différentes étapes de la construction d’une application. Cette chaîne d’intégration et de déploiement continue ou CICD, comprend les étapes de tests unitaires, de tests fonctionnels, de tests d’interfaces, de tests de performances, d’évaluation de la qualité de code, de scan de failles de sécurités, etc. Ces actions ou jobs sont répétés systématiquement à chaque commits ou à chaque modification du code applicatif. La CICD est un sujet large que nous ne manquerons pas d’aborder dans une prochaine lecture.
La finalité de tout cela, les avantages de la mise en œuvre d’une approche DevSecOps sont légions ! Tout d’abord on détruit ce fameux mur de l’incompréhension et de la confrontation. Les équipes de développement et celles de DevSecOps travaillent conjointement pour mettre en place une usine logicielle qui garantit la qualité du produit final. Il n’y a plus d’appréhension par rapport à la stabilité des livraisons et les exigences de qualités pour les applications sont atteintes. Les mises en productions abondent, une nouvelle qui ne peut que ravir le métier. Les procédures de mises en production sont simplifiées avec une réduction du nombre d’actions manuelles. Nous sommes passés de sept à seulement deux actions (tag de branche et deploy) pour une mise en prod. Cela nous permet de livrer beaucoup plus régulièrement, nous comptabilisons par exemple pour le mois de Juin 2020, un total de quarante-six mises en production avec une moyenne d’environ trois livraisons par jour. Nos clients profitent plus rapidement des nouvelles fonctionnalités mises à leur disposition et Ekwateur se démarque de ses concurrents dans le marché de l’énergie par son ADN digitale.
Le DevOps se caractérise aussi par l’amélioration continue et le développement applicatif. C’est un aspect parmi tant d’autres où cette approche peut être mise en place. On peut appliquer le DevOps à l’aspect financier de la gestion d’infrastructure, on parle FINOPS quand le but est de réduire les coûts d’une plateforme tout en maintenant la qualité de service. L’approche DevOps peut aussi prendre une tournure écologique quand l’objectif est de faire une utilisation efficace de son infrastructure tout en minimisant son empreinte carbone. Bien qu’il n’y ait pas encore de dénomination définie pour cela, le GreenOps ou DevGreenOps est un sujet qui nous tient aussi tout particulièrement à cœur. Que de sujets à explorer dans une prochaine chronique ! 😉