Le Cycle de Vie DevOps
Table des matières
- Vue d'ensemble du cycle
- Phase Plan
- Phase Code
- Phase Build
- Phase Test
- Phase Release
- Phase Deploy
- Phase Operate
- Phase Monitor
1 - Vue d'ensemble du cycle
Le cycle de vie DevOps est une boucle infinie composée de 8 phases interconnectées.
Le symbole de l'infini
┌────────────────────────────────────┐
│ │
│ ┌──────┐ ┌──────┐ │
│ / DEV \ / OPS \ │
│ │ Plan │ │ Release │ │
│ │ Code ├────┤ Deploy │ │
│ │ Build │ │ Operate │ │
│ \ Test / \ Monitor/ │
│ └──────┘ └──────┘ │
│ │
└────────────────────────────────────┘
Caractéristiques du cycle
| Caractéristique | Description |
|---|---|
| Continu | Pas de fin, amélioration permanente |
| Itératif | Petits incréments fréquents |
| Automatisé | Minimum d'intervention manuelle |
| Mesuré | Métriques à chaque étape |
| Collaboratif | Responsabilité partagée |
🔝 Retour à la table des matières
2 - Phase Plan
Objectif
Définir les fonctionnalités, prioriser le backlog, planifier les sprints.
Activités principales
| Activité | Description |
|---|---|
| Collecte des besoins | Comprendre ce que veut le client |
| Priorisation | Backlog grooming, MoSCoW |
| Estimation | Story points, planning poker |
| Sprint planning | Définir le scope du sprint |
| Définition du "Done" | Critères d'acceptation |
Outils typiques
- Gestion de projet : Jira, Azure DevOps, Trello
- Documentation : Confluence, Notion
- Communication : Slack, Microsoft Teams
La phase Plan bénéficie du feedback de la phase Monitor. Les métriques de production informent les décisions produit.
🔝 Retour à la table des matières
3 - Phase Code
Objectif
Écrire du code de qualité, collaborer efficacement, gérer les versions.
Pratiques essentielles
| Pratique | Bénéfice |
|---|---|
| Version control | Historique, collaboration |
| Branching strategy | Isolation, parallélisme |
| Code review | Qualité, partage de connaissances |
| Pair programming | Moins de bugs, formation |
| Coding standards | Cohérence, maintenabilité |
Stratégies de branching
Outils typiques
- VCS : Git (GitHub, GitLab, Bitbucket)
- IDE : VS Code, IntelliJ, Eclipse
- Linting : ESLint, Prettier, SonarLint
🔝 Retour à la table des matières
4 - Phase Build
Objectif
Compiler le code, gérer les dépendances, créer des artifacts.
Types d'artifacts
| Type | Format | Usage |
|---|---|---|
| Application | JAR, WAR, DLL | Exécutables |
| Container | Docker Image | Déploiement conteneurisé |
| Package | npm, pip, nuget | Bibliothèques |
| Infrastructure | Terraform plan | IaC |
Build reproductible
Un build doit être reproductible : le même code source doit produire le même artifact, peu importe quand ou où il est construit.
Éléments clés :
- Versions de dépendances fixées
- Environnement de build contrôlé
- Build dans un conteneur
Outils typiques
- Build tools : Maven, Gradle, npm, Make
- CI servers : Jenkins, GitLab CI, GitHub Actions
- Artifact repos : Nexus, Artifactory, Docker Registry
🔝 Retour à la table des matières
5 - Phase Test
Objectif
Valider la qualité du code à travers diff érents niveaux de tests.
Types de tests
| Type | Scope | Vitesse | Coût |
|---|---|---|---|
| Unit | Fonction/Classe | Très rapide | Faible |
| Integration | Composants | Rapide | Moyen |
| E2E | Système complet | Lent | Élevé |
| Performance | Charge/Stress | Variable | Élevé |
| Security | Vulnérabilités | Variable | Élevé |
Pipeline de tests
Couverture de code
La couverture de code n'est pas un objectif en soi. 80% de couverture sur du code critique vaut mieux que 100% sur du code trivial.
Outils typiques
- Unit tests : JUnit, Jest, pytest
- Integration : Testcontainers, WireMock
- E2E : Selenium, Cypress, Playwright
- Performance : JMeter, k6, Gatling
- Security : OWASP ZAP, SonarQube
🔝 Retour à la table des matières
6 - Phase Release
Objectif
Préparer et valider le déploiement en production.
Stratégies de release
| Stratégie | Description | Risque |
|---|---|---|
| Big Bang | Tout en une fois | Élevé |
| Rolling | Progressif | Moyen |
| Blue-Green | Deux environnements | Faible |
| Canary | Petit pourcentage d'abord | Très faible |
| Feature Flags | Activation à la demande | Très faible |
Feature Flags
Les feature flags permettent de déployer du code sans activer la fonctionnalité. Cela découple le déploiement de la release.
Outils typiques
- Release management : Jenkins, GitLab, Azure DevOps
- Feature flags : LaunchDarkly, Unleash, Flagsmith
- Approval : ServiceNow, Jira
🔝 Retour à la table des matières
7 - Phase Deploy
Objectif
Déployer l'application en production de manière fiable et reproductible.
Blue-Green Deployment
Canary Deployment
Principes de déploiement
| Principe | Description |
|---|---|
| Immutable | Ne pas modifier, remplacer |
| Automated | Pas d'intervention manuelle |
| Reversible | Rollback possible |
| Incremental | Petit à petit |
| Observable | Logs et métriques |
Outils typiques
- Orchestration : Kubernetes, Docker Swarm
- Deployment : Argo CD, Spinnaker, Flux
- Cloud : AWS CodeDeploy, Azure DevOps
🔝 Retour à la table des matières
8 - Phase Operate
Objectif
Maintenir l'application en fonctionnement optimal.
Activités principales
| Activité | Description |
|---|---|
| Scaling | Ajuster les ressources à la demande |
| Configuration | Gérer les paramètres runtime |
| Incident response | Réagir aux problèmes |
| Backup | Sauvegardes régulières |
| DR | Plan de reprise d'activité |
SRE Practices
- SLO (Service Level Objectives) : Objectifs de disponibilité
- SLI (Service Level Indicators) : Métriques mesurées
- Error Budget : Marge d'erreur acceptable
"Hope is not a strategy." - SRE Proverb
La fiabilité doit être conçue et mesurée, pas espérée.
Outils typiques
- Container orchestration : Kubernetes
- Configuration : Consul, etcd, Vault
- Incident : PagerDuty, OpsGenie
🔝 Retour à la table des matières
9 - Phase Monitor
Objectif
Observer, alerter et comprendre le comportement du système.
Les 3 piliers de l'observabilité
| Pilier | Description | Exemple |
|---|---|---|
| Logs | Événements textuels | "User login failed" |
| Metrics | Mesures numériques | CPU: 85%, Latency: 200ms |
| Traces | Parcours des requêtes | Request path through services |
Dashboard type
┌─────────────────────────────────────────────┐
│ Dashboard │
├───────────────┬──────────────┬──────────────┤
│ Requests/s │ Latency │ Error Rate │
│ 12,450 │ 45ms │ 0.02% │
├───────────────┴──────────────┴──────────────┤
│ [═══════════════════════════════════] CPU │
│ [═══════════════════ ] MEM │
├─────────────────────────────────────────────┤
│ Alert: High latency on /api/users │
└─────────────────────────────────────────────┘
Feedback vers Plan
Le cycle se ferme : les données de monitoring alimentent les décisions de la phase Plan.
Outils typiques
- Logs : ELK Stack, Loki, Splunk
- Metrics : Prometheus, Datadog, New Relic
- Traces : Jaeger, Zipkin, X-Ray
- Dashboards : Grafana, Kibana
🔝 Retour à la table des matières
Points clés à retenir
- Le cycle DevOps comprend 8 phases interconnectées
- Chaque phase alimente la suivante dans une boucle continue
- L'automatisation est présente à chaque phase
- Le monitoring ferme la boucle en informant le planning
- Les outils varient, les principes restent constants
🔝 Retour à la table des matières
← Chapitre précédent | Chapitre suivant : Introduction au CI/CD →