mar, 27/10/2015 - 12:15
Les approches Lean et Agile sont aujourd’hui largement répandues dans la plupart des environnements de développement de produits et de logiciels. S’agissant de la chaîne de mise en production des produits/applications logiciels, DevOps est devenu un standard de fait, à travers l’introduction des principes du Lean permettant d’optimiser la chaîne de valeur entre la conception d’un produit logiciel, son déploiement en production et la maintenance associée.
Mais quelle est le lien entre Agile et DevOps ? DevOps n’est-il qu’un autre type d’implémentation Agile ?
Les experts Agile et DevOps de Wemanity s’accordent à penser que ce n’est pas le cas. De notre point de vue, le seul moyen permettant d’adopter avec succès une approche DevOps consiste à s’appuyer sur une stratégie Agile. De la même façon, réaliser une transformation Agile sans se préoccuper d’aligner les processus dev et ops amènera fatalement à une limitation considérable des bénéfices potentiels de l’Agile.
Ceci veut-il dire que l’Agile est un élément incontournable d’une implémentation DevOps réussie ?
C’est effectivement notre avis. Nous pensons que réaliser une transition vers DevOps est moins un problème d’outillage qu’un problème de technologie et de rapports humains. En particulier, il est impératif de faire tomber le mur qui sépare traditionnellement les équipes dev et ops, l’état d’esprit des équipes a besoin d’évoluer, ils doivent collaborer au quotidien au sein d’une seule et même équipe. Les méthodes, pratiques, rôles et responsabilités inhérents à l’Agile permettent aux équipes d’atteindre ce but.
Les facteurs clés de l’Agile pour une implémentation DevOps réussie
• Adoptez les principes Agile le plus tôt possible, et ce pour autant d’opportunités d’interaction que possible. Convier les dev et les ops aux mêmes événements. L’objectif est la collaboration au quotidien entre dev et ops, et adopter une approche Agile est le moyen le plus sûr d’en faire une réalité.
• Ayez une vision et une mission DevOps partagées
Nous avons d’un côté des développeurs qui travaillent à produire à un rythme de plus en plus élevé des fonctionnalités logicielles innovantes. De l’autre côté, des ops dont le maître mot est la stabilité, avec pour responsabilité principale de s’assurer que les environnements de production restent en service en permanence. Pour aggraver les choses, nous avons des équipes organisées en silos, chacune avec sa culture propre et des outils spécifiques. Pour résumer ce sont 2 mondes que tout oppose. Il est donc nécessaire de placer leur point de vue à un niveau plus stratégique - une vision et une mission partagées - et permettre aux équipes de travailler main dans la main vers un objectif commun.
• Alignez les managers des équipes dev et ops sur des objectifs convergents
Il arrive fréquemment que les différents niveaux de management donnent des objectifs divergents aux équipes dev d’une part, et ops d’autre part, ce qui rend la collaboration entre ces équipes particulièrement difficile, voire impossible. De manière générale, il est essentiel que l’ensemble du management (y compris le management externe) soit complètement aligné sur les objectifs à atteindre, et travaille de concert pour une implémentation DevOps réussie.
• Communiquez, communiquez, communiquez
Mettez l’accent sur la communication et assurez vous que la vision est totalement limpide et comprise par tous. Une vision pilotée par la valeur et portée par le haut, avec des directions claires impliquant autant les dev que les ops est un élément clé de réussite d’une implémentation DevOps.
• Mettez en place une culture centrée sur la collaboration
Une véritable démarche DevOps se base principalement sur la technologie, les rapports entre les gens et la méthodologie plutôt que sur les outils. Ajustez les objectifs individuels de vos équipes pour encourager la collaboration et le travail d’équipe, où l’effort est valorisé, plutôt qu’une approche méritocratie, où des “héros” concentrent leur énergie à être là au bon moment pour recevoir des récompenses basées sur la performance individuelle.
• Co-localisez les membres des équipes de développement et de production
Pour implémenter DevOps avec succès, il est crucial que les dev et les ops apprennent à se connaître au travers d’interactions fréquentes et en participant aux mêmes évènements. Lorsque le contexte le permet, la co-localisation des dev et des ops sur un même plateau simplifie grandement le travail collaboratif et l’organisation d’évènements en équipe. Ce n’est malheureusement pas toujours possible compte-tenu de contraintes géographiques et structurelles diverses et variées. Mais même dans ce genre de situation, il existe des solutions permettant aux équipes distribuées de travailler ensemble et de partager évènements et pratiques, à condition bien sûr de mettre à leur disposition un outillage adapté.
• A propos de l’externalisation des dev et des ops
Construire une culture DevOps est très difficile lorsque les dev ou les ops sont externalisés. La sous-traitance à des sociétés externes ne constitue pas toujours un choix pérenne. Si vous n’avez pas d’autre choix, faites en sorte d’externaliser vers une société qui comprend la culture DevOps et sera en mesure de vous aider, notamment à travers le partage de ressources.
• A propos du management intermédiaire
La rigidité structurelle des entreprises et le peu d’autonomie généralement accordée à leurs effectifs a conduit à l’introduction progressive de plusieurs couches hiérarchiques intermédiaires, dont la valeur ajoutée est parfois discutable. Dans un écosystème DevOps (et Agile) optimal, le besoin d’avoir recours à ces niveaux hiérarchiques intermédiaires est minimal, voire nul. La résistance au changement combinée à un instinct de survie face à la perspective de perdre son emploi fait que les managers de proximité ont tendance à freiner des 4 fers et réduisent ainsi les bénéfices attendus du DevOps. Il n’y a pas grand chose que l’on puisse faire pour atténuer une crainte lorsque celle-ci est légitime. L’honnêteté et la transparence constituent en général la meilleure approche, et nous recommandons d’accompagner les managers intermédiaires dans leur reconversion vers des rôles clés au sein d’un écosystème Agile et DevOps. Soit en se rapprochant du produit ou des clients, soit en se positionnant sur des rôles à valeur ajoutée inhérents à une organisation Agile. Ils ont en général le potentiel pour devenir d’excellents Product Owners, Scrum Masters, ou encore des agents du changement.
Un atelier VSM (Value Stream Map) est souvent un excellent moyen d'identifier quels rôles ces managers pourront jouer dans une organisation Agile et DevOps.
• A propos des systèmes existants
Dernier point, mais non des moindres, caractéristique de l’IT et des écosystèmes à forte orientation technologique... La prise en compte de l’existant. L’obsolescence et les limitations en termes d’interopérabilité symptomatiques des systèmes vieux de plusieurs années représentent un réel challenge qu’il est nécessaire de prendre en compte à travers une approche structurée pour rendre possible l’introduction du DevOps. Ne sous-estimez pas la part de ce qui n’est pas réalisable avec certains systèmes existants. Préparez-vous à devoir investir du temps et de l’argent soit pour les remplacer, soit pour les faire évoluer.
Pour une implémentation DevOps réussie, il est essentiel de prendre en compte l’ensemble de ces éléments et de s’assurer que les dirigeants sont convaincus par cette nouvelle approche. Ce type de transformation ne peut pas se faire en un jour, et chaque organisation doit trouver l’angle qui lui convient le mieux pour l’appréhender. La taille, le secteur d’activité, la culture d’entreprise entre autres facteurs concourent à rendre chaque transformation unique. Au bout du compte, c’est bien d’humains dont il s’agit. Mais dès lors qu’il s’agit de l’engagement de la direction à devenir Agile, leur implication et leur dévouement le plus complet doivent être sans faille si l’on veut que cette transformation soit un succès.
Etre Agile nécessite beaucoup de courage et ne tolère aucune zone d’ombre. Ceci est tout aussi vrai avec DevOps.
A propos de l'auteur