
DEVOPS
Le terme DevOps représente une culture d’entreprise se concentrant sur l’union des équipes de Développement (Dev) et d’Opérations (Ops). Cette culture a pour objectif principal d’accélérer l’implémentation de nouvelles fonctionnalités, en supprimant les barrières traditionnellement présentes en entreprise.
Plus récemment, on parle même de DevSecOps, où la sécurité est totalement intégrée aux pratiques habituelles.
Les bénéfices de la culture DevOps sont multiples :
- Réduction du temps de livraison en production
- Augmentation de l’agilité et des possibilités d’innovation
- Stabilité des systèmes
- Meilleure réactivité face aux pannes
En pratique
DevOps commence au même endroit que toute application : lorsque le business a une idée. Cette idée, concrète ou non, sera généralement exprimée sous la forme d’une user story. Cette story sera ensuite découpée en features puis en tasks. Cette découpe (qui peut varier selon les équipes) donne une vision à la fois de haut niveau et très détaillée des attentes du business : un développeur se concentrera sur une task ̧un testeur sur une feature, et ainsi de suite. Ces work items peuvent ensuite être regroupés dans des backlogs, des dashboards, etc. Chaque partie prenante a, dès lors, une visibilité claire de l’état et de l’évolution du système.
Ensuite, la culture DevOps va insister sur l’automatisation des tâches du quotidien :
- Une fois validé, le code source est préparé pour être déployé
- Le code source est :
- compilé à chaque changement
- testé automatiquement à chaque changement (tests unitaires, tests d’intégration, etc.)
- analysé à chaque changement (respect des bonnes pratiques, vérification des failles de sécurités connues, vérifications des licences open source, etc.)
- soumis au peer review (revue par des collègues)
- automatiquement déployé dans un environnement de test ou d’intégration
- prêt à être déployé en production (soit automatiquement soit à volonté)
Cette automatisation va souvent plus loin, allant jusqu’à intégrer l’infrastructure :
- Gestion de l’infrastructure via du code source (Infrastructure-as-Code)
- Déploiement automatique de l’infrastructure
- Infrastructure rendue immutable
La culture DevOps implique de veiller au bon fonctionnement des applications en production, et inclut également :
- Du monitoring et de la télémétrie sont mis en place et accessibles aisément par toutes les parties prenantes via des dashboards et des requêtes
- Des alertes automatiques et pertinentes sont configures
- Les erreurs sont détectées et corrigées le plus tôt possible
- Les correctifs sont livrés rapidement et automatiquement via le processus standard (pas d’intervention en production)
- L’équipe responsable de la réalisation d’une application en reste responsable une fois l’application livrée
Automatisation ne veut bien entendu pas dire perte de contrôle. Le code est soumis à des règles strictes avant d’être déployé, et les déploiements en environnement sensibles restent sous la tutelle des responsables.
DevOps est avant toute chose une culture d’entreprise. Cela signifie que ses pratiques n’impactent pas seulement les développeurs ou les opérations, mais bien toutes les parties prenantes du système d’information.
La notion d’équipe elle-même évolue : les équipes de développement et les équipes opérations travaillent conjointement et ont connaissance des besoins du business. Une équipe est composée de membres de chaque service. De la sorte, chacun peut voir venir les risques et participer à la réalisation, et ce dès le début. De plus, une équipe n’est plus formée autour d’un projet, mais plutôt d’un produit, une ou plusieurs applications généralement, qu’elle maintient jusqu’à sa fin de vie. Cette approche responsabilise les membres de l’équipe et aide à maintenir la connaissance.
L’automatisation intensive et de la culture d’innovation font que les cycles de releases se réduisent, passant de communément plusieurs mois à quelques jours, voire quelques heures seulement. Lorsqu’une nouvelle fonctionnalité est déployée en production, les parties prenantes reçoivent des retours rapidement des utilisateurs et peuvent adapter leur réalisation.
A la suite logique de l’automatisation, de l’innovation et de la fréquence de déploiement, une culture d’apprentissage continue se forme. Les découvertes d’une équipe deviennent des bonnes pratiques globales, les erreurs des uns préviennent les pannes des autres. Toutes les parties prenantes apprennent et participent à l’apprentissage, augmentant sans cesse la base de connaissances de l’entreprise.
Plusieurs pratiques très concrètes accompagnent DevOps :
Continuous Integration & Continous Delivery (CI/CD)
- Compilation automatique du code source
- Vérification des failles de sécurité
- Lancement des tests automatisés
- Déploiements automatiques
Infrastructure-as-Code
- Infrastructure définie via du code
- Infrastructure déployée automatiquement
- Infrastructure immutable
- Réplication des environnements
Monitoring continu
- Télémétrie
- Dashboards
- Affichage de la santé des applications
- Alertes
Gestionnaire de sources
- Git
Agile
- Scrum
- Lean
- Kanban