1. Artefacts et versions #
Ce que l'on déploie vraiment.
Un artefact immuable #
L'artefact est le résultat du build : image de conteneur, binaire, paquet (jar, wheel, npm), archive. Il doit être immuable (jamais écrasé), versionné et traçable jusqu'au commit qui l'a produit.
| Étiquette | Usage |
|---|---|
SHA du commit (3f9c2e1) | identifiant unique de chaque build : c'est lui que l'on déploie |
Version sémantique (1.5.0) | versions publiées, lisibles par les humains |
Digest (sha256:…) | référence cryptographique exacte d'une image |
latest | à éviter pour déployer : ambigu et mouvant |
docker build -t registry.example.com/shop/api:${GIT_SHA} \
--label org.opencontainers.image.revision=${GIT_SHA} \
--label org.opencontainers.image.source=https://git.example.com/shop/api .
docker push registry.example.com/shop/api:${GIT_SHA}
docker tag registry.example.com/shop/api:${GIT_SHA} registry.example.com/shop/api:1.5.0 # même image, nom de version
docker buildx imagetools inspect registry.example.com/shop/api:1.5.0 # digestRegistres #
| Type d'artefact | Registres |
|---|---|
| Images OCI | GitHub Container Registry, GitLab Registry, Harbor, Amazon ECR, Google Artifact Registry, Docker Hub |
| Paquets | Nexus, Artifactory, GitLab Package Registry, PyPI/npm privés |
| Charts Helm | registres OCI, ChartMuseum |
Bonne Pratique : Configurez la rétention (supprimer les images de branches après quelques jours, garder les versions publiées) et l'analyse de vulnérabilités du registre.
2. Environnements et promotion #
Du staging à la production.
Promouvoir le même artefact #
| Environnement | But | Déploiement |
|---|---|---|
| Éphémère (par pull request) | tester et montrer une modification isolée | automatique, détruit à la fusion |
| Staging / préproduction | valider dans des conditions proches de la production | automatique depuis main |
| Production | servir les utilisateurs | automatique (déploiement continu) ou après approbation |
Configuration et secrets #
L'artefact ne contient aucune configuration propre à un environnement : URL, tailles, drapeaux et secrets sont injectés au déploiement (variables d'environnement, ConfigMaps, gestionnaire de secrets).
# GitHub Actions : un job lié à un environnement protégé
deploy-prod:
needs: deploy-staging
environment: { name: production, url: https://shop.example.com } # approbateurs, secrets dédiés
permissions: { id-token: write, contents: read } # OIDC
runs-on: ubuntu-latest
steps:
- uses: aws-actions/configure-aws-credentials@v4
with: { role-to-assume: arn:aws:iam::123456789012:role/deploy-prod, aws-region: eu-west-3 }
- run: ./deploy.sh production ${{ github.sha }}Bonne Pratique : Préférez la fédération d'identité OIDC entre la CI et le cloud à des clés d'accès longues stockées en secret : le jeton est temporaire et limité à un dépôt, une branche ou un environnement.
3. Les bases de données #
Le point délicat du déploiement continu.
Migrations versionnées #
Le schéma évolue avec le code, via des migrations versionnées dans le dépôt (Flyway, Liquibase, Alembic, migrations Django ou Rails), appliquées automatiquement par le pipeline avant ou pendant le déploiement.
# Alembic : une migration par changement de schéma, versionnée avec le code
alembic revision -m "ajouter colonne email_verifie"
alembic upgrade head # exécuté par le pipeline (job dédié ou init container)Expand / contract #
- Expand : ajouter la nouvelle colonne, compatible avec l'ancienne version du code.
- Déployer le code qui écrit dans les deux colonnes et lit la nouvelle.
- Migrer les données existantes.
- Contract : supprimer l'ancienne colonne dans une version ultérieure.
Erreur Courante : Une migration destructive (renommage, suppression) dans le même déploiement que le code empêche tout retour arrière et casse les instances encore à l'ancienne version pendant un déploiement progressif.
4. Traçabilité #
Savoir ce qui tourne et pourquoi.
Lier tout ensemble #
- Chaque déploiement est enregistré : version, commit, auteur, date, environnement, résultat.
- Les outils d'observabilité reçoivent un événement de déploiement pour corréler une dégradation avec une version.
- Les notes de version sont générées depuis les commits conventionnels.
- Une SBOM et une signature accompagnent l'artefact (voir la leçon DevSecOps).
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
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...