Définition des pratiques CI/CD
La combinaison des pratiques d'intégration continue (CI) et de distribution continue (CD) permet aux équipes DevOps de publier des mises à jour du code de manière fréquente, fiable et rapide. Le concept CI/CD met l'accent sur l'automatisation tout au long du cycle de développement (conception, test, déploiement). Grâce à l'élimination des tâches manuelles, les publications de code seront plus fréquentes et présenteront moins de bugs et de vulnérabilités de sécurité.
Différences entre intégration continue, distribution continue et déploiement continu
Qu'est-ce que l'intégration continue ?
L'intégration continue consiste à intégrer les modifications du code dans un référentiel partagé de code source. Ces modifications sont généralement testées dès leur validation. Les développeurs l'appliquent pendant l'écriture du code plutôt qu'après.
Le principal avantage de la CI par rapport à l'intégration différée est une réduction significative des risques. Votre équipe connaît à tout moment son niveau d'avancement dans les processus : ce qui fonctionne et ce qui ne fonctionne pas, les bugs à corriger et les tâches effectuées par les autres membres de l'équipe. Les problèmes peuvent être identifiés de façon plus précoce dans le cycle de développement logiciel. La CI réduit également de façon considérable le risque de conflits dans le code, du fait de la mise en commun régulière du travail des différents développeurs.
Qu'est-ce que la distribution continue ?
La distribution continue est une extension de l'intégration continue qui consiste pour votre équipe à déployer automatiquement un nouveau code dans un référentiel (tel que GitHub). Ce code peut ensuite être déployé dans un environnement de production à tout moment en fonction des besoins de votre entreprise et de vos clients. L'automatisation supplémentaire utilisée par la distribution continue permet de réduire de façon significative les ressources nécessaires au déploiement du code. Grâce à la distribution continue, vous pouvez répondre plus rapidement à tout événement, qu'il s'agisse de changements des conditions du marché ou de failles de sécurité.
Le bon fonctionnement de la distribution continue requiert un serveur d'intégration très fiable, ainsi qu'un investissement de départ conséquent en matériel. Votre équipe DevOps devra également être en mesure de prendre en charge le basculement entre les tests manuels et les tests automatisés, une difficulté majeure pour de nombreuses entreprises.
Qu'est-ce que le déploiement continu ?
Le déploiement continu est l'étape la plus avancée du pipeline CI/CD. Contrairement à la distribution continue, le déploiement continu consiste à automatiser le processus de lancement en production des mises à jour du code. Pour assurer le bon fonctionnement du déploiement continu, vous devez consacrer un grand nombre de ressources aux tests automatisés du fait de l'élimination des tâches manuelles avant le déploiement du code.
Comme la distribution et l'intégration continues, le déploiement continu nécessite un investissement de départ conséquent. Il vous permet en revanche de bénéficier d'un feedback quasi instantané des utilisateurs et d'une période de latence plus courte entre la création du code et son activation.
Le pipeline CI/CD
Pour basculer dans un environnement qui utilise l'intégration et la distribution continues, vous allez devoir modifier en profondeur la façon dont vous percevez votre entreprise. La première étape de cette transformation consiste à comprendre ce qu'est le pipeline CI/CD afin de pouvoir faire les changements nécessaires dans votre entreprise.
Comprendre le pipeline CI/CD
Le pipeline CI/CD est l'ensemble des processus sur lesquels repose votre combinaison préférée d'intégration, de distribution et de déploiement continus. Il constitue la base des opérations de votre équipe DevOps. En général, le responsable de votre équipe DevOps est chargé d'assurer le bon fonctionnement de ce pipeline.
Composants d'un pipeline CI/CD
Chaque pipeline CI/CD est spécifique aux besoins et aux ressources de votre équipe, mais comprend en général quatre étapes essentielles.
- Conception : au cours de cette étape, le code source est extrait d'un référentiel et ses composants sont intégrés dans un artefact binaire. L'environnement de développement intégré (IDE) que vous avez choisi peut aider vos développeurs à automatiser ce processus.
- Test : le pipeline CI/CD doit être soumis à des tests en continu. Le test des unités permet de s'assurer que les nouvelles fonctionnalités fonctionnent comme prévu. La plupart des tests que vous devez effectuer sont de ce type. Le test de régression permet de vérifier que les éléments ajoutés à votre code ne détériorent pas votre infrastructure existante.
- Distribution : une fois les tests effectués, le code de vos développeurs peut passer en environnement de préproduction. Vous pourrez alors effectuer des tests A/B et identifier les problèmes persistants. Votre équipe de contrôle qualité pourra ainsi savoir sur quoi se focaliser.
- Déploiement : lorsque votre build a passé avec succès tous les tests automatisés, elle peut être déployée en production. Avec la distribution continue, la build est envoyée à un expert pour approbation manuelle. Avec le déploiement continu, elle est déployée automatiquement.
Objectif du pipeline CI/CD
Il existe de nombreuses raisons pour lesquelles votre équipe de développement peut souhaiter implémenter un pipeline d'intégration, de distribution et de déploiement continus. Le principal avantage d'un pipeline CI/CD est qu'il fournit à votre équipe un processus de publication de code cohérent et fiable. Il réduit également le risque d'erreurs humaines.
Lors de l'implémentation d'un pipeline CI/CD, il est conseillé d'appliquer les bonnes pratiques suivantes :
- Mesurez et surveillez votre pipeline en effectuant autant de mesures et de tests automatisés que possible.
- Conservez le même environnement à chaque étape du pipeline.
- Optimisez vos tests automatisés en effectuant les tests les plus rapides en premier.
- Ne laissez pas votre équipe déployer le code source avant d'avoir exécuté toutes les étapes du pipeline.
Tous les pipelines CI/CD ne se valent pas. Les plus performants privilégient la vitesse, la précision et la fiabilité. Votre équipe de développement de logiciels pourra ainsi intégrer facilement les modifications dans votre code source.
Outils CI/CD
Chaque environnement CI/CD reflète les spécificités de l'équipe de développement. Une large gamme d'outils ont ainsi été élaborés pour faciliter l'intégration, la distribution et le déploiement continus du code. Voici certains des outils CI/CD les plus utilisés :
- Jenkins : ce logiciel de déploiement de code open source est gratuit et convient même aux projets de grande ampleur. Il fonctionne sous Windows, Mac, Linux et Unix.
- AWS CodeDeploy : cette plateforme de déploiement de code est idéale pour les startups et les projets de moindre envergure. Elle permet de déployer du code via AWS Lambda ou Amazon EC2. Votre équipe devra s'acquitter d'un droit de 0,02 $ pour chaque instance sur site.
- DeployBot : cet outil CI/CD est adapté aux entreprises de toutes tailles. Il permet de déployer le code simultanément à partir de différentes ramifications et d'annuler facilement des versions.
- Octopus Deploy : octopus est l'une des plateformes de déploiement cloud les plus polyvalentes. Elle facilite l'exécution de scripts personnalisés et permet de gérer les certificats, même dans les réseaux les plus complexes.