#DevOps et Cloud
DevOps est une culture et un ensemble de pratiques qui visent à unifier le développement (Dev) et les opérations (Ops). L'objectif est de livrer des changements de manière rapide, fiable et fréquente.
#Principes fondamentaux
#CI/CD Pipeline
L'intégration continue (CI) vérifie automatiquement chaque changement de code. Le déploiement continu (CD) pousse automatiquement en production les changements validés.
1# Exemple GitHub Actions2name: CI/CD3on: [push, pull_request]4 5jobs:6 test:7 runs-on: ubuntu-latest8 steps:9 - uses: actions/checkout@v410 - uses: actions/setup-node@v411 with:12 node-version: '20'13 - run: npm ci14 - run: npm test#Infrastructure as Code (IaC)
Au lieu de configurer manuellement des serveurs, on décrit l'infrastructure dans des fichiers versionnés.
Terraform: provisionne des ressources cloud (AWS, GCP, Azure).
Ansible: configure des machines.
Pulumi: IaC en langages de programmation (TypeScript, Python).
CloudFormation: IaC spécifique AWS.
1# Exemple Terraform2resource "aws_instance" "web" {3 ami = "ami-0c55b159cbfafe1f0"4 instance_type = "t2.micro"5 6 tags = {7 Name = "web-server"8 Environment = "production"9 }10}#Conteneurs et orchestration
Docker: empaqueter une application avec ses dépendances dans une image portable.
Kubernetes: orchestrer des conteneurs à grande échelle (scaling, self-healing, rolling updates).
1# Build et push une image Docker2docker build -t myapp:v1 .3docker push registry.example.com/myapp:v14 5# Déployer sur Kubernetes6kubectl apply -f deployment.yaml7kubectl rollout status deployment/myapp#Observabilité
Les trois piliers de l'observabilité permettent de comprendre ce qui se passe en production:
Logs: événements textuels horodatés. Structurés (JSON) pour être requêtables.
Métriques: valeurs numériques agrégées (latence p99, taux d'erreurs, CPU).
Traces: suivre une requête à travers plusieurs services (distributed tracing).
#Environnements et promotion
Une pratique saine consiste à déployer d'abord en staging avant la production:
Dev: environnement local ou partagé pour le développement.
Staging: réplique de la prod pour les tests finaux.
Production: l'environnement visible par les utilisateurs.
Les changements progressent de dev à staging à prod, avec des validations à chaque étape.