Culture & enjeux du DevOps
Introduction
début ~2010 patrick debois
avant le DevOps, il y avait une fluidification en waterfall : conception détaillée avec un suivi de contrôle humain rigoureux avant chaque livraison sur le modèle Waterfall → trop de rigueur, trop séquentiel et ne suit pas les évolutions
DevOps : ensemble de pratiques qui met l'accent sur la collaboration et la communication entre les dev de logiciels et les pro des opérations informatiques, en automatisant le processus de livraison de logiciels et les changements d'infrastructure
ce n'est pas une méthodo mais une philo
valeurs & notions
Fondamentaux
calmsLe :DevOps cultureest automationun leanmouvement measurementvisant sharingà réconcilier les équipes de développement (Dev) et d'exploitation (Ops) pour fluidifier le cycle de vie logiciel via l'automatisation, la collaboration et l'agilité.
Modèle C.A.L.M.S.
réduireCulture : Valeurs communes, confiance et droit à l'erreur.
Écosystème et rôles
IA vs Automatisation :
outils
- git / gitlab/ github
- terraform / kubernets / jenkins / ansible
- AWS / Azure
- SAM (serverless application model)
processus
- integration continue : le but est de tester aussi souvent et autant que possible les non regressions du livrable pour detecter les bugs le plus tot possible
- livraison continue : le but est de tester et livrer une appli à chaque étape de son cycle de vie (recette, pré-production, répétition, production). Cette étape est réalisée après validation des tests effectués en intégration.
- Déploiement continue: nécessite que les processus d'integration et livraison continue aient ete relaises avec succes pour deployer une appli en production. Auprès déploiement, il est nécessaire de mesurer les impacts à l'aide d'outils de mesure de performance et de supervision. En cas de problème, un processus automatisé de retour en arrière peut être exécuté (rollback)
Version Control System (VCS) & Intégration Continue
voir la fiche sur les généralités Git et GitLab
La gestion de l'information technique (code, documentation, configuration) est essentielle et nécessite une traçabilité rigoureuse.
devops & agile
- agile : livrer plus souvent en plus petite quantité à la fin de chaque sprint
- devops & agile : un livrable est automatiquement déployé en prod dès l'intégration
=) livraison fréquente et incrémentale qui permette des maj régulière en cycle court
Cependant, la méthode AGILE favorise les performances des développeurs, qui produisent de plus en plus de logiciels mais les ops ne peuvent pas toujours suivre. Il faut mettre en place des solutions :
- sensibilisation (dev en observation des ops pendant x jours)
- partage (documentation, PI / roadmap, ...)
- expérimentation (test recette validation, ...)
- the 3 ways (The Phoenix Project de Gene Kim)
-
La première voie (le flux) : Elle se concentre sur l'accélération du travail de la gauche (le développement) vers la droite (les opérations et le client), en éliminant les goulots d'étranglement et en automatisant le maximum de tâches.
-
La deuxième voie (le feedback) : Elle consiste à créer des boucles de rétroaction rapides de la droite vers la gauche, afin que les développeurs soient immédiatement alertés des problèmes survenant en production.
-
La troisième voie (l'apprentissage continu) : Elle vise à instaurer une culture d'entreprise favorisant l'expérimentation, la prise de risque et l'apprentissage par l'échec pour améliorer continuellement le système.
-
Pour illustrer simplement ce concept, imaginez une chaîne de fabrication où la première voie pousse le produit rapidement sans interruption, la deuxième voie déclenche une alarme immédiate si un défaut de montage est détecté par les testeurs, et la troisième voie encourage les ingénieurs à inventer de nouveaux outils chaque semaine pour rendre l'usine encore plus performante. Cela permet de réconcilier la vitesse exigée par l'approche Agile avec la fiabilité requise par les Ops.
Time to Market / TTM
time to market : durée nécessaire pour qu'une fonctionnalité soit introduite sur le marché.
Intervalle de temps entre la prise de décision de créer une fonctionnalité
vélocité : vitesse constante sur la prod / projet / ....
Continuous Delivery vs Continuous Deployment
Ces notions se distinguent par une seule chose : l'intervention humaine avant la mise en production.
L'un donne le contrôle, l'autre maximise la vitesse
