Comment accompagner la croissance de votre entreprise en scalant une practice d’intégration?

Simon Emmanuel RIVAS
Catégorie : Integration
27/06/2024

La mise en place d’une nouvelle pratique autour d’une plateforme et/ou d’une technologie suit un schéma relativement classique. La mise à l’échelle de cette pratique est un exercice qui peut s’avérer difficile si l’on n’a pas les bonnes clés : comment accompagner sereinement la croissance de l’entreprise et la généralisation de cette pratique à travers toutes les équipes qui en ont besoin? Comment éviter que l’équipe devienne un goulot d’étranglement pour ses clients internes ?

Toutes ces questions sont particulièrement pertinentes dans le cadre d’une pratique d’Intégration. Je vous propose ci-dessous quelques axes de réflexion, issus largement de mon expérience sur le terrain.

 

TL;DR;

Dans une perspective de déploiement à l’échelle de l’entreprise, il peut être efficace de « casser » une équipe centralisée en :

  • Une équipe dédiée à la Plateforme;
  • Une équipe dédiée à l’Enablement (plus d’explication sur ces termes plus loin);

Et d’accompagner les équipes orientées métier dans leur appropriation de la plateforme et de la pratique plutôt que d’implémenter des flux à leur place.

 

La genèse : par où tout commence

Passons l’éventuelle phase de benchmarking des plateformes d’intégration qui est hors sujet et concentrons-nous plutôt sur la phase de mise en œuvre.

L’approche classique est le démarrage d’un projet phare « sponsor » (ex : mise en place d’un ERP ou d’un CRM), qui est l’occasion de mettre en place une nouvelle plateforme d’intégration. Ce projet est bien souvent adossé à – ou s’inscrit dans – une stratégie plus vaste de digitalisation ou de modernisation du SI : peu importe, le point à retenir est cette notion de sponsoring au moins partiel par un projet métier (on verra par la suite pourquoi c’est important).

 

Cette phase se déroule généralement bien et tout le monde est content (enfin sauf gros couac bien sûr…). A l’issue de cette phase, on obtient :

  • L’embryon de la plateforme, déployé et (fingers crossed) industrialisé avec CI/CD + monitoring de base en place. La plateforme ainsi créée se limite souvent à une instanciation de services de base (APIm, Service Bus, etc.) et souvent – mais pas obligatoirement – une couche plus ou moins fine de « services » à valeur ajoutée (ex : monitoring standardisé de base, des templates ARM / modules terraforms ou équivalents permettant d’encapsuler une certaine dose de normalisation, etc). On détaillera un peu plus loin cette notion de plateforme, qui va prendre toute son importance ;
  • Les premiers éléments de la pratique, contenant les premières normes et conventions;
  • Les premiers flux, parfaitement alignés avec les besoins du business et livrés en respectant le cadencement du projet métier : la collaboration est ici généralement très forte.

 

A partir de là, on constate souvent l’organisation suivante :

  • Une équipe en charge de la « plateforme » d’intégration ET de la réalisation et maintenance des flux : la plateforme et les flux eux-mêmes sont d’ailleurs souvent confondus dans l’inconscient collectif ;
  • Des équipes clientes internes, alignées – elles – sur le métier, qui sous-traitent toutes les activités d’intégration à l’équipe décrite au point précédent ;

 

Quand les affaires se complexifient

Tout se passe bien pendant un certain temps (qui peut être relativement long), en fait tant que la plateforme reste à peu près dédiée à quelques contextes bien délimités et que l’alignement en termes d’objectifs et d’organisation entre les équipes métiers concernées et l’équipe en charge de l’Intégration est fort.

Néanmoins, avec la généralisation de l’usage de la plateforme à une plus grande partie de l’entreprise, cette équipe centrale va devoir adresser les besoins de plus en plus de clients internes. La relation de partenariat qui pouvait exister auparavant n’est mécaniquement plus possible à cette échelle et s’instaure alors une relation plus classique de client à fournisseur.

Avec le temps, plusieurs des symptômes ci-dessous risquent d’apparaitre.

 

Flou sur la responsabilité des endpoints des systèmes connectés et de leur utilisation

La forte isolation du traitement des problématiques d’Intégration dans une seule et même équipe centralisée peut à la longue induire une confusion dans le découpage des responsabilités.

Des affirmations telles que les suivantes en sont symptomatiques :

  • « Appeler telle API, c’est de l’Intégration, débrouillez-vous avec la doc »;
  • « Vous avez déjà un flux avec cette API, vous devez bien savoir comment l’utiliser à nouveau dans un autre cas »;
  • « Le système lambda n’a pas envoyé de fichier, c’est de l’Intégration »;

 

En effet dire que « c’est de l’Intégration » est certes littéralement juste mais réducteur et simpliste : cette affirmation omet le vrai sujet du RACI.

Prenons l’exemple d’une API consommée par la couche d’Intégration. Cette « API », ou plus généralement un endpoint (quelle que soit sa forme) exposé par un système est une porte ouverte sur ledit système. Son utilisation/consommation peut avoir un impact sur son état interne, et cet état interne ne peut pas relever de la responsabilité de l’Intégration. D’autre part l’éventuel besoin d’orchestration des opérations de cette API revêt lui-même une dimension fonctionnelle, dont la connaissance est liée au domaine métier. Cette connaissance et maîtrise du domaine métier revient naturellement à l’équipe cliente métier en charge du système, pas à l’Intégration.

C’est en revanche bien la responsabilité de l’équipe Intégration de savoir mettre en œuvre au mieux la plateforme pour consommer ces endpoints quels qu’ils soient : on se retrouve donc avec une véritable dichotomie entre la maitrise de la dimension fonctionnelle et celle de la dimension technique.

 

Flou sur la responsabilité des flux

Par extension, le même flou peut s’installer concernant la logique même d’un flux, c’est-à-dire la nature et le séquencement des traitements qui sont appliqués.

L’équipe Intégration ayant réalisé le flux (et souvent en assurant la maintenance et le support), cette confusion est tout à fait compréhensible. Elle peut même être accentuée par le fait qu’en toute logique, la documentation technique de ce flux sera intégrée à un espace documentaire centralisé, sous la responsabilité de l’équipe Intégration.

Malheureusement, cette responsabilité perçue ne s’accompagne pas toujours de l’autorité qui devrait en découler. En effet, le vrai problème de fond de découpage des responsabilités émerge lorsque un besoin d’évolution est motivé par un changement dans la Pratique (ex : changement d’une norme de sécurité) ou la Plateforme (ex : migration de namespace Azure Service Bus). Bien souvent, l’évolution requise fait l’objet de tractations acharnées avec le vrai owner, aussi bien pour son financement que pour sa planification.

 

Le même constat peut s’appliquer par exemple lorsque la conception fonctionnelle du flux n’a pas pris en compte certains cas non nominaux et que le flux en question génère en conséquence des erreurs « normales ». Le traitement de ces cas nécessite généralement une évolution – qui ne se limite pas forcément à la couche d’intégration. Dans ce cas, l’équipe responsable du support et de la maintenance du flux (aka : l’équipe centralisée d’Intégration) est celle qui a le plus intérêt à ce que l’évolution soit faite, mais c’est rarement elle qui a l’autorité ni les moyens pour la faire.

Il y a donc une vraie dichotomie entre responsabilité des flux et autorité pour les faire évoluer.

 

Friction de plus en plus sensible dans le déroulé des projets

Du fait de la nouvelle relation de client à fournisseur avec un nombre croissant de clients, les organisations des équipes se désolidarisent et l’alignement n’est plus aussi parfait entre chaque client interne et l’équipe Intégration. Dans le même temps, une dépendance forte s’est installée vis-à-vis de l’équipe Intégration, seule à même de mettre en œuvre la plateforme pour réaliser les flux.

Les équipes de part et d’autre de la relation de dépendance attendent souvent des livrables, des confirmations ou approbations ou tout simplement des informations de l’autre équipe. La coordination inter-équipe nécessite une communication intensive, induisant des blocages fréquents, des délais prolongés et ralentissant ainsi le rythme du projet.

Cette situation crée également une surcharge de travail en particulier pour l’équipe centralisée d’Intégration, qui doit gérer des demandes constantes, avec des plannings souvent subis, tout en accomplissant ses propres tâches. Cela se traduit par une complexité accrue dans la planification et la priorisation, et une difficulté à maintenir l’autonomie et la réactivité des équipes.
Dès lors le sentiment de ne pas faire partie du même bateau se répand, et des crispations peuvent se faire sentir. L’organisation en place est vécue comme un frein (et dans les cas extrêmes comme un obstacle).

 

Difficulté à itérer sur la plateforme elle-même

Quelle que soit la quantité et la profondeur des « services » effectivement mis en place sur la plateforme d’intégration dans la phase initiale, le risque est :

  • De considérer que la plateforme est livrée au sens « finie », ou qu’elle ne subit pas d’obsolescence ;
  • De confondre la plateforme d’une part et son utilisation d’autre part ;
  • Que ses éventuelles évolutions soient réduites à être sponsorisées par des projets métiers X ou Y.

De plus, un autre symptôme à surveiller est la nécessité d’arbitrage entre d’un côté le delivery des projets et de l’autre l’évolution de la plateforme. Le fait qu’un arbitrage soit nécessaire est déjà un signal : faible certes, mais à ne pas négliger. Le fait que cet arbitrage soit généralement fait en faveur du delivery (outre urgence et cas de force majeure) est, lui, un signal fort.

 

Poser le diagnostic et ajuster

Résumons les symptômes décrits précédemment :

  • Flou sur des zones de responsabilité ;
  • Dépendance forte induisant régulièrement une friction dans le delivery des projets ;
  • Charge cognitive fonctionnelle croissant linéairement ;
  • Arbitrages réguliers entre projet et plateforme.

Notons ici que ces symptômes ne sont aucunement la manifestation de mauvaises volontés, mais simplement d’une incohérence entre l’organisation d’une part et les chemins de communication effectifs dans l’entreprise d’autre part : on peut considérer que l’organisation mise en place ne respecte pas (ou plus) la loi de Conway.

 

Par conséquent plus vous constaterez de ces symptômes, plus un réalignement de l’organisation aura du sens. Cela signifie que cette organisation mise en place (reposant sur une équipe centralisée qui se retrouve sur le chemin critique de tous les projets) est devenue un obstacle et qu’il devient nécessaire de la changer.

En complément, 2 questions à garder en tête simultanément :

  • En tant que dépositaire de la pratique d’Intégration, quelle est votre plus-value essentielle pour l’entreprise ?
  • Comment aider au mieux le business à se développer ?

Cette plus-value essentielle réside avant tout dans la qualité de la pratique et de la plateforme, et le développement du business (ou en tout cas la fluidification des projets) passe par l’autonomisation des clients internes dans le delivery de leurs flux.

 

Concrètement, et si l’on reprend la terminologie des Team Topologies de Matthew Skelton et Manuel Pais, le principe de cette évolution d’organisation doit donc être de clairement séparer les 3 aspects fondamentaux suivants :

  • La pratique : avec la mise en place d’une équipe dédiée d’Enablement en charge de l’établissement des éléments de Pratique et de la diffusion de cette Pratique;
  • La plateforme : avec une équipe dédiée à la fourniture des « services » de base sur étagère ;
  • Le delivery, c’est-à-dire la mise en œuvre de la pratique sur la plateforme pour les besoins du métier : avec l’intégration des compétences d’intégration dans les équipes alignées sur la chaîne de valeur, (Stream aligned teams, que j’appelle ici aussi équipes clients ou équipes métier) ce qui est rendu possible à grande échelle grâce aux 2 équipes précédentes.

 

Plateforme vs Pratique : distinctes mais complémentaires

Qu’entend-on par plateforme ?

Depuis le début de cet article, je parle de plateforme sans en donner une définition claire.

Fondamentalement, une plateforme est un socle offrant une couche d’abstraction masquant les détails techniques complexes aux utilisateurs et développeurs. Cette couche d’abstraction leur permet de se concentrer sur leurs objectifs métier plutôt que sur des détails d’implémentation. Idéalement, ces abstractions sont en self-service pour éviter qu’à nouveau une équipe (l’équipe plateforme) soient sur le chemin critique des projets.

 

Autrement dit, c’est un ensemble d’abstractions efficaces permettant de :

  • Réduire la charge cognitive relative à la technologie sous-jacente pour ses utilisateurs / clients.
  • Leur donner de l’autonomie dans leurs projets nécessitant l’usage de la plateforme.

 

Par exemple en tant que développeur Azure, je ne veux surtout pas avoir besoin de savoir ce qui se passe derrière le rideau (= de l’autre côté de l’API / l’UI) lorsque je provisionne un service quel qu’il soit. La plateforme Azure est conçue pour réduire ma charge mentale : je me contente de consommer son API, je suis déchargé de savoir ce qui se passe au niveau infra dans les data centers de Microsoft pour effectivement provisionner ce service. De plus, je peux provisionner ces services en totale autonomie, sans avoir besoin de dépendre des équipes produits de Microsoft (qui sont ni plus ni moins des équipes de plateforme).

NOTE 1 : une plateforme peut bien évidemment être elle-même construite par-dessus une ou plusieurs autres plateformes. Par exemple : une plateforme d’intégration peut être construite au dessus des services Azure Integration Services, qui constituent eux-mêmes une plateforme.

NOTE 2 : il ne s’agit pas ici de décrire en détail ce que peut être une plateforme d’intégration ni comment on la construit. C’est un vaste sujet qui mérite un article dédié.

 

Qu’est-ce qu’une Pratique ?

Comme pour la plateforme, il convient de définir plus clairement ce que signifie le terme « Pratique » : il s’agit de l’ensemble des méthodes, processus et normes adoptés pour utiliser efficacement une technologie (le caractère efficace étant à rapporter à la vision de l’entreprise).

Les équipes orientées métier étant focalisées sur la réponse aux besoins du métier, elles ont peu de temps à accorder aux recherches et à l’expérimentation nécessaires à l’acquisition, la construction et l’évolution d’une pratique. C’est pourquoi celle-ci doit être sous la responsabilité d’une équipe, dont la responsabilité est double :

  • D’un côté, mettre au point ces méthodes, normes et processus ;
  • De l’autre, assumer un rôle d’évangélisation à l’échelle de l’entreprise en accompagnant les différentes équipes en charge de projets métier à adopter et à s’approprier les éléments de la pratique et les fonctionnalités de la plateforme (telle que décrite ci-dessus), de manière à limiter leur dépendance à une autre équipe.

C’est le rôle d’Enablement évoqué plus haut. Si ce rôle est bien rempli, alors les équipes orientées métier n’auront besoin de l’accompagnement par l’équipe d’Enablement que pendant une durée limitée, puis uniquement ponctuellement.

 

A ce rôle va s’ajouter une forme d’autorité comme on le verra plus loin : c’est ce que dans la littérature on appelle souvent le Center for Excellence.

ATTENTION : le rôle de cette équipe est bien d’accompagner les équipes orientées métier, pas de faire à leur place ! Son rôle n’est pas non plus d’être un inspecteur des travaux finis : elle peut (et doit) contrôler que les éléments de pratiques sont respectés, mais en accompagnant de manière proactive. Tout éventuel point de contrôle en bout de processus de build ne peut être qu’un garde-fou, mais l’essentiel de la plus-value de cette équipe réside dans l’accompagnement en amont.

 

Pourquoi a-t-on besoin de 2 équipes ?

La Pratique pose des standards garantissant une certaine qualité, tandis que la Plateforme en améliore l’accessibilité en en abaissant/masquant la complexité. Elle permet donc de builder rapidement et relativement simplement avec un haut niveau de qualité.

Les deux sont complémentaires mais distinctes, reprenant l’opposition entre Shift left (la Pratique) et Shift down (la Plateforme) décrit par Richard Seroter.

Les 2 équipes travaillent souvent en étroite collaboration, mais leurs missions sont bien différentes. Comme décrit plus haut, le risque de mélanger des missions différentes est que l’une des missions prenne le pas sur l’autre du fait de contraintes comme des impératifs de délai sur des projets. C’est pourquoi il est nécessaire de bien cloisonner leurs champs d’action respectif, et de les sanctuariser.

 

Sanctuariser leurs actions

Par un budget dédié

Nous l’avons vu plus haut : les premières itérations de la plateforme sont souvent financées par des projets sponsors. Malheureusement si ce « sponsoring » devient le seul moyen de financement des activités de construction et de maintenance de la plateforme :

  • Les projets peuvent être vus comme trop chers par les clients internes : « pourquoi je paierais pour ça ? »
  • Les évolutions (parfois nécessaires indépendamment d’un besoin projet, par exemple pour des sujets de dépréciation de tel ou tel composant) sont dépendantes du cadencement d’un projet en particulier.

 

NOTE : Comme le souligne Martin Fowler :

« Any code that has not been deployed to production is an unfinished work. Once deployed to production it becomes legacy code.”

Ce qui s’applique évidemment aux éléments de la plateforme. Il est donc obligatoire d’en prévoir l’évolution constante.

 

Les mêmes schémas se produisent sur les activités liées à l’Enablement des équipes. Notamment, la tentation peut être grande de considérer que :

  • La montée en compétence relève uniquement de la responsabilité des développeurs ;
  • Le temps de montée en compétence est négligeable ou que la technologie est triviale (ce qui revient au même).

 

Par un mandat clair

L’équipe de plateforme doit bien évidemment avoir toute autorité sur la plateforme elle-même, tout en fournissant en contrepartie des engagements ou promesses claires à ses clients (par ex : « aucune fonctionnalité ne sera dépréciée sans un avis 12 mois à l’avance »).

Il en va de même avec l’équipe d’Enablement qui est dépositaire de la pratique. Son rôle est avant tout basé sur l’encouragement et l’éducation plutôt que la contrainte et elle est à l’écoute des équipes qu’elle accompagne pour faire évoluer si besoin des éléments de la pratique. Néanmoins, elle doit également pouvoir garantir que certains points de gouvernance et certains standards sont bien respectés à travers l’entreprise : son autorité sur ses points doit être clairement affirmée.

 

Cette organisation est-elle parfaite?

Bien évidemment que non. Ou plus exactement, elle présuppose plusieurs choses pour être réellement efficace :

  • L’intégration des compétences d’intégration (sans jeu de mot) dans les équipes clientes de la plateforme;
  • La clarté des promesses faites par la plateforme;
  • Le caractère self service de la plateforme;
  • Un abaissement de la charge cognitive nécessaire pour réaliser un flux, grâce à la plateforme.

Pour résumer, on peut dire que tout le but du jeu est de faire tout ce qu’il faut pour que le volume d’interactions nécessaires entre équipes soit le plus réduit possible.

 

Pas d’autre alternative ?

Pour aller plus loin : est-on condamné à suivre ce schéma d’évolution ?

Comme bien souvent dans ces sujets qui couvrent aussi bien l’organisation que la technique, la manière dont la question est posée et les hypothèses implicites sous-jacentes sont presque plus importantes que la réponse.

Une meilleure question serait de savoir ce que ça implique de refuser ce schéma d’évolution dans un contexte de croissance (au sens : élargissement de l’usage de la pratique).

  • Simplification : on applique toujours quelques recettes pré-établies sans s’en écarter ou juste à la marge. Bien exécutée, cette tactique peut clairement porter ses fruits pour garantir une certaine performance de livraison et limiter la complexité technique. Néanmoins, on restreint de fait le niveau d’alignement possible avec le besoin business : il s’agit donc de trouver un bon équilibre. De plus cela n’empêchera évidemment pas le volume de flux supportés de grandir : un problème de charge cognitive va continuer de se poser pour cette équipe;
  • Ownership : puisque la responsabilité de la plateforme ET des flux qui s’y exécutent est portée par une équipe centralisée, cette équipe doit avoir l’autorité pour faire évoluer les flux librement. Dans le monde réel, cette stratégie peut faire quelques étincelles d’un point de vue politique et bien souvent l’aval du « vrai » owner est nécessaire, ne serait-ce que pour engager un budget pour cette évolution. Peut-on être owner de quelque chose sans moyen propre ni autorité pour agir dessus ?
  • Communication inter-équipes : la friction due à une dépendance forte envers l’équipe centralisée d’Intégration demeure. La communication doit donc être renforcée et normalisée pour assurer l’efficacité de la collaboration. Le coût induit doit également être accepté.

ATTENTION : Il faut prendre l’ensemble du contexte pour faire un choix de topologie d’équipes avisé. Néanmoins dans une logique de développement de la pratique, opérer les changements d’organisation qui permettent de soutenir les orientations stratégiques de l’architecture de l’entreprise va bien souvent s’avérer nécessaire.

 

Et puisque c’est dans l’air du temps, un petit mot complémentaire sur l’émergence des outils basés sur les intelligences artificielles génératives. Ces outils ont certes le potentiel de changer la donne (au moins partiellement). Par exemple, il est possible qu’un tel outil permette de réduire significativement la charge cognitive évoquée plus haut, moyennant un travail de documentation et d’indexation. Néanmoins, de tels outils ne sont pas arrivés à maturité et le recul est aujourd’hui trop faible pour en mesurer l’impact. Attendons de voir ce que donnerons des outils tels que Devin ou Copilot Workspace dans un environnement réel et à grande échelle avant d’enterrer les conclusions ci-dessus 🙂

 

Sounds familiar ?

À la lecture de cet article, il est probable que certain(e)s y trouvent des ressemblances avec leurs propres expériences dans d’autres pratiques techniques.

En effet, de nombreuses considérations abordées ici ne sont pas spécifiques à l’intégration, mais relèvent de principes universels applicables à divers domaines de l’ingénierie et du développement logiciel.

Même mal, même remède ? 🙂