Qu'est-ce que le déploiement continu ?
Le déploiement continu (CD) profite à vos équipes de développement et à vos clients. Découvrez en quoi il consiste, ses avantages, les bonnes pratiques, et bien plus encore.
Sten Pittet
Auteur collaborateur
Le déploiement continu (CD) est un processus de livraison de logiciels qui utilise des tests automatisés pour valider si les changements apportés à une base de code sont corrects et stables en vue d'un déploiement autonome immédiat dans un environnement de production.
Le cycle de livraison des logiciels a évolué au fil du temps. L'ancien processus consistant à déplacer le code d'une machine à l'autre et à vérifier s'il fonctionne comme prévu était sujet aux erreurs et gourmand en ressources. Aujourd'hui, des outils peuvent automatiser l'ensemble du processus de déploiement, ce qui permet aux organisations d'ingénierie de se concentrer sur les besoins métier fondamentaux plutôt que sur le coût des infrastructures.
Déploiement continu et livraison continue
La distinction entre le déploiement et la livraison continue peut être difficile à établir en raison de la nomenclature. Tous deux sont abrégés en CD et ont des fonctions très similaires. La livraison est un prélude au déploiement. Elle se solde par une dernière étape d'approbation manuelle avant la livraison en production.
Voici un moyen mnémotechnique qui vous aidera à vous rappeler comment les distinguer. Imaginez que vous recevez un colis de votre boutique en ligne préférée. Lorsque vous attendez l'arrivée d'un colis, vous vous coordonnez avec un service de livraison. C'est la phase de livraison. Une fois que le colis est arrivé, vous l'ouvrez et examinez son contenu pour vous assurer qu'il correspond à vos attentes. Si ce n'est pas le cas, vous pouvez le refuser et le renvoyer. Si tout est OK, vous êtes prêt à utiliser votre nouvel achat. C'est ce qu'on appelle le « déploiement ».
Lors de la phase de livraison, les développeurs révisent et mergent les changements apportés au code, qui sont ensuite regroupés dans un artefact. Ce package est ensuite déplacé vers un environnement de production où il doit d'abord être approuvé avant d'être ouvert en vue de son déploiement. Lors de la phase de déploiement, le package est ouvert et révisé à l'aide d'un système de contrôles automatisés. Si les contrôles échouent, le package est rejeté.
Une fois les contrôles effectués, le package est automatiquement déployé en production. Le déploiement continu est le pipeline de bout en bout, complet et automatisé de déploiement de logiciels.
Découvrir la solution
Développez et exploitez des logiciels grâce à Open DevOps
Matériel connexe
En savoir plus sur les tests automatisés
Quels sont les avantages du déploiement continu ?
Le déploiement continu offre des avantages de productivité incroyables aux équipes de développement. La combinaison de DevOps et du déploiement continu permet aux équipes d'accélérer les livraisons de manière significative. Étant donné que les pipelines de déploiements sont déclenchés automatiquement pour chaque changement, les équipes peuvent se développer plus rapidement. Si l'équipe pense à un nouveau produit ou une nouvelle fonctionnalité, elle peut les proposer aux clients dès que le code a été pushé. Le déploiement continu permet aux équipes de déployer de petits lots de changements, ce qui rend les livraisons moins risquées et plus faciles à corriger en cas de problème.
D'un point de vue commercial, la livraison continue permet à l'entreprise de répondre à l'évolution des demandes du marché en déployant et en validant rapidement de nouvelles idées et fonctionnalités.
Outils de déploiement continu
Une fois que vous avez adopté les tests automatisés, il est bon de les coupler avec un outil de couverture des tests qui vous donnera une idée de la couverture de votre base de code par votre suite de tests.
Il est recommandé de viser une couverture supérieure à 80 %, mais attention à ne pas confondre pourcentage de couverture élevé et qualité de la suite de tests. Un outil de couverture du code vous permettra de rechercher le code non testé, mais c'est bien la qualité de vos tests qui fera la différence à la fin de la journée.
Si vous débutez, ne vous précipitez pas pour atteindre une couverture de 100 % de votre base de code. Utilisez plutôt un outil de couverture des tests pour trouver les parties critiques de votre application qui ne font pas encore l'objet de tests et commencez par là.
Tests automatisés
Les tests automatisés constituent la dépendance la plus critique pour le déploiement continu. En effet, l'ensemble de la chaîne d'intégration, de livraison et de déploiement continus en dépend. Les tests automatisés sont utilisés pour éviter toute régression lors de l'introduction d'un nouveau code et peuvent remplacer les tests manuels de nouveaux changements de code.
Déploiements propagés
L'étape automatisée consistant à activer le nouveau code dans un environnement réel distingue le déploiement continu de la livraison continue. Un pipeline de déploiement continu doit être capable d'annuler un déploiement au cas où des bugs ou des changements problématiques seraient déployés. Les outils automatisés de déploiement propagé, tels que les déploiements de type « Blue-Green Deployment », sont indispensables à un déploiement continu adéquat.
Surveillance et alertes
Un pipeline de déploiement continu robuste doit comporter une surveillance et des alertes en temps réel. Ces outils offrent une visibilité sur l'intégrité du système dans son ensemble et sur l'état avant et après les déploiements de nouvelles lignes de code. De plus, les alertes peuvent être utilisées pour déclencher une annulation du déploiement afin de revenir en arrière en cas d'échec du déploiement.
Bonnes pratiques en matière de déploiement continu
Une fois qu'un pipeline de déploiement continu est établi, l'équipe d'ingénierie doit assurer une maintenance et une participation continues afin de garantir sa réussite. Les bonnes pratiques et les comportements suivants lui permettront de tirer le meilleur parti d'un pipeline de déploiement continu.
Développement basé sur des tests
Le développement basé sur les tests est la pratique consistant à définir une spécification de comportement pour les nouvelles fonctionnalités du logiciel avant de lancer le développement. Une fois la spécification définie, les développeurs écrivent des tests automatisés qui correspondent à la spécification. Le code livrable est alors écrit de manière à satisfaire les cas de test et à correspondre à la spécification. Ce processus garantit que toute nouvelle ligne de code est couverte par des tests automatisés dès le départ. Une autre solution consiste à livrer le code d'abord et à produire la couverture des tests ensuite. Cela peut néanmoins créer des écarts entre le comportement attendu de la spécification et le code produit.
Une seule méthode de déploiement
Une fois qu'un pipeline de déploiement continu est en place, il est essentiel de n'utiliser que celle-ci. Les développeurs ne doivent pas copier manuellement le code vers la production ou modifier les choses en direct. Les changements manuels externes apportés au pipeline de CD entraîneront la désynchronisation de l'historique des déploiements et la rupture du flux de CD.
Conteneurisation
La conteneurisation d'une application logicielle permet de s'assurer qu'elle se comporte de la même manière sur toutes les machines sur lesquelles elle est déployée. Ce procédé élimine toute une série de problèmes liés au fait que le logiciel fonctionne sur une machine et se comporte différemment sur une autre. Les conteneurs peuvent être intégrés dans le pipeline de CD afin que le code se comporte de la même manière sur la machine d'un développeur que lors des tests automatisés et du déploiement en production.
En résumé…
Le déploiement continu peut être un outil puissant pour les organisations d'ingénierie modernes. Il constitue la dernière étape du « pipeline continu » global qui comprend l'intégration, la livraison et le déploiement. La véritable expérience de déploiement continu englobe l'automatisation jusqu'au déploiement du code en production, à son test pour en vérifier l'exactitude, à son annulation automatique en cas d'erreur ou à son acceptation s'il est correct.
Si vous souhaitez mettre en pratique la livraison continue, n'oubliez pas de consulter nos tutoriels DevOps CI/CD, qui abordent Atlassian Open DevOps avec Jira et les intégrations tierces.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.