DevOps: depuis l’agile, vers le cloud et microservices

Chaïmaâ Ait Bouaziz
Xelops Technology
Published in
8 min readSep 17, 2021
DevOps, depuis l’agile vers le cloud et microservices

De nos jours, la majorité des entreprises, qui se distinguent par un Time to Market minime et par des produits/services de qualité exceptionnelle, ont comme point commun une transition réussie vers la démarche DevOps. C’est le cas chez NEOXIA qui a, depuis quelques années, pu introduire et instaurer cette culture chez ses collaborateurs.

Le présent article est une première introduction à une série d’articles ayant pour objectif l’introduction et la description de chaque phase des pratiques DevOps ainsi l’implémentation d’une chaîne CI/CD complète version NEOXIA.

Commençons d’abord par introduire le contexte général de la démarche DevOps, sa naissance, ses périmètres et son apport quant au mouvement cloud, à l’architecture microservices et la mise en place des APIs.

** Abonnez-vous à notre blog Medium pour être notifié des prochains articles qui vont traiter l’aspect technique de chaque brique, les outils mis en place ainsi que leurs cas d’utilisation.

L’avant DevOps

Avant de parler DevOps et afin de pouvoir mieux le comprendre, nous commençons par présenter le contexte de son apparition. Nous avons choisi de procéder ainsi vu que le facteur le plus important dans l’adoption d’un nouveau produit ou concept est de lui trouver un sens et une justification.

Dans ce cadre, les méthodologies agiles telles que XP et SCRUM ont permis de réduire, à un certain niveau, le time to market d’un besoin métier pour le traduire rapidement à un produit logiciel et d’aligner les équipes métier et de développement sur une approche projet commune. De ce fait, le mouvement agile a pu intégrer les remarques du client au fur et à mesure du développement d’une solution. Cette implication en continue du métier a fortement minimisé le déphasage entre le besoin exprimé et la réalisation finale par les équipes de développement (Dev) et a permis de fluidifier la conception et le développement des nouveaux produits. Cependant, l’agilité a négligé en quelque sorte les processus et opérations utilisés pour le déploiement d’une solution dans l’infrastructure cible et son exploitation. En effet, les équipes qui gèrent ces opérations (Ops) sont restées dans un mode opérationnel classique ce qui a freiné cette dynamique de développement agile au stade de déploiement et de l’exploitation. Le concept de DevOps est né pour remédier à ce problème et pour permettre aux équipes de développement (Dev) et des opérations (Ops) de travailler en synergie et en partageant des pratiques et des référentiels communs permettant de développer et de déployer des solutions et des fonctionnalités rapidement en cohérence avec le besoin métier.

Donc pour faire simple, le DevOps présente en quelque sorte une continuité du mouvement agile en s’étalant aussi sur la partie déploiement et exploitation des produits logiciels pour satisfaire mieux et plus vite les enjeux métiers.

DevOps, qu’est-ce que c’est ?

Maintenant que nous savons pourquoi et dans quel contexte est apparu le mouvement DevOps, nous allons le définir. Réellement, il n’existe pas une définition unifiée du terme DevOps et vous pouvez trouver une dizaine de définitions qui visent à expliquer ce mouvement et qui convergent vers le même principe. Citons celle de Wikipédia qui nous semble claire et simple à comprendre.

«Le DevOps 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. Le mouvement DevOps 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. Les principes DevOps soutiennent des cycles de développement plus courts, une augmentation de la fréquence des déploiements et des livraisons continues, pour une meilleure atteinte des objectifs économiques de l’entreprise.»

Périmètres DevOps

SCM — Gestion du code source

Les outils de gestion de code source (comme Git, Svn et Mercurial) ne sont plus limités aux développeurs pour gérer le code source de leurs applications mais ils sont aussi utilisés par les équipes des opérations pour héberger et organiser leurs scripts de configuration ainsi que le code de provisionnement des infrastructures. Cet aspect a rassemblé les deux équipes de développement et des opérations autour d’un seul référentiel, en facilitant la collaboration entre elles.

CI/CD — Intégration et déploiement continus

L’intégration continue (CI), utilisée au niveau des développements, porte principalement sur l’automatisation des tâches suivantes : la compilation du code récupéré depuis un outil de SCM, le lancement des jeux de test, le packaging et l’archivage des artefacts générés puis le renvoi des informations de la qualité du code. Le déploiement continu (CD) présente une suite de l’intégration continue mais du côté des opérations, il consiste à automatiser les étapes de déploiement pour qu’une version livrée par la partie CI (les artefacts générés) soit déployée sur un ou plusieurs environnements rapidement.

Automatisation des tests

Les tests dans DevOps couvrent l’ensemble du cycle de vie d’une solution logicielle, depuis le développement jusqu’à la livraison. Dans ce cadre, les tests automatisés peuvent être intégrés facilement dans les pipelines de livraison et de déploiement continus.

Gestion d’environnement et de configurations

Le déploiement d’un produit logiciel passe souvent par plusieurs environnements (développement, recette, intégration, etc.) avant d’arriver à la production, de ce fait, une préparation (ou configuration) manuelle de chacun de ces environnements est pénalisante en termes de coût et de temps. C’est à ce niveau qu’intervient l’infrastructure programmable ou Infrastructure as Code (IaC), l’élément phare de la gestion des environnements. Ce mécanisme permet la programmation d’une infrastructure à part entière (instances, réseau, sécurité, DNS, etc.). En tirant profit de l’aspect d’automatisation, l’infrastructure programmable permet de pouvoir monter rapidement des environnements en fonction du besoin, un opérateur (Ops) peut déployer et gérer une infrastructure d’une dizaine d’instances avec le même coût s’il souhaite passer à des centaines d’instances en exécutant le même code. La vitesse, la scalabilité, l’économie de coûts ainsi que la réduction des risques présentent une valeur ajoutée de taille de ce concept.

Une fois une infrastructure créée, il faut par la suite la préparer/configurer pour héberger les applications et c’est bien le rôle des outils de gestion de configuration (tels que Ansible, Puppet, Chef). Ces outils permettent d’automatiser l’exécution des tâches sur un nombre important d’instances.

Cloud & DevOps

Il est difficile de nos jours d’aborder le concept de DevOps sans introduire le Cloud et le lien entre ces deux univers. Dans ce cadre, les fournisseurs cloud Leader du marché, à savoir Amazon Web Services (AWS), Google Cloud Plateforme (GCP) et Microsoft Azure, offrent une panoplie de services cloud liés à la chaîne DevOps comme : Infrastructure as Code, Conteneurisation, Déploiement continu, monitoring et autres. De plus, certains services sont managés par le fournisseur lui-même facilitant ainsi la vie de l’utilisateur et lui permettant un gain de temps considérable. Ces fournisseurs cloud intègrent aussi la gestion des données de développement et des opérations. L’utilisateur peut collecter et analyser l’ensemble des données d’exploitation, à savoir entre autres les données de monitoring, les logs des load balancers et les logs des serveurs web et des applications.

Par ailleurs, le Cloud fournit aussi un ensemble de ressources scalables qui servent de matière première pour les outils d’infrastructure en tant que code. Cette combinaison permet de garantir la haute disponibilité et la scalabilité tout en optimisant la consommation des ressources.

D’autre part, le DevOps permet de créer dans le Cloud des environnements de tests à la demande et de gérer les applications hébergées sur ces derniers. Ainsi, une architecture Cloud bien structurée avec le bon choix des outils DevOps permet de gagner un temps précieux, sans dégrader le niveau des services ni mettre en danger la sécurité et la stabilité des systèmes.

Microservices & DevOps

En plus du Cloud, un autre concept d’actualité est aussi très lié au DevOps, il s’agit des architectures Microservices. Contrairement aux architectures classiques qui reposent sur la conception et le développement d’une application en un seul bloc ou en couches, l’architecture microservices consiste à découper l’application en plusieurs modules appelés microservices couvrant chacun un domaine précis. L’architecture microservices présente un aspect très évolutif, de telle sorte que la modification ou même l’ajout d’une fonctionnalité n’a pas d’impact sur la totalité de l’application.

Afin de pouvoir déployer ces microservices d’une manière indépendante et rapide, il faut préparer des pipelines de déploiement optimisés, ainsi le DevOps répond idéalement à ce besoin en automatisant tout le cycle de livraison/déploiement.

D’autre part, l’adoption des technologies de conteneurisation tel que Docker dans une approche DevOps permet de fournir un environnement idéal pour le déploiement des microservices en assurant un découplage fort et une bonne gestion du cycle de vie de ces derniers. En effet, un conteneur est beaucoup plus léger qu’une machine virtuelle puisqu’il n’intègre pas d’OS (operating system), ce qui facilite la gestion d’incidents. Ainsi, avec la conteneurisation, nous ne parlons plus de la réparation d’un conteneur en cas de panne, mais plutôt de sa destruction et la création d’un nouveau dans un bon état.

Par ailleurs, les outils d’orchestration des conteneurs (Kubernetes à titre d’exemple) permettent d’assurer une grande disponibilité et la scalabilité des microservices via la création des réplicas en fonction de la charge.

NEOXIA & Devops

NEOXIA a identifié l’intérêt du DevOps depuis plusieurs années, ce concept fait partie intégrante de notre offre et de notre digital factory. Dans ce cadre, nous avons mis en place un processus DevOps interne pour tous nos projets. La mise en place de ce processus consiste à sélectionner une chaîne d’outils qui intègre les briques de base de l’usine DevOps, et à assurer une bonne interaction entre elles. Par ailleurs, notre partenariat fort avec les trois leaders du marché du Cloud Public, à savoir Amazon Web Services (AWS), Google Cloud Plateforme (GCP) et Microsoft Azure nous a permis de maîtriser ces plateformes et de proposer des variantes selon le type du cloud utilisé le cas échéant.

En outre, l’accompagnement de nos clients lors de la migration vers le cloud et/ou l’adoption des architectures microservices fait partie des services offerts par NEOXIA. Dans ce genre de mission, rien ne peut remplacer l’adoption de l’approche DevOps. Ce choix est dû principalement à l’excellente boîte à outils qu’offre cette approche.

Pilier fondamental mais aussi culture globale

Le DevOps est devenu un pilier fondamental pour le développement d’une entreprise dans le domaine IT et pour répondre aux enjeux de la transformation digitale. Cependant, ce concept ne se résume pas seulement à l’acquisition des solutions mais plutôt à instaurer une culture globale au niveau de l’entreprise (métier, dev et Ops), à une réadaptation des processus et au bon choix des équipes et des outils à mettre en place. Le passage en cloud présente aussi une bonne opportunité pour adopter le DevOps en profitant de la maturité et de la disponibilité des outils disponibles via ces plateformes.

Par ailleurs, une étude au préalable doit être effectuée pour définir un plan de migration vers le DevOps permettant d’identifier les profils qui doivent gérer cette chaîne, les outils et les processus à mettre en place, l’impact sur l’existant au niveau applicatif, logiciel et infrastructure, etc. Une fois le chemin tracé, un accompagnement/coaching des nouvelles équipes DevOps dans l’action, et par des experts, est nécessaire pour respecter les bonnes pratiques, effectuer les ajustements nécessaires le cas échéant et garantir la réussite de ce passage.

--

--