Gouvernance
DevOps : de la philosophie aux outils
Par Laurent Delattre, publié le 14 septembre 2020
Au cœur des nouvelles approches qui favorisent une transformation numérique et métamorphosent les DSI, DevOps cherche à fluidifier la chaîne de création des applications de l’entreprise en supprimant les silos entre développeurs et équipes d’exploitation. C’est avant tout une philosophie et une organisation, mais elle se concrétise par quelques briques techniques fondamentales…
Concaténation de Development (développement) et Operations (exploitation), le terme DevOps est apparu vers 2007. Toutefois les méthodologies pour y arriver et les outils pour la concrétiser auront mis plus d’une dizaine d’années à arriver à maturité et à se généraliser.
DevOps vise à fluidifier la production logicielle, des phases de développement jusqu’à l’exploitation opérationnelle en passant par l’intégration, les tests, la livraison, le déploiement et la maintenance opérationnelle.
DevOps est avant tout une philosophie visant à rapprocher deux fonctions informatiques longtemps gérées en silos et aux objectifs souvent contradictoires : le développement (animé par la réactivité, l’évolutivité et l’Agile) et l’exploitation (animée par la fiabilité, la sécurité, la stabilité).
Dans un monde où l’entreprise est contrainte d’offrir toujours plus rapidement des services innovants, les développeurs ne veulent plus être contraints par des problématiques de réactivité de l’IT et de déploiements des outils et de leurs applications. La philosophie DevOps met en place une organisation qui favorise la coordination et la collaboration entre les fonctions Dev et les fonctions Dev de la chaîne logicielle jusqu’ici bien trop cloisonnées. Dès lors son adoption est d’abord un changement de culture aussi bien au niveau des métiers, des équipes de développement que des équipes d’exploitation et gestion de l’infrastructure. Ce changement de culture vise à imposer une démarche collaborative où tous les intervenants de la chaîne – qui va des besoins métiers à leur concrétisation en production – sont impliqués dès le début du projet afin que tous aient un minimum de compréhension et de vision des bénéfices attendus. Tous partagent une responsabilité dans la création et le fonctionnement de l’application.
Ce changement de culture s’accompagne d’une inévitable réorganisation, d’une redéfinition des périmètres et responsabilités ainsi que d’une redéfinition de tous les processus existants au niveau du développement, du déploiement et de la production.
DevOps met en avant une culture basée sur la transparence (de ce que chacun fait), la communication et la collaboration entre les développeurs, les opérationnels et les métiers. Avec un même objectif final : la satisfaction des utilisateurs finaux.
Au-delà de cette culture de la transparence et de la communication, DevOps insuffle aussi une culture de l’amélioration permanente. Améliorer les logiciels eux-mêmes, mais aussi améliorer les outils et processus des développeurs, et améliorer les processus de tests et de déploiement.
C’est pourquoi, la philosophie DevOps est indissociable d’une démarche d’intégration continue et de déploiement continu qui constitue la partie “technique” de DevOps.
Une partie technique qui repose sur quelques briques fondamentales :
1 – Les outils collaboratifs
Nous l’avons dit, DevOps repose d’abord et surtout sur une meilleure communication et collaboration entre développeurs, opérationnels et métiers. Dans un monde où le télétravail prend une place essentielle, bien des équipes DevOps s’appuient sur des plateformes comme Slack ou Microsoft Teams pour fluidifier la communication. D’autant que ces derniers offrent de multiples mécanismes d’intégration avec la chaîne de production des applications ainsi que des chatbots pour s’interfacer avec les systèmes et réaliser des automatisations.
2 – Git
Disposer d’un référentiel de codes sources intégrant des mécanismes de contrôle de versions est une brique fondamentale de toute chaîne DevOps.
Et en matière de référentiel de codes sources, Git s’est imposé comme un standard de fait.
Son implémentation en entreprise s’appuie de plus en plus sur des services SaaS comme GitHub ou GitLab.
3 – Les chaînes d’intégration, test et livraison en continu
Disposer d’une véritable chaîne d’industrialisation des développements et des déploiements est une brique fondamentale pour concrétiser l’approche DevOps. Les chaînes CI/CD sont au cœur de cet univers. Elles unifient les principes de « Continuous Integration » (pour permettre aux développeurs d’itérer très fréquemment), de « Continuous Delivery » (pour permettre de déployer automatiquement les nouvelles applications et nouvelles versions sur les environnements d’infrastructure) et de « Continuous Testing » (pour s’assurer de la qualité des livrables avec des tests – de régression, de stabilité et de performance – automatisés au sein de la chaîne CI/CD).
Longtemps concrétisées par un assemblage parfois très manuel d’outils open-source, ces chaînes reposent désormais sur des « suites CI/CD », des plateformes clés en main comme GitLab, CloudBees CI (basé sur Jenkins), ou Azure DevOps/Azure Pipelines.
4 – L’Infrastructure as Code
Il ne peut y avoir de chaîne DevOps sans un maximum d’automatisation du déploiement des applications sur l’infrastructure. La solution passe par la possibilité de définir et paramétrer l’infrastructure à l’aide de code. Les outils d’Infrastructure as Code tels que Terraform et Ansible (mais aussi AWS CloudFormation ou Azure Resource Manager) automatisent le processus de configuration de l’infrastructure qui héberge les applications, que cette infrastructure réside sur site, sur le cloud ou sur un peu des deux. De ces outils dépendent la cohérence des processus mis en place et la bonne collaboration entre les Dev et les Ops. Avec cette idée de pouvoir industrialiser et donc répéter les mêmes configurations encore et toujours. L’infrastructure as code limite les erreurs de configuration humaines et restreint les risques de conflits par manque d’uniformité. Cette approche permet ainsi de fournir rapidement des environnements stables et à grande échelle.
5 – L’orchestration
Il est difficile de concrétiser une approche DevOps sur des infrastructures anciennes aux approches traditionnelles en silos. Des architectures modernes comme un cloud privé sous VMware ou Nutanix facilitent l’orchestration de VMs. Désormais elles facilitent aussi l’orchestration des containers en intégrant Kubernetes au cœur de la plateforme (vSphere 7, Nutanix Karbon).
Par leur indépendance à l’infrastructure, les containers sont au cœur de la plupart des approches DevOps. Ce qui explique aussi l’adoption rapide de Kubernetes devenu le standard de fait de l’orchestration de containers au-dessus d’une infrastructure.
6 – Le Monitoring & les KPI
Il ne peut y avoir d’automatisation et de stabilité sans une surveillance intensive et continue. Des suites comme ELK (ElasticSearch, Logstash et Kibana) se sont imposées dans l’univers DevOps pour centraliser tous les logs et métriques à la fois produits par les logiciels, par la chaîne CI/CD et par l’infrastructure. Mais cette centralisation du monitoring peut aussi s’effectuer via d’autres plateformes telles que Splunk. Au-delà du monitoring, toute cette récolte d’informations doit aussi permettre aux entreprises de définir des indicateurs pour assurer le suivi des applications, s’assurer de l’amélioration permanente des processus, anticiper les problèmes, etc. D’où le succès de plateforme comme Prometheus (notamment dans l’univers Kubernetes) mais aussi de solutions comme New Relic, AppDynamics, Dynatrace.
Pour finir, il est essentiel de rappeler qu’une approche DevOps n’est pas un assemblage d’outils. C’est avant tout une philosophie qui impose un changement de culture et d’organisation. Elle nécessite une volonté forte de la direction générale, une étroite collaboration entre les équipes et au sein des équipes, et surtout du bon sens pour l’implémenter en fonction de la réalité de l’entreprise, de son infrastructure et de la maturité des équipes IT.
Une Web Matinale dédiée à DevOps
Pour tout savoir sur DevOps, ne ratez pas la Web Matinale d’IT For Business, le 23 septembre 2020 dès 9H30.
Avec les témoignages de :
* Majed Elbour, DevOps Manager chez BNP Paribas CIB
* Olivier Heltz, DSI de Bouygues Telecom
* Julien Ippolito, expert DevOps chez Foncia
* Thomas Jacques, CTO de TF1
* Frédéric Pernias, Entreprise Architect et Consultant chez Ippon Technologies
* Cyril Tobot, Cloud Architect et Lead DevOps chez 24 Sèvres (Groupe LVMH)
Et la participation de DevOps Rex, Micro Focus, F5/Nginx, Check Point, New Relic…
Inscrivez vous ici : DevOps : une approche qui s’installe dans les entreprises