RousselTMLEARNING

Article · DevOps : de la découverte à l'expertise

CI/CD (4/5) : stratégies de déploiement et retour arrière

1. Les stratégies #

Choisir selon le risque et l'infrastructure.

Vue d'ensemble #

StratégiePrincipeInterruptionRetour arrièreCoût
Recreatearrêter v1 puis démarrer v2ouiredéployer v1faible
Rolling updateremplacer les instances par lotsnonprogressif (rollout undo)faible
Blue/greendeux environnements, bascule du traficnoninstantanédouble infrastructure
Canarypetite part du trafic vers v2, puis augmentationnoninstantané, peu d'utilisateurs touchésroutage avancé
Feature flagscode déployé mais fonctionnalité désactivéenondésactiver le drapeaugestion des drapeaux

Rolling update #

# Kubernetes : jamais moins de 100 % de capacité pendant la mise à jour
spec:
  replicas: 4
  strategy:
    type: RollingUpdate
    rollingUpdate: { maxSurge: 1, maxUnavailable: 0 }
  template:
    spec:
      containers:
        - name: api
          image: registry.example.com/shop/api:3f9c2e1
          readinessProbe:                     # le trafic n'arrive qu'aux pods prêts
            httpGet: { path: /health, port: 8080 }
            periodSeconds: 5
À savoir : Sans readiness probe, Kubernetes envoie du trafic à un pod qui démarre encore : le rolling update produit alors des erreurs.

Blue/green #

Blue/green
La nouvelle version est testée en production avant de recevoir le trafic.

Canary #

Étapes d'un canary
Chaque palier est validé par des métriques (taux d'erreur, latence) avant le suivant.
# Argo Rollouts : canary avec paliers et analyse automatique
strategy:
  canary:
    steps:
      - setWeight: 5
      - pause: { duration: 5m }
      - analysis: { templates: [{ templateName: taux-erreur }] }
      - setWeight: 20
      - pause: { duration: 10m }
      - setWeight: 50
      - pause: { duration: 15m }

2. Découpler déploiement et mise en service #

Feature flags et dark launch.

Feature flags #

Un feature flag permet de déployer du code inactif et de l'activer plus tard, pour un pourcentage d'utilisateurs, une région ou les seuls testeurs internes. C'est ce qui rend possible le trunk-based development avec des fonctionnalités inachevées.

if flags.is_enabled("nouveau-panier", user_id=user.id):   # OpenFeature, Unleash, LaunchDarkly, Flagsmith...
    return nouveau_panier(user)
return ancien_panier(user)
Erreur Courante : Chaque drapeau est une dette : supprimez-le dès que la fonctionnalité est activée pour tous, sinon le code accumule des branches mortes difficiles à tester.

Dark launch #

La nouvelle version reçoit une copie du trafic réel (mirroring) sans que ses réponses soient renvoyées aux utilisateurs : on mesure performance et erreurs sans risque.

3. Vérifier et revenir en arrière #

Un déploiement n'est fini que lorsqu'il est vérifié.

Vérifications automatiques #

  1. Smoke tests juste après le déploiement : la page d'accueil répond, la connexion fonctionne, l'API de santé est verte.
  2. Analyse des métriques pendant la montée en charge : taux d'erreur, latence p95, saturation, comparés à la version précédente.
  3. Décision automatique : poursuivre, mettre en pause ou annuler.
# smoke test minimal dans le pipeline
for i in $(seq 1 10); do
  curl -fsS --max-time 3 https://staging.example.com/health && exit 0
  sleep 6
done
echo "smoke test en échec" >&2 ; exit 1

Rollback ou roll forward #

OptionQuand
Rollbackrevenir à la version précédente (même artefact, déjà connu) : premier réflexe en cas d'incident
Roll forwardlivrer rapidement un correctif : seulement si le pipeline est rapide et la cause comprise
kubectl rollout undo deployment/api
kubectl rollout history deployment/api
helm rollback shop 41
git revert <sha> && git push      # GitOps : l'annulation passe aussi par Git

📄 CI/CD de bout en bout (4/5) : stratégies de déploiement et retour arrière →

Mon suivi

  • ⏱ Durée estimée : ≈ 7 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Glossaire de la formation

DevOps

Culture, mouvement et pratiques visant à unifier le développement logiciel (Dev) et l'administration des infrastructures informatiques (Ops).Découvrir...

DevSecOps

Intégration native de la sécurité (Security) dès la conception et tout au long du cycle de vie DevOps (approche "Shift-Left").Voir comment intégrer la...

AIOps (Artificial Intelligence for IT Operations)

Utilisation de l'intelligence artificielle et de l'apprentissage automatique pour automatiser et améliorer les opérations informatiques (ex: détection...

NoOps

Concept où l'environnement informatique est tellement automatisé et abstrait (ex: Serverless, PaaS) qu'il ne nécessite quasiment plus d'équipe opérati...

GitOps

Pratique de déploiement continu où un dépôt Git sert de source unique de vérité déclarative pour l'infrastructure et les applications.Maîtriser le dép...

FinOps (Financial Operations)

Culture de responsabilité financière du Cloud visant à maximiser la valeur métier en optimisant les coûts. Elle permet une collaboration étroite entre...

SRE (Site Reliability Engineering)

Discipline qui applique les principes de l'ingénierie logicielle aux problématiques d'exploitation. Le but est de créer des systèmes hautement scalabl...

Platform Engineering

Discipline consistant à concevoir et construire des chaînes d'outils et des flux de travail permettant aux développeurs de gérer leur infrastructure e...

Articles recommandés

Mur de la confusion

Le 'mur de la confusion' (ou 'wall of confusion') est une métaphore souvent utilisée dans le cont...

Soutien Logistique Intégré

Soutien Logistique Intégré (SLI) (L'Integrated Logistics Support (ILS) en anglais), est une appro...

Application 12 Facteurs

Un guide détaillé sur la méthodologie des 12 facteurs pour le développement d'applications modern...

Le framework CALMS : Les 5 piliers du DevOps

Découvrez le framework CALMS, le socle indispensable pour réussir votre transformation DevOps à t...

Bonnes pratiques DevOps : culture, CI/CD, infrastructure as code et mesure

Bonnes pratiques DevOps : culture et collaboration, intégration et livraison continues, trunk-bas...

Tests de charge avec Grafana k6 : pourquoi et quels types de tests

Pourquoi tester la performance avant la production, les types de tests (smoke, charge, stress, pi...

Écrire des scripts k6 : requêtes, vérifications, scénarios et exécuteurs

La structure d'un script k6 (init, setup, default, teardown), les requêtes HTTP, les checks, les ...

Seuils, métriques et résultats d'un test k6

Lire le résumé d'un test k6, comprendre les métriques intégrées (http_req_duration, http_req_fail...

Observer un test k6 : Prometheus, Grafana et corrélation avec le système testé

Envoyer les résultats de k6 dans Prometheus (remote write) ou en OpenTelemetry, les visualiser da...