Qu’est-ce que DevOps ? Une approche novatrice pour la distribution rapide de logiciels de haute qualité

Qu’est-ce que DevOps ? Une approche novatrice pour la distribution rapide de logiciels de haute qualité

Le cycle de vie DevOps (également connu sous le nom de “pipeline de distribution continue” lorsqu’il est présenté de manière linéaire) consiste en une série de processus de développement itératifs et automatisés, ou flux, qui s’inscrivent dans un cycle de développement global, automatisé et itératif. L’objectif est d’optimiser la distribution rapide de logiciels de haute qualité. Si le nom et le nombre de flux peuvent varier selon les personnes interrogées, ils se résument généralement à six éléments clés.

Planification (ou idéation) : optimiser la valeur métier du produit

Dans ce flux de travail, les équipes définissent les nouvelles fonctions et fonctionnalités de la prochaine version, en s’appuyant sur les commentaires des utilisateurs finaux, les études de cas prioritaires et les contributions de toutes les parties prenantes internes. L’objectif de l’étape de planification est d’optimiser la valeur métier du produit en générant un backlog (journal) des fonctions en attente qui, une fois livrées, permettent d’obtenir le résultat recherché, générateur de valeur.

Développement : créer de nouvelles fonctionnalités

Cette étape de développement est dédiée à la programmation, où les développeurs testent, codent et construisent de nouvelles fonctionnalités ou améliorent celles existantes, en se basant sur les histoires des utilisateurs et les éléments de travail du backlog. Ils utilisent des pratiques courantes telles que le développement piloté par test (TDD), la programmation en binôme et les évaluations de code par les pairs. Les développeurs exécutent généralement une “boucle interne” d’écriture et de test du code sur leurs postes de travail locaux avant de l’envoyer dans le pipeline de distribution continue.

Intégration (ou CI/CD) : fusionner le nouveau code dans le code existant

Dans ce flux, le nouveau code est intégré dans le code existant, puis testé et empaqueté en un exécutable prêt à être déployé. Des tâches automatisées sont effectuées, telles que la fusion des changements de code dans une copie “maître”, la vérification du code à partir d’un référentiel de code source, la compilation automatique, les tests unitaires et le conditionnement en un exécutable. Le résultat de la phase d’intégration continue est stocké dans un référentiel binaire en vue de la phase suivante.

Déploiement continu : garantir qualité, conformité et sécurité

Le résultat de l’intégration est déployé dans un environnement d’exécution, généralement un environnement de développement, où des tests sont effectués pour assurer la qualité, la conformité et la sécurité. Si des erreurs ou des défauts sont identifiés, les développeurs peuvent les corriger avant que les utilisateurs finaux ne les remarquent. Différents environnements sont généralement mis en place pour le développement, les tests et la production, chacun exigeant des niveaux de qualité de plus en plus stricts. Il est recommandé de commencer par un déploiement concernant un sous-ensemble d’utilisateurs finaux avant de l’étendre à tous une fois la stabilité établie.

Opérations : garantir une exécution sans problème des fonctionnalités

Une fois que les fonctionnalités sont en production (le “jour 1”), les opérations du “jour 2” prennent le relais. Les équipes opérationnelles supervisent les performances, le comportement et la disponibilité des fonctionnalités afin de garantir une valeur ajoutée aux utilisateurs finaux. Elles veillent à ce que le réseau, le stockage, la plateforme, la capacité de calcul et la sécurité soient tous en ordre. En cas d’anomalie, l’équipe d’opérations identifie les incidents, avertit le personnel approprié, résout les problèmes et applique les correctifs nécessaires.

Apprentissage continu : collecter les commentaires des utilisateurs finaux

Ce flux consiste à recueillir les commentaires des utilisateurs finaux et des clients concernant les fonctionnalités, la performance, la valeur métier, etc. Ces commentaires sont ensuite intégrés à la phase de planification pour apporter des améliorations à la prochaine version et créer de nouvelles fonctionnalités. Il inclut également les enseignements tirés des opérations, qui permettent aux développeurs d’éviter proactivement les incidents déjà rencontrés. C’est à ce moment-là que l’on passe de la phase de planification à la phase d’amélioration continue.

Trois autres flux de travail continus sont également importants :

Tests continus : identifier les risques et les vulnérabilités

Le DevOps intègre des éléments de test à différents stades du cycle de vie. Les tests peuvent être effectués dès la planification (BDD – programmation pilotée par le comportement), pendant le développement (tests unitaires, tests de contrat), lors de l’intégration (analyses de code statique, analyses CVE, linting), lors du déploiement (tests de fumée, tests de pénétration, tests de configuration), pendant les opérations (tests du chaos, tests de conformité) et lors de l’apprentissage (tests A/B). Ces tests permettent d’identifier les risques et les vulnérabilités, et donnent aux services informatiques la possibilité d’accepter, d’atténuer ou de corriger ces risques.

Sécurité : intégrer la sécurité dès le début

Contrairement aux méthodologies traditionnelles et agiles qui ajoutent des mesures de sécurité après la distribution ou le déploiement, le DevOps s’efforce d’intégrer la sécurité dès le début, notamment lors de la planification. Cette approche, connue sous le nom de “déplacement vers la gauche”, permet de résoudre les problèmes de sécurité facilement et à moindre coût. Certaines organisations ont cependant rencontré des difficultés dans cette démarche, ce qui a donné naissance au DevSecOps.

Conformité : aborder la conformité réglementaire dès le début

Il est préférable de traiter la conformité réglementaire (gouvernance et risque) dès le début et tout au long du cycle de développement. Dans les secteurs réglementés, il est nécessaire de fournir un certain niveau d’observabilité, de traçabilité et d’accès à la façon dont les fonctionnalités sont livrées et gérées dans leur environnement opérationnel. Cela nécessite de planifier, développer, tester et appliquer les règles dans le pipeline de distribution continue et dans l’environnement d’exécution. Une auditabilité adéquate est essentielle pour prouver la conformité aux auditeurs tiers.

En adoptant une approche DevOps, les organisations peuvent améliorer considérablement la distribution rapide de logiciels de haute qualité tout en maintenant un niveau élevé de sécurité et de conformité. Le DevOps offre une manière nouvelle et novatrice de développer et de distribuer des logiciels, en permettant aux équipes de travailler de manière plus collaborative, itérative et efficace.