samiadrici-cloud-cicd

CICD

CICD 800 400 Samia Drici

Home >> Cloud Computing >> CICD

L’approche CICD permet d’augmenter la fréquence de distribution des applications grâce à l’introduction de l’automatisation au niveau des étapes du développement et du déploiement des applications.

Les principaux concepts liés à l’approche CICD sont l’intégration continue, la distribution continue et le déploiement continu. Plus précisément, l’approche CICD garantit une automatisation et une surveillance continues tout au long du cycle de vie des applications, des phases d’intégration et de test jusqu’à la distribution et au déploiement. Ensemble, ces pratiques sont souvent désignées par l’expression CICD et elles reposent sur une collaboration agile entre les équipes de développement et d’exploitation.

Intégration continue

L’intégration continue (continuous integration) consiste, pour les développeurs, à apporter régulièrement des modifications au code de leur application, à les tester, puis à les fusionner dans un référentiel partagé.

L’intégration continue permet aux développeurs de fusionner plus fréquemment leurs modifications de code dans une « branche » partagée, ou un « tronc », parfois même plusieurs fois par jour. Cette solution permet d’éviter de travailler en même temps sur un trop grand nombre d’éléments d’une application, qui pourraient entrer en conflit les uns avec les autres.

Une fois que les modifications apportées par un développeur sont fusionnées, l’application est reconstruite, déployée et testée (généralement des tests unitaires et d’intégration) automatiquement. Il s’agit de tester absolument tout, des classes et fonctions jusqu’aux différents modules qui constituent l’application. En cas de détection d’un conflit entre le code existant et le nouveau code, le processus d’intégration continue permet de résoudre les dysfonctionnements plus facilement, plus rapidement et plus fréquemment.

Distribution continue

La distribution continue (continuous delivery) permet de disposer d’une base de code toujours prête à être déployée dans un environnement de production.

Elle consiste à déployer automatiquement l’application en Non Production (contrairement au déploiement continu qui va lui jusqu’à la Production).

Pour garantir l’efficacité du processus de distribution continue, il faut d’abord introduire le processus d’intégration continue dans le pipeline de développement. Dans le cadre de la distribution continue, chaque étape (de la fusion des modifications de code jusqu’à la distribution des versions prêtes pour la production) implique l’automatisation des processus de test et de publication du code. À la fin de ce processus, l’équipe d’exploitation est en mesure de déployer facilement et rapidement une application dans un environnement de production.

Déploiement continu

L’étape finale d’un pipeline CICD mature est le déploiement continu (continuous deployment). En complément du processus de distribution continue, qui automatise la publication d’une version prête pour la production dans un dépôt de packages ou d’images, le déploiement continu automatise le lancement d’une application dans un environnement de production.

En l’absence de passerelle manuelle entre la production et l’étape précédente du pipeline, le déploiement continu dépend surtout de la conception de l’automatisation des processus de test. Dans la pratique, dans le cadre du déploiement continu, une modification apportée par un développeur à une application pourrait être publiée quelques minutes seulement après la rédaction du code en question (en supposant qu’elle passe les tests automatisés). Il est ainsi beaucoup plus facile de recevoir et d’intégrer en continu les commentaires des utilisateurs.

Ensemble, ces trois pratiques CICD réduisent les risques liés au déploiement des applications, puisqu’il est plus simple de publier des modifications par petites touches qu’en un seul bloc. Cette approche nécessite néanmoins un investissement de départ considérable, car les tests automatisés devront être rédigés de manière à s’adapter à un large éventail d’étapes de test.