L'approche CI/CD

  • Date
  • Auteur
    Pascal Lecatelier

L'approche CI/CD permet d'augmenter la fréquence de déploiement des applications en automatisant les étapes de développement. L'approche CI/CD prend tout son sens lors d'ajout d'évolutifs ou de correctifs dans un processus de MCO en offrant une garantie de qualité et de stabilité du code livré aux équipes de développement et d'exploitation.

Le « CI » de CI/CD désigne le processus d’intégration continue destiné aux développeurs qui apportent régulièrement des évolutifs ou des correctifs au code applicatif, afin d’automatiser les tests, et la fusion des modifications dans un référentiel partagé. Cette solution permet d'éviter une fusion tardive du code des différents développeurs, afin de s'assurer au plus tôt que le code développé respecte les normes de qualité et de réduire le nombre de conflits rencontrés lors de la phase de merge.

Le « CD » de CI/CD désigne la « distribution continue (appelé également livraison continue) », ou le « déploiement continu » :
- La distribution continue, permet de partager les évolutions ou correctifs apportés par le développeur en les mettant à disposition dans un référentiel, à partir duquel le déploiement, sur les différents environnements retenus dans le processus de delivery, sera réalisé  par le responsable du déploiement. Ce processus permet de simplifier au maximum le déploiement de nouveau code sur les différents environnements et de gagner en réactivité tout en réduisant le nombre de ressources mobilisées.
- Le déploiement continu (l'autre signification possible de « CD ») désigne la mise à disposition automatique des évolutions ou des correctifs directement depuis le référentiel vers l'environnement de production, où elles seront utilisées par les utilisateurs finaux. Ce processus permet de réduire les charges de test, d’exploitation et de pilotage afférent à l'étape de mise en production. Il repose sur la distribution continue et automatise l'étape suivante du pipeline.

La distribution continue et le déploiement continue ont pour objectifs de réduire ou de supprimer les tâches d’exploitation associées au déploiement d’application, ces tâches manuelles ralentissant la distribution d'évolutions ou de correctifs.

Un des principaux objectif du processus automatisé de déploiement, est la livraison de fonctionnalités de qualité dans le délai le plus court . Ceci nécessite d’accélérer les développements et les mises en production tout en garantissant une livraison avec un faible niveau d’anomalie. Pour y parvenir il est impératif de simplifier la vie des développeurs afin qu’ils se concentrent sur la phase de codification plutôt que de gérer l'indisponibilité de serveurs ou des environnements sous dimensionnés. Les équipes Ops fournissent aux développeurs des outils leur permettant de travailler dans les meilleures conditions.

Le déploiement continue pour réduire le time-to-market

Le prérequis d’un modèle de pipeline de livraison continue ou de déploiement continue réussi consiste en la mise à disposition d'environnements anteprod stable à l'instart de la production. Cela implique des changements d'infrastructure n'impactant pas les environnements, donc la production des développeurs.

Aborder un cycle de déploiement automatisé nécessite de prendre en compte un changement dans l’organisation de travail des équipes qu’il faut impérativement aborder par étapes:
- l’intégration continue,
- la livraison continue,
- le déploiement continu.

Dans le cadre de phase de « RUN », chaque organisation doit évaluer les contraintes et les impacts des évolutions et adapter le processus de déploiement en conséquence, par exemple pour des fonctionnalités règlementairement ou financièrement sensibles il est nécessaire d'effectuer une phase de recette Métier et utilisateurs afin de s'assurer de la conformité du livrable et garantir le risque associé lors du déploiement en production.

Le déploiement continu est un modèle absolu que peu d’entreprises ont réellement mis en place. Les équipes IT et les utilisateurs préfèrent généralement avoir la main sur l'étape de recette et de déploiement, c’est dans ce cadre que la livraison continue permet d’automatiser toutes les étapes de déploiement hormis celle de mise en production. 

Les avantages de la livraison continue permet de réduire la dépendance vis à vis d’acteur en charge du déploiement en supprimant un nombre important d’actions manuelles, car la plupart des tâches sont automatisées. Les développeurs s’assurent rapidement que leur code applicatif répond aux normes de qualité et de sécurité, s’intègre correctement, et ne rencontre pas de régression grâce aux tests automatisés.

Le processus de déploiement continu est donc plus fiable, il permet d’augmenter la fréquence des livraisons, et de réduire le time-to-market, offrant donc la possibilité d’ajouter plus de valeur au produit.


Les outils

Les avantages concurrentiels apportés par l'approche CI.CD aux entreprises impliquent un changement de paradigme, en particulier dans la manière de travailler des équipes. Pour arriver à une transformation réussie le doit être processus décrit et partagé entre toutes les parties prenantes et une formation des équipes est indispensable.

Le choix et la maitrise des outils est également une clef de la réussite, comme:
- Jenkins, est une solution d’intégration et de déploiement continu qui dispose de nombreux plugins permettant d’ajouter des fonctionnalités à votre serveur d’intégration continue,
- Azure Devops, est une plateforme de collaboration permettant de livrer plus rapidement grace à un ensemble de services.

A chacune des étapes du processus de déploiement automatisé correspond un service pour :
- la gestion de contrôle de source (SCM) : Gitlabs, Github, Azure Devops Repos
- la qualité du code : SonarCube
- la sécurité / vulnérabilité: SonarCube
- les tests : Postman, Selenium, Azure Devops (Test plan)
- le build : Maven, Azure Devops
- l'intégration/livraison continue/déploiement continue : Jenkins, Azure Devops pipeline
- la gestion des releases : Maven, Azure Devops pipeline
- le déploiement : Ansible, Docker, AWS, Azure
- la performance / Monitoring : Zabbix , Azure Application Insight
- les logs : Logstash

Vidéo de présentation

Le processus de déploiement continue s'accorde aussi bien :
- avec les environnements cloud qui permettent de bénéficier de la scalablité et l'indépendance vis à vis du matériel,
- avec l'hebergement onPremise qui offre une indépendance vis à vis de prestataires de service tiers, ainsi qu'une maîtrise de la confidentialités des données.

Notre offre

Dans le cadre de la réalisation de nos projets ou TMA au forfait ainsi que dans le cadre de vos projets internes, nous vous accompagnons dans la mise en œuvre de solution CI/CD:
- la définition du processus de déploiement adaptée à votre organisation,
- le choix et la mise en place des outils,
- l'intégration de l'approche CI/CD dans votre cycle de vie applicative.

Partager cette page: