En tant que précurseur de DevOps, et donc de l'intégration, la livraison et le déploiement continus (CI/CD), la méthode agile est étroitement liée à ces approches. Comprendre la philosophie de la méthode agile peut vous aider à mieux exploiter le CI/CD tout en implémentant un pipeline CI/CD mettant en pratique la méthode agile.
Malheureusement, des années de frameworks, de stratégies et de consultants ont éclipsé les principes fondamentaux de la méthode agile et l'ont réduite à un ensemble rigide de règles. Mais si l'on ne comprend pas les principes, il est beaucoup plus difficile de les appliquer efficacement.
Par-dessus tout, la méthode agile est un état d'esprit, une façon de concevoir le processus de développement logiciel.
La méthode agile reconnaît que l'objectif est de délivrer un logiciel fonctionnel et que l'acceptation du changement et la promotion de la collaboration entre les individus est un moyen plus efficace d'y parvenir que de suivre scrupuleusement un plan répondant à un ensemble contractuel d'exigences.
Les principes énoncés dans le manifeste pour le développement agile renforcent ces valeurs et proposent des techniques pour les mettre en œuvre. Il s'agit notamment d'accorder de l'importance aux équipes et à leurs interactions, et de délivrer des logiciels fonctionnels dans le cadre de cycles fréquents et itératifs, qui permettent à l'équipe de s'adapter aux changements.
Le raisonnement est simple : si vous définissez des exigences immuables dès le départ et que vous suivez rigoureusement un plan pour les satisfaire, vous perdez la flexibilité de pouvoir adapter ce que vous développez à mesure que vous en apprenez davantage et que le contexte et les besoins de vos utilisateurs évoluent. L'approche agile consiste à fixer un objectif final et à progressivement définir les détails de la manière de l'atteindre.
Ces principes agiles ont inspiré le mouvement DevOps, qui a lui-même donné naissance aux méthodologies CI/CD.
Si la méthode agile, du moins à ses débuts, était axée sur le fonctionnement de l'équipe de développement, la méthode DevOps a étendu son champ d'action aux processus en aval et au travail nécessaire pour passer de l'écriture du code à sa publication.
Le DevOps met l'accent sur l'importance de décloisonner les équipes et de favoriser la collaboration entre elles pour atteindre un objectif commun : remettre aux utilisateurs des logiciels fonctionnels et utiles. L'intégration, la livraison et le déploiement continus sont des pratiques DevOps qui visent à accélérer la livraison de logiciels sans faire de compromis sur la qualité.
En automatisant le plus grand nombre possible d'étapes du processus, l'environnement d'intégration continue assure des retours d'information rapides pour raccourcir le délai de mise à disposition des logiciels aux utilisateurs.
Compte tenu de l'histoire des méthodes agile et DevOps, vous ne serez sans doute pas surpris d'apprendre que de nombreux éléments d'un pipeline de build vous aideront également à travailler de manière agile. Pour commencer, la pratique recommandée du CI consistant à soumettre des commits de manière fréquente vous encourage à travailler par petits blocs.
La décomposition des fonctionnalités en plus petits fragments est essentielle pour assurer un processus de build et de publication itératif. Le but étant de s'assurer que tout commit peut progresser dans le workflow CI/CD et potentiellement être publié, chaque commit doit aboutir à quelque chose de fonctionnel. Ainsi, l'adoption de cette approche vous aide à rester concentré sur la livraison de logiciels fonctionnels.
Les méthodes agile et DevOps insistent toutes deux sur la valeur de la collaboration et de la communication. Bien que l'objectif initial de DevOps soit la collaboration entre les équipes de développement et les équipes opérationnelles, les avantages peuvent aller bien au-delà.
En incluant des environnements de préproduction dans votre pipeline de build et en offrant une visibilité sur ce qui a changé dans chaque build via des tableaux de bord, vous pouvez partager les progrès avec d'autres parties de votre organisation, telles que les équipes de marketing, de conception ou de sécurité, et solliciter leurs remarques.
Les tests automatisés constituent un élément central de tout pipeline CI/CD. Ils permettent d'obtenir un retour d'information rapide sur les modifications apportées au code et de garantir la qualité des builds. L'exécution de tests automatisés sur chaque commit est une étape importante pour garantir la livraison d'un logiciel fonctionnel.
L'importance de la publication fréquente de logiciels pour les utilisateurs figure parmi les priorités de l'agenda agile, et un pipeline CI/CD est un outil clé pour appliquer ce principe. L'automatisation des étapes du processus de publication a permis aux équipes d'accélérer considérablement leurs publications et de déployer des modifications quotidiennement, voire toutes les heures, ce qui est bien plus fréquent que ce qui avait été envisagé lors de la rédaction du manifeste.
Enfin, les cycles de feedback continus qui forment le cœur du pipeline CI/CD et permettent une amélioration continue, tant du logiciel en cours de développement que du processus qui le permet, renforcent également le principe agile selon lequel l'équipe doit régulièrement analyser son processus et l'adapter en conséquence. La mise en place et l'écoute des boucles de feedback contribueront à établir le rythme de développement durable préconisé dans le manifeste.
Bien que l'implémentation d'un pipeline CI/CD puisse favoriser l'adoption d'un état d'esprit agile, il ne s'agit pas plus d'une solution miracle que les différents frameworks et solutions agiles qui ont proliféré depuis la définition de l'agilité.
Cela dit, certains des anti-patterns courants dans les méthodologies CI/CD peuvent également servir d'indicateurs que votre organisation n'est pas aussi agile que vous le souhaiteriez.
Un obstacle fréquent à la mise en œuvre d'un pipeline de build efficace et à l'adoption des principes agiles pour un environnement d'intégration continue est l'introduction de diverses étapes manuelles dans le processus de publication. Cela peut inclure le passage par divers comités consultatifs ou l'obligation de fournir des notifications de modification détaillées et des évaluations des risques, avant qu'une nouvelle version ne puisse être déployée en production (ou même en préproduction).
L'objectif de ces procédures est généralement de garantir une certaine supervision et un certain contrôle des publications. Cependant, ces procédures ralentissent considérablement le processus et ignorent la vocation des tests automatisés, lesquels devraient vous donner confiance en votre build.
La démonstration de la robustesse du pipeline CI/CD à l'aide d'indicateurs peut permettre de minimiser les craintes. Simultanément, les tableaux de bord et les notifications automatisées permettent de réduire les tâches manuelles nécessaires pour tenir les parties prenantes informées des modifications actuellement dans le pipeline.
Un autre danger commun est l'apparition de demandes en faveur d'un ralentissement du processus et d'un regroupement des modifications au sein de publications moins fréquentes.
Si, pour certains produits, il convient de regrouper les modifications au sein de mises à jour hebdomadaires ou bimensuelles, une fréquence inférieure risque de vous priver de l'avantage que constitue le fait de voir vos modifications en production et de profiter des feedbacks pour vos prochaines étapes.
Communiquer la raison d'être des pratiques agiles d'intégration continue, DevOps et CI/CD et obtenir l'adhésion de tous les niveaux de votre organisation à cette démarche permettra de faciliter la transition.
L'un des obstacles sous-jacents au CI/CD et à la méthode agile est le manque de confiance, qui se traduit par des équipes ne disposant pas des moyens de faire le nécessaire. Exiger plusieurs niveaux d'approbation pour les décisions ou les modifications ralentira le processus et réduira les avantages liés à des retours d'information rapides.
Pour qu'une équipe soit efficace, il faut que les membres de l'équipe livrent des logiciels fonctionnels et que la direction fournisse aux équipes les outils et l'environnement appropriés pour qu'elles puissent effectuer leur travail.
La méthode agile est parfois présentée à tort comme un ensemble de règles immuables qui doivent être appliquées d'une manière spécifique. En comprenant la logique intrinsèque et en adaptant les principes à votre organisation, tout en faisant attention aux anti-patterns, vous pouvez promouvoir un état d'esprit agile d'intégration continue.
L'adoption des méthodologies CI/CD vous aidera à mettre en pratique les valeurs agiles et à profiter des avantages que procurent des cycles de développement itératifs et des versions fréquentes.