Introduction au DevOps
Culture, pratiques et outils pour livrer du logiciel plus vite et plus sûrement
1. Qu'est-ce que le DevOps ?
Le DevOps (contraction de Development et Operations) est une culture et un ensemble de pratiques visant à
rapprocher les équipes de développement (qui écrivent le code) et les équipes d'exploitation (qui font tourner ce
code en production). L'objectif : livrer des logiciels plus rapidement, plus fréquemment et de manière plus fiable,
en réduisant les frictions entre les deux mondes.
Historiquement, développeurs et opérationnels travaillaient en silos : les développeurs livraient du code "qui
marche chez moi", et les équipes ops devaient le déployer et le maintenir sans toujours en comprendre les
rouages. Le DevOps casse cette frontière en partageant la responsabilité de bout en bout, du code jusqu'à la
production.
Les trois piliers du DevOps
• Culture : collaboration, responsabilité partagée, apprentissage continu à partir des échecs ("blameless
postmortems").
• Pratiques : intégration continue, déploiement continu, infrastructure as code, monitoring.
• Outils : automatisation à chaque étape (build, test, déploiement, supervision) pour réduire les tâches manuelles
et les erreurs humaines.
DevOps n'est pas...
• ...un poste unique appelé "DevOps Engineer" qui ferait tout à la place des autres (même si ce titre existe dans
les faits).
• ...un simple ensemble d'outils : sans changement de culture et de collaboration, les outils seuls ne suffisent pas.
• ...réservé aux grandes entreprises : les principes s'appliquent à des équipes de toute taille.
Guide - Introduction au DevOps Page 1
2. Le cycle DevOps (boucle infinie)
Le DevOps est souvent représenté par une boucle infinie en huit étapes, illustrant un flux continu plutôt qu'un
processus linéaire avec un début et une fin.
Étape Objectif Exemples d'outils
Plan Définir les besoins, prioriser Jira, Trello, Linear
Code Écrire et versionner le code Git, GitHub, GitLab
Build Compiler / packager l'application Maven, Gradle, npm, Docker
Test Valider automatiquement la qualité JUnit, pytest, Selenium
Release Préparer la mise en production Jenkins, GitLab CI, GitHub Actions
Deploy Déployer en environnement cible Ansible, Kubernetes, Terraform
Operate Faire fonctionner en production Kubernetes, AWS/Azure/GCP
Monitor Surveiller, détecter les anomalies Prometheus, Grafana, ELK, Datadog
Après Monitor, les retours d'observation (bugs, performances, retours utilisateurs) alimentent à nouveau la phase
Plan : c'est ce qui ferme la boucle et permet une amélioration continue.
Guide - Introduction au DevOps Page 2
3. Intégration et déploiement continus (CI/CD)
Le CI/CD est le cœur technique du DevOps : il automatise le chemin entre "le code est écrit" et "le code tourne en
production".
Intégration continue (CI)
Chaque modification de code poussée sur le dépôt déclenche automatiquement une compilation et une suite de
tests. Objectif : détecter les régressions le plus tôt possible, plutôt qu'à la fin d'un long cycle de développement.
Livraison / déploiement continu (CD)
• Continuous Delivery : le code est automatiquement préparé pour être déployé, mais la mise en production
reste déclenchée manuellement (validation humaine).
• Continuous Deployment : chaque changement validé par les tests est déployé automatiquement en production,
sans intervention humaine.
Exemple de pipeline CI/CD (GitHub Actions)
name: CI
on: [push]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Installer les dependances
run: pip install -r [Link]
- name: Lancer les tests
run: pytest
À chaque push, ce pipeline installe les dépendances puis exécute automatiquement les tests. En cas d'échec,
l'équipe est notifiée avant que le code ne soit fusionné.
Guide - Introduction au DevOps Page 3
4. Infrastructure as Code et conteneurisation
Infrastructure as Code (IaC)
Plutôt que de configurer manuellement des serveurs, l'IaC décrit l'infrastructure (serveurs, réseaux, bases de
données) sous forme de fichiers de configuration versionnés. Avantages : reproductibilité, traçabilité (via Git), et
possibilité de recréer un environnement identique à volonté.
# extrait Terraform : creation d'une instance cloud
resource "aws_instance" "serveur_web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "[Link]"
tags = {
Name = "serveur-web-prod"
}
}
Conteneurisation avec Docker
Un conteneur empaquette une application avec toutes ses dépendances dans une unité isolée et portable,
garantissant qu'elle fonctionne de la même façon partout (poste de dev, test, production).
# Dockerfile minimal pour une application Python
FROM python:3.12-slim
WORKDIR /app
COPY [Link] .
RUN pip install -r [Link]
COPY . .
CMD ["python", "[Link]"]
Orchestration avec Kubernetes
Quand une application se compose de nombreux conteneurs (microservices), Kubernetes automatise leur
déploiement, leur mise à l'échelle et leur résilience (redémarrage automatique en cas de panne).
Guide - Introduction au DevOps Page 4
5. Monitoring, sécurité (DevSecOps) et bonnes pratiques
Monitoring et observabilité
Une fois en production, il faut savoir si l'application fonctionne correctement. L'observabilité repose sur trois types
de données :
• Métriques : indicateurs chiffrés (CPU, latence, taux d'erreur) — outils : Prometheus, Grafana.
• Logs : traces textuelles des événements — outils : ELK Stack (Elasticsearch, Logstash, Kibana).
• Traces : suivi d'une requête à travers plusieurs microservices — outils : Jaeger, OpenTelemetry.
DevSecOps : intégrer la sécurité dès le départ
Le DevSecOps étend le DevOps en intégrant la sécurité à chaque étape du pipeline, plutôt que de la traiter
comme une vérification finale isolée — particulièrement pertinent dans un parcours cybersécurité.
• Analyse statique du code (SAST) : détection de vulnérabilités dans le code source avant compilation.
• Analyse des dépendances (SCA) : détection de bibliothèques tierces vulnérables (ex. Dependabot, Snyk).
• Scan d'images de conteneurs : vérifier qu'une image Docker ne contient pas de failles connues (ex. Trivy).
• Tests de sécurité dynamiques (DAST) sur l'application déployée en environnement de test.
Bonnes pratiques générales pour débuter
• Tout versionner : code, configuration d'infrastructure, pipelines eux-mêmes.
• Automatiser progressivement : commencer par les tests, puis le build, puis le déploiement.
• Petits déploiements fréquents plutôt que de grosses releases rares et risquées.
• Mettre en place un monitoring dès le premier déploiement, pas après un incident.
• Documenter les procédures et favoriser une culture sans recherche de coupable ("blameless") après un incident,
pour encourager le signalement rapide des problèmes.
Fin du guide — Introduction au DevOps
Guide - Introduction au DevOps Page 5