Déploiement Continue (CD)
Après la phase d'Intégration Continue (CI), nous avons obtenu un ou plusieurs artefacte(s) qui compose.nt notre logiciel, nous devons donc les déployer sur l'environnement cible.
Etant donné que les artefactes sont obtenus automatiquement, il faut aussi les livrer automatiquement.
Suivant la structure organisationnelle de l'entreprise, cette livraison peut nécessiter une approbation mannuelle avant d'aller en Production
par exemple, dans ce cas on parle de Continue Delivery et s'il n'y a pas d'approbation manuelle, donc une livraison directe, alors nous parlons de Continue Deployment.
Release Plan (Note)
Afin de donner de la visibilté de au Business
surtout lorsque nous sommes en Continue Delivery
, il convient d'établir une Release Note qui trace toutes fonctionnalités et anomalies corrigées dans la version qui est déployée en production
.\
Environnements
Afin de garantir la qualité de ce qu'on livre comme produit, il faut s'assurer que les changements appportés sont conforment au besoin exprimé.
Pour cela, il faut mettre en place plusieurs environnements (DEV, INT, UAT & PROD) qui sont respectivement associés aux branches (develop, release, master).
- DEV
L'environnementDEV
est celui sur lequel les développeurs testent les différentes fonctionnalitésfeatures
qu'ils ont développé.
Lorsque les changements sont conformes à leurs yeux, les developpeurs font des demandes de fusion ditespull request
.
On se positionne sur la branche release/2025.1
puis nous y ajoutons les changements qui sont disponible sur la branche develop
git checkout release/2025.1
git merge develop
-
INT
L'environnement d'Intégration (INT) est associté aux branche release/xxxx.y. C'est enviroonement est dédié aux Business Analysts (BA). C'est ici que les regles de gestion relatives aux besoins exprimés sont testées.
En cas de non conformité, il ticket d'annomalie est créé et affecté au developpeurs concernés par la fonctionnalité. Cebug
est corrigé en priorité directement sur la branche release/xxxx.y et déployé automatiquement afin que le BA puisse de nouveau tester. C'est également sur cet environnement que les QA (Quality Insurance) lancent les tests automatiques s'assurant ainsi qu'il n'y a pas regressions fontionnelle dans la version.
A la fin de la phase de tests, un PV de recette est redigé par le responsable de BA. Ce PV est l'élément qui permet permet de promouvoir la version concernée pour aller sur la production en passant par l'environnement UAT. -
UAT
L'environnement d'UAT
est un environnement dit de pre-production. Il est identique à l'environnement de production.
Sur cette environnement, l'on va lancer les tests de surface ditssmoke tests
afin de vérifier quelques parcours clés. Le but étant de s'assurer que l'environnement tout est OK.
Sur cette environnement, étant donné qu'il est identique à la production, tant au niveau du nombre de noeuds, CPU, RAM, interface réseau que des stratégies de montée en charge (auto-scalling
).
Cet environnement va principalement servir à confirmer les exigencesnon-fonctionnelles
telles que:- Performace
- Les Temps de résponse
- Le Taux d'erreurs
- Résilience
- Montée en charge
- Securité
- etc...
- Performace
Il s'agit pour les TechLead
de définir plusiers stragtégies de tests
qui peuvent être élaborée en répondant aux questions suivantes:
- Quel est le nombre maximum de connexion simultanée supporté
- En combien de temps la page d'accueil s'affiche
- A quel moment le système devient unitilisable
- etc...
Les réponse à ces questions permettent de définir la quelité exacte de resources nécessaires suivant la stratégie de l'entreprise.
Il faut également mettre en place un système de monitoring au travers d'un ensemble de métriques que nous verons dans la section Monitoring
- PROD
Les résultats de la batterie de tests réalisés enUAT
sont à analyser et si les valeurs des mértiques sont conformes aux attendues, alors lesperfs experts
redige égaelement leur PV de de tests qui sera joint à celui des BA pour autoriser la libvraison en production.
Après la livraison, il faut imméditement se mettre sur tableau de bord de monitoring pour commencer à surveiller le comportement de la l'application et de la plateforme.
En cas de souci majeur, l'ont peut revenir sur la version précédente et créer un incident pour corriger le problème.\
Etant donné que l'on souhaite revenir en arrière en cas de souci majeur, alors il faut s'assuer que les nouveaux changements ne crént pas d'incomatibilité entre la version précédente et la version actuelle de la base données.
Configuration des environnements
Nos environnements d'exécution peut être des clusters KUBERNETES ou une VM qui peut être dans le cloud ou onPremise.
Pour automatiser le phase de déploiement, nous allons utiliser les outils tels que:
Terraform
pour faire l'infrastructure as Code c'est à dire provisonner notre environnementAsible
pour automatiser nos tâches de configuration compte-tenu du nombre important de VMs à paramétrerKustomize
etHELM
pour gérer nos resource KubernetesArgoCD
pour activer l'automatisation du déploiement.