La méthodologie agile est une forme d’organisation des équipes de développement qui permet de réussir des projets informatiques de meilleure qualité qu’avec un cycle de développement traditionnel.
Un des principaux leviers de l’agile est de raccourcir la durée des cycles de développement et la fréquence entre les différentes mises en production. Multiplier ces itérations permet ainsi d'améliorer le produit ou service en intégrant en permanence les retours utilisateurs récoltés.
Cette méthode, relativement récente, a prouvé son efficacité en permettant à des startups de devenir des géants du web - par exemple, les GAFA ou les NATU - en développant des produits ou services toujours plus puissants et qui répondent aux exigences des utilisateurs.
Il existe plusieurs types de méthodes agile comme la méthode scrum, une des plus connues, extrem programing ou encore le kanban issue du lean.
Le DevOps est le rapprochement entre deux univers : les devs d’un côté, les développeurs et de l'autre, les ops, les services opérationnels. Traditionnellement ces deux univers sont plutôt opposés : les développeurs sont censés créer de la valeur et rendre le produit/service toujours plus innovant et les opérationnels ont pour objectif de maintenir la stabilité des infrastructures. Il en découle souvent des situations de conflit entre ces deux “teams” aux intérêts opposés, illustrées par le Mur de la confusion d’Andrew Shafer et Lee Thompson. Par ailleurs, il est souvent complexe de savoir où s’arrête le travail des développeurs et où commence celui des opérationnels.
Le DevOps, qui est avant tout une culture organisationnelle, vise à lisser cette relation développeurs/opérationnels afin d’effectuer des mises en production plus rapidement et de meilleure qualité.
Concrètement, le DevOps passe par l’intégration de ces métiers dans une équipe commune et leur alignement sur des objectifs communs. La participation des opérationnels aux meetings des devsou une boucle de feedback structurée peuvent par exemple faciliter cette organisation.
A priori, l’agile parle plus au monde du développement car il répond au besoin de “sortir” rapidement des fonctionnalités. Quand on pense “ops”, on pense plutôt stabilité et donc a contrario, une plateforme et un site web qui va évoluer le moins possible. Il est donc naturel de penser que l’agile va à l’encontre des opérationnels.
Par ailleurs, la méthodologie agile implique la planification des tâches du sprint. Or certaines tâches des opérationnels ne peuvent être planifiées, comme par exemple des incidents en production qui empêchent les utilisateurs de profiter pleinement du service ou une demande urgente de l‘équipe de développement dont le travail est bloqué. Ce genre d'événements exige une action immédiate, il est donc difficile de le faire rentrer dans le schéma traditionnel de priorisation des tâches en organisation agile.
Cependant, c’est justement le propre d’une organisation agile que de permettre d’adapter les priorités des développements à des changements de direction, suite notamment à des retours utilisateurs. Cette flexibilité démarque par exemple l’agile d’une production en cycle en V. De la même manière, on peut complètement envisager que la méthode agile offre plus de flexibilité aux opérationnels. En revanche, il est nécessaire de prendre en compte les spécificités de leur métier.
Voici quelques conseils que nous pouvons vous donner pour permettre aux opérationnels de travailler en agile dans les meilleures conditions :
À chaque sprint, les développeurs ont des demandes pour les ops. Il est donc important que les opérationnels y accordent du temps dédié, ce que chez Padok nous appelons le “Buffer”. Cela permet à l’équipeops de ne jamais ralentir l’équipe de développement et d’éviter de mettre en danger son sprint. Par exemple si les développeurs n’arrivent pas à accéder à une configuration en environnement de validation. Ce “Buffer” prend la forme d’un ticket dans le “Sprint ops”, ressource dans laquelle on “pioche” à chaque intervention pour l’équipe de développement.
Quand on pense méthodologie agile, on pense à la transparence et à la communication au sein des équipes. Bien que les développeurs et les opérationnels aient deux métiers différents, ils travaillent sur le même produit ou service. Il semble donc important que les opérationnels participent aux événements des dev et vice-versa. Cela permet d’anticiper les difficultés futures, qu’elles soient techniques ou organisationnelles (“je vous préviens, mardi à 14h nous allons casser la préprod pour 30 minutes”). Ces événements sont aussi l’occasion de se faire des feedbacks et de mettre en place une démarche d’amélioration continue des équipes. Si vous appliquez la méthode scrum, cet événement dédié à l’amélioration continue s’appelle la rétrospective.
Au-delà de l’agile, il est nécessaire de sensibiliser les équipes de développement à l’impact du travail des équipes opérationnelles sur le business et les utilisateurs. Connaissent-ils l’impact financier d’un site up à 80% au lieu de 99% ? Au cours des soldes, un site e-commerce de vente de vêtement peut perdre jusqu’à 30 000 euros sur une matinée si le site tombe. C’est ce type d’informations qui permettra aux dev de mieux valoriser le travail des équipes opérationnelles, et donc les contraintes qu’elles imposent parfois dans la mise en production de nouvelles fonctionnalités.
Ces propositions ne sont que quelques exemples de ce que peut donner une démarche agile adaptée au monde du DevOps. Chaque projet, chaque contexte est spécifique et nécessite des solutions sur mesure. Si vous souhaitez en savoir plus sur ce qui peut être mis en place dans le cadre de votre projet, n’hésitez pas à prendre connaissance de notre offre Accompagnement DevOps ou à nous contacter.