1. CI/CD Overview

Le Continuous Integration/Continuous Delivery (CI/CD) est un cycle de vie de développement de logiciels qui fournit des commentaires continus tout au long du processus, contrairement au cycle de vie en cascade traditionnel où tout est vu à la fin sans agilité. Les avantages de l’utilisation de cette approche de développement comprennent des commentaires constants et une agilité.
Continuous Integration est composé de:
- Planification : Le processus de développement de logiciels commence par la planification, qui consiste à recueillir les exigences en écoutant les besoins de l’entreprise et à les documenter.
- Code : Le développement de logiciels implique la programmation et l’ingénierie, ce qui signifie essentiellement l’écriture de code.
- Construction : Après la phase de codage, il est recommandé de construire le code sur le serveur CI plutôt que localement sur votre ordinateur portable.
- Test : Cette étape consiste à vérifier la qualité de votre code et à traduire vos exigences commerciales en spécifications techniques.
- Publication : Cette étape consiste à déployer votre logiciel sur le serveur de staging pour valider votre code avant sa mise en production.
Continuous Delivery (livraison continue) se compose de :
- Déploiement (Deploy) : Le code de l’application est déployé sur des serveurs de production ou une infrastructure cloud. Cela peut être fait manuellement ou via des pipelines de déploiement automatisés. Vous pouvez utiliser Google Cloud, Microsoft Azure ou AWS Cloud pour le déploiement.
- Exploitation (Operate) : À cette étape, l’application est déployée et exécutée en production.
- Surveillance (Monitor) : Une fois que l’application est déployée, elle doit être surveillée pour mesurer les performances, la disponibilité et d’autres métriques. Cela aide à identifier tout problème ou incident qui pourrait survenir en production.
2. Waterfall vs Agile methodologies
Dans le passé, le cycle de vie du développement de logiciels (SDLC) suivait généralement un modèle en cascade, adopté par les grandes entreprises et impliquait des périodes de livraison plus longues, comme tous les 6 mois ou une fois par an.

Avec cette approche du cycle de vie du développement de logiciels, il n’est pas possible de publier une nouvelle version chaque semaine ; des correctifs pour les bogues et les bases de données peuvent être apportés, mais de nouvelles versions majeures ne le peuvent pas. Le SDLC en cascade n’est pas agile et nécessite plus de temps pour chaque étape. Il implique des équipes isolées et des tests manuels sujets aux erreurs.
Les processus modernes de développement de logiciels utilisent des méthodologies agiles qui suivent un ordre étape par étape dans le SDLC, mais avec des cycles plus fréquents, généralement de 2 semaines (appelés « sprints »). Pendant cette période, l’équipe de développement s’engage dans une planification et un suivi quotidiens, ce qui donne lieu à un processus plus agile. Les méthodologies agiles sont réactives aux commentaires, publient des logiciels par incréments, nécessitent l’intégration du code de différents membres de l’équipe et éliminent les silos.
3. Continuous Integration
L’intégration continue (CI) est une pratique de développement de logiciels qui implique l’intégration et le test continu des changements de code tels qu’ils sont effectués par les développeurs.
Dans le contexte du SDLC, la CI est généralement mise en œuvre dans le cadre de la phase de développement, après que le codage est terminé. Lorsque les développeurs ont fini de coder une fonctionnalité ou une correction de bogue, ils commettent le code dans un référentiel de code partagé.
À ce stade, les outils de CI construisent automatiquement le code, exécutent des tests automatisés et génèrent des commentaires sur les problèmes ou erreurs qui doivent être corrigés. Ces commentaires sont ensuite communiqués aux développeurs, qui peuvent apporter les ajustements nécessaires avant de commettre un nouveau code.
Le but principal de la CI est de détecter et de corriger les erreurs tôt dans le processus de développement, réduisant ainsi le coût global de développement et améliorant la qualité du logiciel développé. La CI contribue également à assurer que le logiciel est toujours dans un état de publication, facilitant le déploiement de nouvelles fonctionnalités et corrections de bugs de manière opportune.
4. Continuous Delivery
La livraison continue (CD) est une pratique de développement de logiciels qui implique de fournir en continu un logiciel dans un environnement semblable à la production, où il peut être testé et préparé pour la mise à disposition aux utilisateurs finaux.
Dans le contexte du SDLC, la CD est généralement mise en œuvre après que les changements de code ont été testés et approuvés dans la phase de CI. Une fois que les changements de code ont été approuvés pour la mise à disposition, les outils de CD déploient automatiquement les changements dans un environnement semblable à la production où ils peuvent être testés et préparés pour la mise à disposition.
La CD aide à automatiser le processus de mise à disposition, réduisant le risque d’erreur humaine et accélérant le temps de mise à disposition de nouvelles fonctionnalités et corrections de bugs. En fournissant un logiciel dans un environnement similaire à la production dès que possible, la CD contribue également à améliorer les commentaires et réduire le temps nécessaire pour corriger les bugs et effectuer des changements de fonctionnalités.
Dans l’ensemble, la CD contribue à garantir que les modifications logicielles peuvent être livrées aux utilisateurs finaux plus rapidement et avec une qualité supérieure, réduisant les coûts et améliorant la satisfaction des clients.
5. Continuous Delivery vs Continuous Deployment
La livraison continue (Continuous Delivery – CD) et le déploiement continu (Continuous Deployment – CD) sont toutes deux des pratiques de développement de logiciels qui visent à améliorer la vitesse et la qualité des sorties logicielles. Cependant, il existe une différence clé entre les deux.
La livraison continue implique la livraison continue de logiciels dans un environnement similaire à la production pour les tests et la préparation, mais elle nécessite encore une intervention humaine pour approuver la sortie de nouvelles fonctionnalités ou corrections de bugs aux utilisateurs finaux. En d’autres termes, la décision de publier des modifications logicielles aux utilisateurs finaux est toujours prise par les humains.
En revanche, le déploiement continu est une extension de la livraison continue qui automatise la publication de modifications logicielles aux utilisateurs finaux sans intervention humaine. Cela signifie que dès que les modifications de code ont été testées et approuvées dans la phase CD, elles sont automatiquement déployées aux utilisateurs finaux sans nécessiter d’intervention humaine.
Le principal avantage du déploiement continu est qu’il peut réduire considérablement le temps de sortie de nouvelles fonctionnalités ou corrections de bugs, améliorant ainsi la vitesse d’innovation et la satisfaction des clients. Cependant, cela nécessite également un haut degré d’automatisation et de confiance dans le processus de développement de logiciels pour garantir que les sorties automatiques sont fiables et de haute qualité.
6. CI/CD vs DevOps

CI/CD et DevOps sont deux concepts liés mais distincts dans le développement de logiciels.
CI/CD est un ensemble de pratiques et d’outils qui permettent aux développeurs de logiciels d’intégrer, de tester et de livrer en continu des modifications de code vers les environnements de production de manière rapide et automatisée. Il consiste à décomposer le processus de développement de logiciels en petites itérations fréquentes pour détecter et corriger rapidement les erreurs, et pour améliorer la vitesse et la qualité des versions de logiciels.
DevOps, en revanche, est une approche culturelle et organisationnelle plus large qui vise à améliorer la collaboration, la communication et l’intégration entre les équipes de développement et d’exploitation afin de rationaliser le développement et la livraison de logiciels. Elle consiste à briser les silos entre les différentes fonctions du développement de logiciels et des opérations et à promouvoir une culture de responsabilité partagée et d’amélioration continue.