Concepts DevOps
Les concepts fondamentaux qui définissent les pratiques DevOps modernes.
CI/CD - Intégration et Déploiement Continus
Qu'est-ce que c'est ?
CI/CD représente l'ensemble des pratiques d'automatisation qui permettent de livrer du code de manière fréquente et fiable. L'intégration continue (CI) automatise les tests et la validation, tandis que le déploiement continu (CD) automatise la mise en production.
Les étapes clés :
Outils populaires :
Infrastructure as Code (IaC)
Qu'est-ce que c'est ?
L'Infrastructure as Code permet de gérer et provisionner l'infrastructure via des fichiers de configuration plutôt que par des processus manuels. Cela apporte les mêmes bénéfices que le code : versioning, review, tests.
Avantages :
- Reproductibilité : Même infrastructure partout
- Versioning : Historique des changements
- Automatisation : Déploiement en un clic
- Documentation : Le code EST la documentation
Outils populaires :
Conteneurisation
Qu'est-ce que c'est ?
La conteneurisation permet d'empaqueter une application avec toutes ses dépendances dans une unité standardisée. Les conteneurs sont légers, portables et assurent une cohérence entre les environnements.
Concepts clés :
Container
Instance exécutable d'une image
Image
Template immuable pour créer des containers
Registry
Stockage et distribution des images
Orchestration
Gestion à grande échelle (K8s)
Outils populaires :
Observabilité
Qu'est-ce que c'est ?
L'observabilité est la capacité à comprendre l'état interne d'un système à partir de ses outputs externes. Elle repose sur trois piliers : les logs, les métriques et les traces.
Les 3 piliers :
Logs
Enregistrement des événements du système
Métriques
Mesures numériques dans le temps
Traces
Suivi des requêtes à travers les services
Outils populaires :
GitOps
Qu'est-ce que c'est ?
GitOps est une approche opérationnelle qui utilise Git comme source de vérité pour l'infrastructure et les applications. Les changements sont effectués via des pull requests et automatiquement synchronisés.
Principes :
- Déclaratif : L'état désiré est défini dans Git
- Versionné : Historique complet des changements
- Automatisé : Réconciliation automatique
- Auditable : Traçabilité complète
Outils populaires :
Architecture Microservices
Qu'est-ce que c'est ?
L'architecture microservices décompose une application en services indépendants, déployables séparément. Chaque service a sa propre responsabilité et communique via des APIs.
Caractéristiques :
Single Responsibility
Chaque service a une responsabilité unique
Indépendance
Déploiement et scaling indépendants
Communication API
REST, gRPC, ou messages async
Data Ownership
Chaque service gère ses données
Technologies associées :
Blue-Green Deployment
Qu'est-ce que c'est ?
Stratégie de déploiement où deux environnements identiques (Blue et Green) tournent en parallèle. Blue est en production, Green reçoit la nouvelle version. On bascule le trafic instantanément.
Avantages :
Zéro downtime
Basculement instantané
Rollback rapide
Revenir à la version précédente en 1s
Validation complète
Tester avant basculement
Load balancing
Basculement transparent
Outils :
Canary Release
Qu'est-ce que c'est ?
Déploiement progressif d'une nouvelle version à un petit pourcentage d'utilisateurs d'abord (5%, 10%). Monitorage intensif, puis augmentation progressive si tout va bien.
Étapes :
Outils :
Auto-scaling et Infrastructure Elastique
Qu'est-ce que c'est ?
Ajustement automatique des ressources (CPU, mémoire, nombre de pods) en fonction de la demande. Les systèmes s'adaptent sans intervention humaine.
Types :
Horizontal scaling
Ajouter/retirer des instances
Vertical scaling
Augmenter les ressources d'une instance
Scheduled scaling
Basé sur horaires/calendrier
Predictive scaling
ML pour anticiper la charge
Outils :
Log Aggregation et Centralization
Qu'est-ce que c'est ?
Collecte centralisée de tous les logs de tous les services et infrastructure dans un seul endroit. Permet la recherche, analyse et alerting sur tous les logs.
Architecture typique :
Collection
Logstash, Fluentd, Filebeat
Storage
Elasticsearch, CloudWatch
Analysis
Kibana, Splunk, DataDog
Alerting
Patterns et anomalies
Stack populaire :
Configuration Management
Qu'est-ce que c'est ?
Gestion centralisée et versionée des configurations d'application (variables d'env, secrets, fichiers). Les configurations sont séparées du code et appliquées à l'exécution.
Types :
Configuration externe
Pas dans le code source
Secret Management
Chiffrement et rotation
Environment-specific
Dev, staging, prod différents
Hot reload
Mise à jour sans redémarrage
Outils :
Disaster Recovery & Business Continuity
Qu'est-ce que c'est ?
Planification et mise en place de stratégies pour maintenir les services en cas de sinistre. Incluant sauvegarde, réplication, et basculement automatique vers site de secours.
Indicateurs clés :
RTO
Temps max de récupération
RPO
Perte de données acceptable
Replication
Synchronisation données
Testing
Drills réguliers
Outils :
Performance Optimization
Qu'est-ce que c'est ?
Processus continu d'identification et d'élimination des goulots d'étranglement. Amélioration de la latence, throughput, utilisation ressources.
Domaines :
Application
Code, algorithmes, caching
Database
Indexing, queries, replication
Network
CDN, compression, latency
Infrastructure
Resource allocation, tuning
Outils :
Cost Optimization & FinOps
Qu'est-ce que c'est ?
Gestion optimale des dépenses cloud. Aligner les coûts avec la valeur métier. Éliminer les ressources gaspillées tout en maintenant la performance.
Stratégies :
Visibility
Tracer chaque coût
Waste reduction
Ressources inutilisées
Right-sizing
Dimensionnement optimal
Reserved instances
Tarifs réduits à long terme
Outils :
Release Management & Versioning
Qu'est-ce que c'est ?
Processus structuré pour planifier, tester et déployer des versions. Gestion des dépendances, coordination entre services, gestion des versions.
Composants :
Semantic Versioning
MAJOR.MINOR.PATCH
Changelogs
Tracer les changements
Dependency management
Pinning, compatibility
Release planning
Calendrier et processus