Si les entreprises se sont largement emparées de l’approche DevOps, un long cheminement est nécessaire pour en tirer tous les bénéfices.
Explications de Mohamed Haamdi, consultant DevOps chez 42c
La crise sanitaire sert d’accélérateur aux tendances fortes initiées avec la transformation numérique. La méthode DevOps n’échappe pas à la règle. En rapprochant les équipes études et développement de leurs collègues du pôle exploitation, cette approche vise à donner de la visibilité sur l’avancement d’un projet et de raccourcir le délai de mise en production. Un « time to market » particulièrement recherché dans le contexte actuel.
DevOps offre aussi des gains de productivité en automatisant l’ensemble des processus du cycle de vie applicatif de l’écriture du code à la supervision du produit fini en passant par les phases de tests et de déploiement. En industrialisant ces phases de développement, d’intégration et de monitoring, les « dev » et les « ops » travaillent de concert sur des cycles plus courts et répétables.
Une plateforme d’intégration et de livraison continue (CI/CD) permet aussi de s’assurer que le code publié est conforme et de remonter d’éventuelles erreurs en amont du déploiement afin que les équipes de développement entreprennent les actions correctrices nécessaires.
« DevOps regroupe un ensemble de bonnes pratiques qui garantiront les performances d’une application, dans ses dimensions à la fois logicielle et infrastructurelle, précise Mohamed Haamdi, consultant DevOps chez 42c. Un expert DevOps donnera ses préconisations en termes d’architecture et de langages de programmation. »
De la containerisation à l’infrastructure as code
Selon Mohamed Haamdi, l’industrialisation du cycle de développement passe par différentes étapes de maturité. Elle débute par la phase de containerisation où il s’agit d’«encapsuler» une application afin de pourvoir l’exécuter sur n’importe quel serveur virtualisé sans se soucier des adhérences avec l’infrastructure sous-jacente.
L’étape suivante est celle de l’orchestration avec Kubernetes. Cette solution open source va industrialiser le déploiement, la mise à l’échelle et l’orchestration d’architectures de micro-services et d’applications containerisées.
Avec OpenShift, Red Hat (IBM) distribue une version packagée de Kubernetes. Les providers de cloud public proposent, eux, des offres managées de « Kubernetes as a Service » qui ont pour nom GKE (Google Cloud), AKS (Microsoft Azure), EKS (Amazon Web Services), Managed Kubernetes Service (OVHCloud) ou Kubernetes Kapsule (Scaleway).
Dans une phase avancée de maturité, on arrive ensuite à la notion d’ « Infrastructure as Code ». Grâce à la solution open source Terraform, cette infrastructure « programmable » peut être gérée et approvisionnée automatiquement par le biais de scripts sans recourir à des processus manuels.
Une chaîne d’outils pour coder, livrer, déployer, superviser
En termes d’outillage, l’expert DevOps doit organiser le pipeline, c’est-à-dire la chaîne d’outils qui serviront à coder, livrer, déployer ou superviser. « Le choix est fonction de l’environnement retenu, poursuit Mohamed Haamdi. Si le projet tourne sur les langages Java et J2EE, il est possible de retenir Jenkins, outil open source d’intégration continue. »
A l’expert DevOps de définir ensuite la stratégie de déploiement. Un nouveau déploiement peut intervenir tous les soirs ou seulement à chaque mise à jour. De même, il s’agira de préciser la politique de supervision qui se concentrera sur la sécurité de l’application ou le niveau de performances. Là encore, il existe un grand nombre d’outils dédiés. Par exemple, SonarQube mesure la qualité du code source en continu.
Fort de son succès, DevOps connaît des déclinaisons. On parle ainsi de DevSecOps quand le volet sécurité est pris en compte dès le début d’un projet. Le FinOps – mot-valise formé par la contraction des termes finance et opérations -, vise, lui, à contrôler et optimiser les coûts en matière de cloud computing.
Dans le domaine de la mise à l’échelle automatique, il s’agit, par exemple, d’arbitrer entre l’autoscaling vertical qui consiste à augmenter ou diminuer les capacités d’un serveur ou l’autoscaling horizontal qui joue sur le nombre ou la taille des instances dédiées.
Plus généralement, « l’expert DevOps doit avoir un background à la fois de développeur et d’administrateur » précise Mohamed Haamdi. Et de poursuivre, « Il faut capitaliser sur les deux compétences. A titre personnel, j’ai commencé comme ingénieur support et administrateur puis j’ai fait du développement Java/J2EE. ».
Un parcours gagnant.