Environnements de déploiement
En développement logiciel, un environnement de déploiement (parfois appelé tier) est un système informatique, ou un ensemble de systèmes (ordinateur, serveur, machine virtuelle, conteneur, etc.), sur lequel une application ou un site web est déployé et exécuté.
Chaque environnement a un rôle spécifique dans le cycle de vie d'un logiciel. Il contribue à garantir la qualité, la stabilité et la sécurité du logiciel avant son utilisation en production par des utilisateurs réels.
Le nombre d'environnements varie d'une organisation à l'autre. Le schéma le plus courant, présenté ci-dessous, en compte trois : développement, pré-production et production. On rencontre aussi fréquemment un environnement de test (ou QA, Quality Assurance) intermédiaire, voire d'autres environnements (recette, démonstration, secours en cas de sinistre, etc.).
Sources :
- GitLab Docs - Environments (un environnement représente une cible de déploiement : development, staging ou production)
- GitHub Docs - Environnements de déploiement (cibles de déploiement « production », « staging » ou « development »)
- Microsoft Learn - Planification des environnements de développement, de test, de préproduction et de production (rôle de chaque environnement ; au minimum, séparer la production des autres environnements)
- CNIL - Sécurité : Encadrer les développements informatiques (développer et tester dans un environnement distinct de celui de la production)
Environnement de développement (Dev)
- Premier stade du cycle de développement logiciel.
- Les développeurs y écrivent, testent et déboguent leur code source. Il s'agit souvent simplement du poste de travail de chaque développeur.
- Configuration souple et flexible pour permettre des itérations rapides.
- Utilisation fréquente de données factices ou de jeux de données simplifiés.
- Plusieurs développeurs peuvent travailler en parallèle sur des fonctionnalités distinctes (par exemple dans des branches Git séparées), ce qui s'inscrit bien dans une démarche agile.
- Outils courants :
- IDE (Visual Studio Code, IntelliJ IDEA, PyCharm, …)
- Gestion de versions : Git, généralement associé à une plateforme d'hébergement de dépôts (GitHub, GitLab, …)
- Débogueurs, émulateurs et conteneurs locaux pour reproduire des conditions proches de la production
Sources :
- Microsoft Learn - Planification des environnements de développement, de test, de préproduction et de production (chaque développeur dispose généralement de son propre ordinateur, physique ou virtuel)
- CNIL - Guide RGPD du développeur : Tester vos applications (construire un jeu de données fictives plutôt qu'utiliser des données réelles)
- Pro Git (documentation officielle de Git) - À propos de la gestion de version
- Pro Git (documentation officielle de Git) - Les branches en bref (une branche permet de diverger de la ligne principale sans l'impacter)
- Manifeste agile - Principes sous-jacents (« Livrez fréquemment un logiciel opérationnel »)
- MDN Web Docs - Glossaire : EDI (IDE)
- Visual Studio Code - Documentation officielle
- JetBrains - IntelliJ IDEA (site officiel)
- JetBrains - PyCharm (site officiel)
- GitHub Docs - Qu'est-ce que GitHub ? (hébergement de dépôts Git dans le cloud)
- GitLab Docs - Repository (dépôt de code suivi par gestion de versions)
- Visual Studio Code - Developing inside a Container (utiliser un conteneur comme environnement de développement complet)
Environnement de pré-production (Staging)
- Réplique aussi fidèle que possible de l'environnement de production (mêmes versions logicielles, configuration similaire), mais sans trafic d'utilisateurs réels.
- Sert à valider les fonctionnalités avant leur déploiement en production.
- Utilisation de données proches de la réalité (données de test réalistes ou données de production anonymisées).
- Tests effectués :
- Performances (charge, stress)
- Sécurité
- Compatibilité (navigateurs, systèmes d'exploitation, API, …)
- Acceptation utilisateur (UAT, User Acceptance Testing)
- Utilisé aussi pour tester les processus de déploiement eux-mêmes et vérifier que les mises à jour peuvent être effectuées sans erreur.
Sources :
- Microsoft Learn - Planification des environnements de développement, de test, de préproduction et de production (la préproduction doit correspondre étroitement aux logiciels de la production ; elle sert à tester le déploiement lui-même)
- Microsoft Learn - Azure Well-Architected Framework : Stratégies d'architecture pour les pratiques de déploiement sécurisé (déployer d'abord dans des environnements intermédiaires qui reflètent la production)
- The Twelve-Factor App - X. Parité dev/prod
- CNIL - Sécurité : Encadrer les développements informatiques (tests sur des données fictives ou anonymisées)
- CNIL - Guide RGPD du développeur : Tester vos applications (anonymiser les données personnelles importées depuis la production)
- Microsoft Learn - Azure Well-Architected Framework : Stratégies d'architecture pour les tests de performances (tests de charge et de stress, dans un environnement aussi proche que possible de la production)
- OWASP - Web Security Testing Guide (guide de référence pour les tests de sécurité des applications web)
- MDN Web Docs - Introduction au test en navigateur croisé (compatibilité avec différents navigateurs, appareils et systèmes d'exploitation)
- ISTQB - Certified Tester Foundation Level (CTFL) v4.0, syllabus section 2.2.1 (tests d'acceptation, dont le test d'acceptation utilisateur UAT)
Environnement de production (Prod)
- Environnement final, utilisé par les utilisateurs finaux.
- Doit être stable, sécurisé et performant, car il traite des données réelles et du trafic en direct.
- Déploiements préparés avec soin pour éviter les interruptions de service. Longtemps réalisés pendant des fenêtres de maintenance (service temporairement coupé), ils se font de plus en plus sans interruption grâce à des techniques comme :
- Le déploiement progressif (rolling update) : les instances de l'application sont remplacées progressivement (une par une ou par petits groupes) par la nouvelle version.
- Le déploiement blue-green : deux environnements de production identiques, entre lesquels on bascule le trafic.
- Le déploiement canary : la nouvelle version est d'abord proposée à une petite partie des utilisateurs.
- Surveillance (monitoring) permanente, avec des outils comme Prometheus (collecte de métriques), Grafana (tableaux de bord) ou la suite ELK/Elastic (centralisation et analyse des journaux), pour suivre :
- La disponibilité
- Les performances
- La sécurité
- Mise en place de politiques robustes :
- Sauvegardes régulières (et régulièrement testées)
- Plan de reprise après sinistre (disaster recovery) pour limiter les conséquences d'une panne majeure
Sources :
- AWS Whitepaper - Blue/Green Deployments on AWS : Introduction (déploiements quasi sans interruption, contrairement à l'approche traditionnelle où l'application peut rester indisponible longtemps)
- Microsoft Learn - Azure Well-Architected Framework : Stratégies d'architecture pour les pratiques de déploiement sécurisé (déploiements canary et blue-green, exposition progressive)
- Kubernetes Documentation - Deployments : Rolling Update Deployment (remplacement progressif des anciens Pods par les nouveaux)
- Martin Fowler - BlueGreenDeployment (2010 : deux environnements de production aussi identiques que possible, bascule du routeur de l'un à l'autre)
- Danilo Sato (martinfowler.com) - CanaryRelease (2014 : nouvelle version d'abord déployée pour un petit sous-ensemble d'utilisateurs)
- Google - The Site Reliability Workbook : Canarying Releases (déploiement partiel et limité dans le temps d'un changement, puis évaluation)
- Google - Site Reliability Engineering : Monitoring Distributed Systems (pourquoi surveiller ; latence, trafic, erreurs, saturation)
- Prometheus - Overview (outil open source de surveillance et d'alerte, qui collecte des métriques sous forme de séries temporelles)
- Grafana Labs - About Grafana (interroger, visualiser et explorer métriques, journaux et traces dans des tableaux de bord)
- Elastic - Suite ELK : Elasticsearch, Kibana, Beats et Logstash
- CNIL - Sécurité : Prévoir la continuité et la reprise d'activité (tester régulièrement la restauration des sauvegardes et le plan de reprise)
- NIST - SP 800-34 Rev. 1 : Contingency Planning Guide for Federal Information Systems (plans de continuité et de reprise après sinistre)

Note
Les environnements de déploiement sont au cœur des pratiques modernes de développement logiciel, telles que DevOps, l'intégration et le déploiement continus (CI/CD) et l'utilisation de conteneurs (ex. Docker). Ils permettent de gérer de manière structurée le cycle de vie d'une application et d'en garantir la cohérence, la qualité et la sécurité à chaque étape.
Sources :
DevOps
- DevOps est une culture et un ensemble de pratiques qui rapprochent les équipes de développement (Dev) et d'exploitation (Ops).
- Objectif : livrer des nouvelles versions plus souvent et de manière plus fiable, en automatisant l'intégration, les tests, le déploiement et la surveillance.
- Concepts clés :
- Pipelines CI/CD : enchaînement automatisé d'étapes (compilation, tests, déploiement) qui fait passer le code d'un environnement à l'autre (dev → staging → prod).
- Infrastructure as Code (IaC) : décrire l'infrastructure (serveurs, réseaux, configuration) dans des fichiers de code versionnés, pour obtenir des environnements reproductibles. Exemples : Terraform ou son équivalent open source OpenTofu (création de l'infrastructure), Ansible, Puppet ou sa version communautaire open source OpenVox (configuration des machines).
Info
OpenTofu et OpenVox sont des forks : des copies d'un logiciel reprises et développées par une communauté. Ils sont nés après que les éditeurs de Terraform (2023) et de Puppet (2025) ont restreint les conditions d'utilisation de leurs logiciels. Ils restent compatibles avec l'original et peuvent généralement le remplacer.
Sources :
Sources :
- AWS - Qu'est-ce que DevOps ? (combinaison de philosophies culturelles, de pratiques et d'outils pour livrer à un rythme élevé)
- Microsoft Learn - Qu'est-ce que DevOps ? (union du développement et des opérations : personnes, processus et technologie)
- Microsoft Learn - Qu'est-ce que la livraison continue ? (pipeline de mise en production à travers plusieurs environnements)
- Microsoft Learn - Qu'est-ce que l'infrastructure en tant que code (IaC) ? (un modèle IaC génère le même environnement à chaque déploiement)
- HashiCorp Developer - What is Terraform?
- HashiCorp - HashiCorp adopts the Business Source License (août 2023 : Terraform quitte la licence open source MPL 2.0 pour la BSL 1.1)
- Linux Foundation - Linux Foundation Launches OpenTofu: A New Open Source Alternative to Terraform (septembre 2023, licence MPL 2.0)
- OpenTofu - Site officiel
- Ansible Documentation - Introduction to Ansible (gestion de configuration, déploiement et provisionnement)
- Puppet Documentation - Puppet overview (gérer et automatiser la configuration des serveurs)
- Puppet (Perforce) - Our Plans for Open Source Puppet in 2025 (novembre 2024 : dès début 2025, nouvelles versions distribuées depuis un dépôt privé, gratuites jusqu'à 25 nœuds, licence commerciale au-delà)
- Vox Pupuli - OpenVox (version communautaire open source de Puppet, licence Apache 2.0, compatible avec le code Puppet existant)
- The New Stack - OpenVox: The Community-Driven Fork of Puppet Has Arrived (première version d'OpenVox en janvier 2025)
CI/CD (Continuous Integration / Continuous Delivery ou Deployment)
- CI (intégration continue) : chaque développeur intègre fréquemment (au moins une fois par jour) ses modifications dans un dépôt partagé. Chaque intégration déclenche automatiquement une compilation et des tests, afin de détecter les erreurs le plus tôt possible.
- CD : le sigle recouvre deux pratiques voisines.
- Continuous Delivery (livraison continue) : chaque modification validée est automatiquement construite, testée et déployée jusqu'en pré-production. Elle est prête à partir en production à tout moment, mais la mise en production est déclenchée par une validation humaine.
- Continuous Deployment (déploiement continu) : toute modification qui passe l'ensemble des tests automatisés est déployée en production sans intervention humaine.
- Outils populaires : GitHub Actions, GitLab CI/CD, Jenkins, CircleCI, Azure Pipelines.
Sources :
- Martin Fowler - Continuous Integration (révisé en janvier 2024 : chaque membre de l'équipe intègre ses modifications au moins une fois par jour ; chaque intégration est vérifiée par une compilation et des tests automatisés)
- AWS Whitepaper - Practicing Continuous Integration and Continuous Delivery on AWS : What is continuous integration and continuous delivery/deployment? (définitions de CI, de la livraison continue et du déploiement continu)
- AWS - What is Continuous Delivery? (livraison continue : déploiement en environnement de test ou de pré-production, puis approbation manuelle ; déploiement continu : sans approbation explicite)
- Martin Fowler - ContinuousDelivery (distinction entre livraison continue et déploiement continu)
- GitHub Docs - Présentation des GitHub Actions
- GitLab Docs - Get started with GitLab CI/CD
- Jenkins - User Documentation
- CircleCI - Documentation
- Microsoft Learn - Qu'est-ce qu'Azure Pipelines ?

Docker et la conteneurisation
- Docker permet d'emballer une application et toutes ses dépendances (bibliothèques, configuration, …) dans une image. À partir de cette image, on lance des conteneurs : des processus isolés du reste de la machine, plus légers qu'une machine virtuelle car ils partagent le noyau du système d'exploitation hôte.
- Avantages : cohérence entre environnements (dev, staging, prod), isolation, rapidité de déploiement.
- En CI/CD, on construit une seule image, que l'on teste puis déploie telle quelle dans tous les environnements. Seule la configuration change d'un environnement à l'autre.
- Kubernetes est un orchestrateur de conteneurs très utilisé pour exécuter en production des images construites avec Docker. Il gère notamment :
- Le déploiement à grande échelle et les mises à jour sans interruption
- La mise à l'échelle (ajout ou retrait d'instances selon la charge, y compris automatiquement)
- La tolérance aux pannes (redémarrage ou remplacement des conteneurs défaillants)
- La répartition de la charge entre les instances
Sources :
- Docker Docs - What is an image? (paquet standardisé contenant les fichiers, bibliothèques et configurations nécessaires à un conteneur)
- Docker Docs - What is a container? (processus isolé ; les conteneurs partagent le noyau de l'hôte, contrairement aux machines virtuelles)
- The Twelve-Factor App - V. Assemblez, publiez, exécutez (un même assemblage, combiné à la configuration de chaque déploiement)
- The Twelve-Factor App - III. Configuration (la configuration varie d'un déploiement à l'autre, pas le code)
- Kubernetes Documentation - Overview (répartition de charge, déploiements et retours arrière automatisés, auto-réparation, mise à l'échelle horizontale)
- Kubernetes Documentation - Horizontal Pod Autoscaling (ajustement automatique du nombre d'instances selon la demande)
- Kubernetes Blog - Don't Panic: Kubernetes and Docker (décembre 2020 : les images produites avec Docker fonctionnent avec tous les environnements d'exécution de Kubernetes)
- CNCF - 2025 Annual Cloud Native Survey (janvier 2026 : 82 % des utilisateurs de conteneurs exécutent Kubernetes en production)
Tip
En combinant DevOps + CI/CD + Docker/Kubernetes, les équipes réduisent fortement les écarts entre environnements, et donc les erreurs du type « ça marchait sur ma machine ». Des différences subsistent toutefois (données, volume de trafic, configuration) : c'est pourquoi la pré-production et le monitoring en production restent indispensables.
Sources :
- The Twelve-Factor App - X. Parité dev/prod (réduire l'écart entre développement et production)
- Microsoft Learn - Azure Well-Architected Framework : Stratégies d'architecture pour les tests de performances (l'environnement de test doit refléter la production aussi étroitement que possible)
- Google - Site Reliability Engineering : Monitoring Distributed Systems