Be Software Architecture Wise
Be Wise Apps

Read in English · Leer en español · Auf Deutsch lesen

Section 11.5 sur 11.8 · Avancé · 24 min de lecture

Team Topologies et conception sociotechnique

Leçon vidéo

5 min · narré en anglais, avec sous-titres
Écouter seulement (audio)
Lire la transcription

Qui est responsable de chaque partie d’un système compte autant que la manière dont les parties sont dessinées. Dans cette leçon, vous allez apprendre à concevoir ensemble les équipes et le logiciel, avec Team Topologies.

Pensez à un groupe de restaurants. La cuisine de chaque restaurant sert ses propres clients, du début à la fin. Un fournisseur central livre les ingrédients et l’équipement à toutes les cuisines à partir d’un catalogue simple, pour que les cuisiniers n’aient pas à exploiter une ferme. Un atelier de pâtisserie spécialisé fabrique le seul produit trop difficile à maîtriser pour chaque cuisine. Et un chef invité passe quelques semaines à enseigner une nouvelle technique à une cuisine, puis repart. Team Topologies donne aux organisations du logiciel les mêmes quatre types d’équipes.

La loi de Conway dit qu’un système tend à reproduire la manière dont ses équipes communiquent. Décider comment les équipes sont formées, et de quoi chacune est responsable, est donc une décision architecturale. Team Topologies, de Matthew Skelton et Manuel Pais, publié pour la première fois en 2019, vise le flux rapide : un courant régulier de petits changements, avec peu d’attente entre les équipes. Ses équipes sont durables, et comptent généralement de cinq à neuf personnes. Pour les architectes, cela change le métier. Une frontière de service n’est bonne que si une équipe peut en être entièrement responsable.

La plupart des équipes devraient être orientées flux : alignées sur un flux de changements, comme les commandes, et responsables de celui-ci de bout en bout, jusqu’à son exploitation en production. C’est le cas par défaut. Les trois autres types existent pour alléger leur charge. Une équipe plateforme fournit des services internes, comme des pipelines, un environnement d’exécution et l’observabilité, sous la forme d’un produit. Les autres équipes le consomment en libre-service. C’est le mode X en tant que service. Une équipe facilitatrice de spécialistes aide une autre équipe à acquérir une capacité, ici la fiabilité, puis passe à autre chose. C’est le mode facilitation. Une équipe sous-système compliqué est responsable d’une partie qui exige une expertise rare, comme l’algorithme d’affectation. Ici, elle travaille en collaboration avec l’équipe des livreurs, pendant une durée limitée. La collaboration doit être limitée dans le temps. Et si une équipe censée utiliser un service a sans cesse besoin de réunions, l’interface ou la frontière est probablement mauvaise.

La charge cognitive de l’équipe est le total qu’une équipe doit avoir en tête pour construire, exploiter et faire évoluer ce dont elle est responsable. Surchargez-la, et vous obtenez une livraison lente, des astreintes fragiles et des connaissances bloquées chez une ou deux personnes. Dimensionnez donc les responsabilités délibérément. Confiez chaque domaine à une seule équipe. Une équipe peut généralement gérer deux ou trois domaines simples, mais une équipe qui a un domaine complexe ne devrait être responsable de rien d’autre. Réduisez la charge extrinsèque, la difficulté qui vient de la manière dont le travail est organisé plutôt que du domaine lui-même, grâce aux plateformes, à l’automatisation et à une bonne documentation. Et quand quelque chose devient trop grand pour une seule équipe, découpez-le le long d’un plan de fracture. Un contexte délimité est généralement le meilleur. Découper selon la seule technologie, comme le mobile et le backend, est généralement le choix le plus faible.

Voici la réorganisation de la plateforme de livraison de repas. Elle compte trente-huit ingénieurs répartis en cinq équipes, une par couche technique. Une idée met environ six semaines à atteindre la production, et toutes les équipes coordonnent leurs mises en production toutes les deux semaines. D’abord, cartographiez les flux. Sur les cinquante dernières fonctionnalités, quarante-quatre relevaient principalement de l’un de trois flux : les commandes des clients, les restaurants partenaires et la livraison. Ensuite, vérifiez les plans de fracture. Ce sont déjà des contextes délimités distincts : le code peut donc suivre. Et l’affectation des livreurs utilise un solveur que seuls trois ingénieurs comprennent : un candidat au sous-système compliqué. Troisièmement, dimensionnez les équipes : trois équipes orientées flux de sept personnes, une équipe d’affectation de cinq, une équipe plateforme de neuf et une équipe facilitatrice de trois. Toujours trente-huit personnes. Quatrièmement, choisissez les modes d’interaction, avec des dates de fin. Tout le monde utilise la plateforme en tant que service dès le premier jour. Livraison et Affectation collaborent pendant un trimestre, et l’équipe facilitatrice aide Commandes pendant huit semaines. Au bout de deux trimestres, la plupart des fonctionnalités devraient être livrées par une seule équipe sans mise en production coordonnée. Un travail inter-équipes persistant signalerait une frontière à revoir.

Réorganiser les équipes ne restructure pas une base de code fortement couplée. Pendant des mois, les nouvelles équipes se battront contre l’ancienne architecture : planifiez donc les changements d’équipes et d’architecture comme un seul programme. Une erreur courante consiste à renommer les équipes existantes avec ces étiquettes, alors que la responsabilité, le financement et les interactions restent les mêmes. Une autre est une équipe plateforme qui fonctionne par tickets et approbations, si bien que les autres l’attendent. C’est un goulot d’étranglement, pas une plateforme.

La section complète présente les API d’équipe, la plateforme viable la plus fine et tous les plans de fracture. Ensuite, dans la section onze point six, nous verrons la modernisation des systèmes hérités. À très vite.

Ce qu’il faut savoir

La conception des équipes est un travail d’architecture

Le chapitre 3 a montré que la loi de Conway n’est pas une curiosité mais une force : le système qu’un groupe d’équipes construit tend à reproduire la manière dont ces équipes communiquent. Si c’est vrai, alors décider comment les équipes sont formées, de quoi chacune est responsable et comment elles interagissent est une décision architecturale, aux conséquences aussi durables que le choix d’une base de données ou d’un style d’intégration. La discipline qui consiste à concevoir ensemble la structure du logiciel et celle des équipes s’appelle l’architecture sociotechnique.

Le cadre pratique le plus influent pour y parvenir est Team Topologies, de Matthew Skelton et Manuel Pais (IT Revolution, 2019 ; deuxième édition 2025). Il part d’un objectif simple, le flux rapide (fast flow) : un courant régulier et soutenable de petits changements, de l’idée à la production, avec peu d’attente entre les équipes. Il propose ensuite un petit vocabulaire pour concevoir des organisations qui l’atteignent : quatre types d’équipes, trois modes d’interaction, une limite appelée charge cognitive de l’équipe, et une technique pour trouver les lignes de découpe le long desquelles le logiciel et les équipes peuvent être divisés.

Plusieurs prémisses traversent l’approche. L’équipe, et non l’individu, est l’unité de livraison : le travail est confié à des équipes, la responsabilité appartient aux équipes, et les équipes sont durables, afin d’accumuler la connaissance de leur domaine et de leur code au lieu d’être assemblées pour un projet puis dispersées. Les équipes sont petites, généralement de cinq à neuf personnes, car la confiance et la compréhension partagée déclinent vite au-delà de cette taille (les auteurs s’appuient sur les recherches de Robin Dunbar sur la taille des groupes). Et les frontières des équipes doivent être conçues pour le flux des changements, pas pour la commodité des lignes hiérarchiques ni d’après l’historique de qui a construit quoi.

Pour les architectes, cela change le métier. Une frontière de service proposée n’est bonne que si une équipe peut en être entièrement responsable ; une équipe proposée n’est viable que si le code dont elle est responsable lui permet de travailler sans demander la permission à trois autres équipes. L’architecte qui dessine des boîtes sans se demander qui sera responsable de chacune ne conçoit que la moitié du système.

Les quatre types d’équipes fondamentaux

Team Topologies soutient que presque toutes les équipes d’une organisation logicielle devraient relever de l’un de quatre types. L’intérêt d’avoir si peu de types est la clarté : chaque type a un objectif différent, une manière différente de mesurer la réussite et une relation différente avec les autres équipes, si bien que connaître le type d’une équipe indique à tous ce qu’ils peuvent en attendre.

Une équipe orientée flux (stream-aligned team) est alignée sur un flux de changements : un produit, un parcours client, un groupe d’utilisateurs ou une capacité métier. Elle est responsable de sa partie de bout en bout, de la découverte à l’exploitation en production en passant par la construction, et doit pouvoir livrer la plupart des changements sans attendre personne. Les équipes orientées flux sont le cas par défaut et doivent constituer la grande majorité ; les trois autres types existent pour alléger leur charge.

Une équipe plateforme fournit des services internes (pipelines de déploiement, environnement d’exécution, observabilité, infrastructure de données) sous la forme d’un produit que les équipes orientées flux consomment en libre-service. Une bonne plateforme se juge à la vitesse de ses utilisateurs, pas à sa propre liste de fonctionnalités. Une équipe facilitatrice (enabling team) se compose de spécialistes qui aident d’autres équipes à acquérir une capacité qui leur manque, comme l’automatisation des tests, les pratiques d’observabilité ou un nouveau framework, puis passent à autre chose ; sa réussite se mesure au fait que l’autre équipe n’a plus besoin d’elle. Une équipe sous-système compliqué est responsable d’une partie qui exige une expertise rare, comme un moteur de tarification reposant sur des modèles actuariels, un solveur d’optimisation d’itinéraires ou un codec vidéo, afin que les équipes orientées flux puissent l’utiliser sans avoir à la maîtriser. Le livre insiste sur le fait que ce type doit être utilisé avec parcimonie, et seulement là où la spécialité est réelle.

Comparaison des quatre types d’équipes

Type d’équipeObjectifResponsable deSignes de bonne santéExemple de la livraison de repas
Orientée fluxLivrer un flux continu de changements pour une partie de l’activitéFonctionnalités, code, données et exploitation de son flux, de bout en boutMet en production de façon indépendante ; la plupart des changements ne nécessitent aucune autre équipe ; la charge d’astreinte est supportableÉquipe Commandes clients : cartes présentées aux clients, panier, paiement, suivi des commandes
PlateformeRéduire la charge cognitive des équipes orientées flux grâce à des produits internes en libre-serviceLes services internes de la plateforme, leur documentation et leur fiabilitéLes équipes l’adoptent volontairement ; intégrer un nouveau service prend des heures, pas des semainesÉquipe plateforme de livraison logicielle : pipelines, environnement d’exécution des conteneurs, journalisation et métriques, courtier d’événements
FacilitatriceCombler les lacunes de capacité d’autres équipes, puis partirSavoir-faire, guides, exemples ; pas le code de production d’autres équipesLes interventions sont limitées dans le temps et se terminent quand l’autre équipe est autonomeÉquipe facilitatrice fiabilité, qui accompagne les équipes sur les objectifs de niveau de service et la gestion des incidents
Sous-système compliquéEncapsuler une spécialité trop pointue pour chaque équipe orientée fluxUn composant spécialisé derrière une interface claireLes consommateurs l’utilisent comme un service sans avoir besoin des spécialistes dans la pièceÉquipe d’optimisation de l’affectation : l’algorithme qui affecte les livreurs aux commandes

Types d’équipes et modes d’interaction

Les quatre types d’équipes de Team Topologies et les trois modes d’interaction entre ellesfacilitationFiabilitééquipe facilitatriceCommandesorientée fluxRestaurantsorientée fluxLivreursorientée fluxAffect.sous-systèmecompliquécollaborationX-as-a-Service(libre-service)Éq. plateformepipelines, runtime, observabilité, donnéescollaboration (durée limitée)X en tant que service (X-as-a-Service)facilitation
La plupart des équipes sont orientées flux ; une plateforme les sert en tant que service, une équipe facilitatrice les accompagne (facilitation), et une équipe sous-système compliqué travaille étroitement avec un flux pendant une durée limitée.

Trois modes d’interaction

Les types d’équipes disent ce que sont les équipes ; les modes d’interaction disent comment elles travaillent ensemble. Skelton et Pais soutiennent que l’interaction ambiguë et improvisée entre équipes est une source majeure de retard, car chaque conversation non planifiée est une dépendance. Ils recommandent donc que chaque paire d’équipes qui doivent interagir choisisse délibérément l’un des trois modes, pour une période déterminée.

En collaboration, deux équipes travaillent étroitement ensemble vers un objectif commun, avec des responsabilités floues, par exemple pendant qu’elles découvrent comment une nouvelle capacité doit être découpée. Ce mode produit un apprentissage rapide mais coûte aux deux équipes de la capacité et de la charge cognitive : il doit donc être limité dans le temps. En X en tant que service (X-as-a-Service), une équipe fournit quelque chose (une API, une capacité de plateforme, une bibliothèque) qu’une autre consomme avec peu ou pas de collaboration ; ce mode passe bien à l’échelle, mais ne fonctionne qu’une fois la frontière bien comprise et l’interface de bonne qualité. En facilitation, une équipe, généralement une équipe facilitatrice, en aide une autre à apprendre ou à lever un obstacle.

Les modes sont faits pour changer. Une séquence courante consiste à découvrir puis à stabiliser : une équipe plateforme collabore avec une équipe orientée flux pendant quelques semaines pour concevoir une nouvelle capacité, puis la transforme en offre en libre-service et passe en X en tant que service. Les modes servent aussi de mécanisme de détection. Si une équipe censée consommer un service en tant que service a sans cesse besoin de réunions, l’interface ou la frontière est probablement mauvaise ; si deux équipes collaborent depuis un an, elles ne forment peut-être en réalité qu’une seule équipe, ou la séparation entre elles est peut-être mal placée.

Les trois modes d’interaction

ModeÀ quoi il ressembleÀ utiliser quandCoût ou signal d’alerte
CollaborationDeux équipes travaillent comme une seule sur un problème commun pendant un temps ; séances de conception communes, éléments de backlog partagésDécouvrir une nouvelle frontière, technologie ou capacité dont personne ne connaît encore la bonne interfaceCharge cognitive élevée pour les deux équipes ; si cela dure indéfiniment, la frontière est probablement mauvaise
X en tant que service (X-as-a-Service)Une équipe consomme une API, une plateforme ou un composant qu’une autre fournit, au moyen de la documentation et du libre-serviceLa frontière et l’interface sont bien comprises et stablesLent à s’adapter si l’interface est médiocre ; des demandes d’assistance constantes montrent que ce n’est pas encore un vrai service
FacilitationCoaching, travail en binôme, exemples et ateliers courts qui aident une équipe à acquérir une capacitéUne équipe manque d’une compétence ou est bloquée par un obstacle qu’elle peut apprendre à leverDérive vers le fait de faire le travail de l’autre équipe, ce qui crée de la dépendance au lieu de la capacité

La charge cognitive comme contrainte de conception

L’idée de charge cognitive vient de la psychologie de l’éducation. La théorie de la charge cognitive de John Sweller, publiée pour la première fois en 1988, partait de l’observation que la mémoire de travail humaine ne peut retenir et traiter que quelques éléments nouveaux à la fois, si bien que l’enseignement doit être conçu pour ne pas la surcharger. La théorie distingue la charge intrinsèque (la difficulté inhérente à la matière), la charge extrinsèque (la difficulté causée par la manière dont la tâche est présentée) et, dans des travaux ultérieurs, la charge pertinente (l’effort qui construit une compréhension durable). Les chercheurs débattent encore de la question de savoir si la charge pertinente est une catégorie distincte, et Team Topologies utilise les trois comme une heuristique pratique plutôt que comme une mesure.

La section 3.7 a présenté la version de cette idée appliquée aux équipes : le total qu’une équipe doit avoir en tête pour construire, exploiter et faire évoluer ce dont elle est responsable. Ce qui compte ici, c’est la manière de l’utiliser comme contrainte de conception. Quand une architecture confie à une équipe plus qu’elle ne peut comprendre, les effets sont prévisibles : une livraison plus lente, des corrections superficielles, des astreintes fragiles, des connaissances concentrées chez une ou deux personnes et, à terme, des départs. Ce sont les mêmes symptômes que l’on impute souvent à de mauvais ingénieurs ou à du mauvais code.

Le livre propose des règles empiriques pour dimensionner les responsabilités d’une équipe selon la complexité du domaine : confier chaque domaine à une seule équipe ; une équipe peut généralement gérer deux ou trois domaines simples ; une équipe responsable d’un domaine complexe ne devrait être responsable de rien d’autre ; et aucune équipe ne devrait avoir deux domaines compliqués. On peut aussi interroger directement les équipes, par exemple avec un court questionnaire sur leur degré de compréhension de leurs systèmes, leur confiance pendant les astreintes et le temps consacré à l’outillage plutôt qu’au domaine. Des files de tickets qui s’allongent, de longs délais d’intégration des nouveaux arrivants et des transferts fréquents vers la seule personne qui comprend un composant sont des signaux indirects utiles.

Les réponses architecturales reflètent les trois types de charge. Réduisez la charge extrinsèque avec des plateformes, de l’automatisation, des chemins balisés (paved paths) et une bonne documentation. Bornez la charge intrinsèque en traçant les frontières des services et des modules de sorte que la part du domaine de chaque équipe soit cohérente et d’une taille gérable, et en plaçant les spécialités pointues derrière des interfaces de sous-systèmes compliqués. Protégez la charge pertinente en laissant du temps pour l’apprentissage ; c’est là que les équipes facilitatrices aident.

Les API d’équipe et la plateforme viable la plus fine

Si les équipes interagissent selon des modes délibérés, chaque équipe a besoin d’un visage clair face au reste de l’organisation. Team Topologies l’appelle l’API de l’équipe (team API) : tout ce que l’équipe offre et attend. Elle comprend l’API technique (endpoints, événements, bibliothèques, avec leurs règles de versionnage et de dépréciation), mais aussi l’interface humaine : la documentation et les guides de prise en main, la feuille de route et les priorités actuelles de l’équipe, ses pratiques de travail, les canaux par lesquels on peut la joindre, la manière de lui demander du travail et les délais de réponse à attendre.

Mettre par écrit l’API d’une équipe est un exercice peu coûteux et révélateur. Il oblige l’équipe à dire de quoi elle est responsable, ce qui met généralement au jour des services sans responsable et des données disputées, et il donne aux autres équipes un moyen d’interagir sans réunion. Beaucoup d’organisations la conservent sous la forme d’une courte page dans le dépôt de l’équipe, revue chaque trimestre avec la documentation d’architecture.

La plateforme mérite une attention particulière, car c’est là que les bonnes intentions tournent le plus souvent mal. Une plateforme construite comme un grand projet interne, avec une longue feuille de route et une adoption obligatoire, peut facilement ajouter de la charge cognitive au lieu d’en retirer. Skelton et Pais recommandent la plateforme viable la plus fine (thinnest viable platform) : le plus petit ensemble de services, de documentation et de normes qui accélère réellement ses utilisateurs. Pour une petite organisation, il peut s’agir d’une page bien tenue qui énumère les services du fournisseur cloud que les équipes doivent utiliser, et comment ; pour une grande, ce peut être une plateforme interne de développement. L’ingénierie de plateforme est traitée en détail au chapitre 10 ; l’essentiel ici est qu’une plateforme est un produit dont les clients sont d’autres équipes, et qu’elle doit être conçue et mesurée comme tel.

Plans de fracture : où découper le logiciel et les équipes

Quand une partie du système est devenue trop grande pour une seule équipe, il faut la découper, et le découpage doit fonctionner à la fois pour le code et pour les équipes. Team Topologies appelle plans de fracture les lignes de découpe naturelles le long desquelles le logiciel peut être divisé. Le livre en énumère plusieurs, et le premier est généralement le meilleur : un contexte délimité issu de la conception pilotée par le domaine, car une frontière qui suit le langage et les règles du métier tend à garder ensemble les changements liés.

Les autres sont utiles quand ils correspondent à une vraie différence dans la manière dont les parties du système doivent être traitées. Découper selon une frontière technologique seule (par exemple une équipe mobile et une équipe backend) est généralement le choix le plus faible, car la plupart des changements la traversent alors : c’est la structure d’équipes en couches contre laquelle met en garde la loi de Conway.

Plans de fracture, avec des exemples tirés de la livraison de repas

Plan de fractureDécouper quandExemple
Domaine métier (contexte délimité)Des parties du domaine ont leur propre langage, leurs propres règles et leurs propres expertsCommandes, intégration des restaurants et gestion des livreurs en tant que contextes distincts
Conformité réglementaireUne partie est soumise à des règles qui ne doivent pas peser sur le resteTraitement des paiements par carte maintenu dans un périmètre restreint et audité pour PCI DSS
Rythme des changementsCertaines parties changent chaque jour, d’autres chaque annéeLes promotions et les campagnes changent chaque semaine ; les règles de facturation changent rarement
Localisation des équipesLes équipes travaillent dans des fuseaux horaires qui se chevauchent peuUne équipe des opérations livreurs, dans un autre pays, est responsable de l’intégration des livreurs
RisqueCertaines parties tolèrent les expérimentations, d’autres nonExpérimentations de recommandation séparées de l’acceptation des commandes
Isolation des performancesUne partie a des besoins de charge ou de latence très différentsMises à jour en direct de la position des livreurs séparées de la consultation des cartes
TechnologieUne partie a besoin d’une pile technologique réellement différenteUne ancienne intégration des tablettes des restaurants qui ne fonctionne que sur du matériel ancien
Personas utilisateursDifférents groupes d’utilisateurs ont des besoins et des parcours différentsLes clients, le personnel des restaurants et les livreurs ont chacun leur app et leur équipe

La loi de Conway, la manœuvre inversée et ses limites

Team Topologies est, en pratique, une boîte à outils pour la manœuvre de Conway inversée décrite à la section 3.7 : décider de l’architecture voulue, puis façonner les équipes et les modes d’interaction pour que la loi de Conway pousse le système vers elle. Ses apports sont pratiques. Les types d’équipes disent quel genre d’équipe doit être responsable de chaque partie ; les modes d’interaction disent quelles frontières entre équipes sont censées être minces (X en tant que service) et lesquelles sont temporairement épaisses (collaboration) ; la charge cognitive dit de combien chaque équipe peut être responsable ; les plans de fracture disent où couper.

Les limites vues à la section 3.7 s’appliquent toujours et méritent d’être rappelées dans ce contexte. Réorganiser les équipes ne restructure pas une base de code fortement couplée : pendant des mois après une réorganisation, les nouvelles équipes se battront contre l’ancienne architecture, et c’est pourquoi les changements d’équipes et les changements d’architecture doivent être planifiés comme un seul programme. Des frontières figées trop tôt dans des équipes rendent les erreurs coûteuses : beaucoup d’organisations gardent donc les frontières incertaines à l’intérieur d’une seule équipe ou d’un seul monolithe modulaire jusqu’à disposer de preuves. Et des réorganisations fréquentes détruisent la connaissance des équipes durables dont dépend l’approche.

Les praticiens ne s’accordent pas non plus sur la mesure dans laquelle il faut appliquer le cadre à la lettre. Ses partisans apprécient le vocabulaire commun, qui transforme des plaintes vagues (nous attendons sans cesse l’équipe data) en questions sur lesquelles on peut travailler en conception (quel mode d’interaction voulons-nous avec l’équipe data, et qu’est-ce qui en ferait un X en tant que service ?). Ses détracteurs avertissent que les quatre types sont souvent appliqués comme des étiquettes à une organisation inchangée, que les vraies équipes mélangent parfois les types (une équipe plateforme qui est aussi responsable d’un sous-système compliqué) et que le cadre dit peu de choses du financement, de la structure managériale ou des incitations. Les deux points sont justes : les types sont une aide à la conception, pas un organigramme, et les auteurs eux-mêmes les présentent comme un point de départ pour un ajustement continu.

Exemple commenté

Exemple commenté : réorganiser les équipes de la livraison de repas autour des flux

La plateforme de livraison de repas compte désormais 38 ingénieurs répartis en cinq équipes organisées par couche technique : apps mobiles, frontend web, API backend, base de données et exploitation. Le délai entre une idée et sa mise en production est d’environ six semaines, les mises en production sont coordonnées toutes les deux semaines entre toutes les équipes, et les trois derniers incidents ont chacun duré plusieurs heures parce que personne n’était responsable d’un parcours client complet. L’architecte et les responsables de l’ingénierie repensent l’organisation en cinq étapes.

1. Cartographier les fluxUn event storming et un examen des 50 dernières fonctionnalités font apparaître trois grands flux de changements : les commandes des clients (cartes, panier, paiement, suivi), les restaurants partenaires (intégration, cartes, horaires d’ouverture, versements) et la livraison (intégration des livreurs, affectation, suivi en direct). 44 des 50 fonctionnalités relevaient principalement de l’un d’eux.
2. Vérifier les plans de fracture du logicielCommandes, restaurants et livraison sont déjà des contextes délimités distincts, avec leurs propres services et bases de données (section 11.1) : le code peut donc suivre. L’affectation des livreurs utilise un solveur d’optimisation que seuls trois ingénieurs comprennent : un candidat au sous-système compliqué. Les paiements par carte restent chez Commandes, mais dans un petit module audité séparément (plan de fracture réglementaire).
3. Dimensionner les équipes selon la charge cognitiveTrois équipes orientées flux de 7 personnes (chacune avec des compétences mobile, web, backend, tests et exploitation). Une équipe sous-système compliqué de 5 personnes pour l’optimisation de l’affectation (les trois spécialistes plus deux ingénieurs qui apprennent le domaine). Une équipe plateforme de 9 personnes, responsable des pipelines, de l’environnement d’exécution des conteneurs, de l’observabilité et du courtier d’événements. Une petite équipe facilitatrice de 3 personnes pour les pratiques de fiabilité. Total : 38.
4. Choisir les modes d’interactionLes équipes orientées flux consomment la plateforme en X en tant que service dès le premier jour, en utilisant ses pipelines existants. Livraison et Affectation collaborent pendant un trimestre pour repenser l’interface d’affectation, puis passent en X en tant que service. L’équipe facilitatrice accompagne Commandes pendant huit semaines (objectifs de niveau de service, runbooks d’astreinte), puis passe à Restaurants.
5. Publier les API d’équipe et mesurerChaque équipe rédige une API d’équipe d’une page, chaque service et chaque table de base de données reçoit exactement une équipe responsable, et les responsables suivent chaque trimestre le délai de mise en œuvre, la fréquence de déploiement, le nombre de tickets inter-équipes par fonctionnalité et un questionnaire sur la confiance pendant les astreintes.
Résultat attenduAu bout de deux trimestres, la plupart des fonctionnalités devraient être livrées par une seule équipe sans mise en production coordonnée ; un travail inter-équipes persistant signalerait une frontière à revoir.

La réorganisation part des flux de changements et des frontières existantes du logiciel, pas des lignes hiérarchiques actuelles.

Les spécialistes ne sont regroupés que là où le domaine l’exige (l’affectation), et la plateforme existe pour alléger la charge des équipes orientées flux, pas pour les contrôler.

Les modes d’interaction ont des dates de fin : on attend donc de l’organisation qu’elle évolue plutôt qu’elle ne se fige dans un nouvel organigramme.

Avant et après

Avant et après : équipes de livraison de repas passées de couches techniques à des équipes orientées flux, plateforme, facilitatrice et sous-système compliquéAvant : une équipe par couche technique (38 ingénieurs)Apps mobiles (8)Frontend web (6)API backend (12)Base de données (5)Exploitation (7)Une fonctionnalité,ex. commandes programmées,exige 5 équipes :4 transferts, 5 backlogs,1 mise en prod. communeAucun résultat client n’aun seul responsableAprès : équipes alignées sur les fluxCommandes (7)clients, paiementRestaurants (7)intégration, cartesLivraison (7)livreurs, suiviFacilitat. (3)fiabilité, durée limitéeOptim. de l’affectation (5)sous-système compliquéX-as-a-Servicepour tousPlateforme (9) : pipelines, runtime, observabilité, données
Les équipes par couche font passer chaque fonctionnalité par toutes les équipes ; des équipes orientées flux, soutenues par une plateforme, une équipe facilitatrice et une équipe spécialisée, peuvent livrer seules la plupart des fonctionnalités.

Questions fréquentes

Les équipes composant sont-elles toujours une erreur ?

Pas toujours. Une équipe responsable d’un composant partagé peut être le bon choix quand le composant exige une spécialité pointue (un sous-système compliqué) ou qu’il est proposé comme un véritable produit en libre-service (une partie d’une plateforme). Cela devient un problème quand la plupart des fonctionnalités exigent des modifications du composant et que les équipes orientées flux doivent faire la queue pour les obtenir.

Où se situent les architectes dans ce modèle ?

Généralement pas dans une équipe séparée qui contrôle les passages. Les architectes agissent souvent comme une équipe facilitatrice, en aidant les équipes orientées flux à prendre de bonnes décisions et en gardant visibles les qualités à l’échelle du système, et ils participent à la conception de la structure des équipes elle-même. La section 11.4 explique comment la gouvernance peut fonctionner sans points de validation.

À quelle fréquence les frontières des équipes devraient-elles changer ?

Rarement et délibérément. On s’attend à ce que les modes d’interaction changent tous les quelques mois ; la composition des équipes et leurs responsabilités doivent rester stables bien plus longtemps, car c’est dans les équipes durables que s’accumule la connaissance du domaine et du système.

Vérifiez votre compréhension

Citez trois choses que contient l’API d’une équipe en plus de ses interfaces de code.

Par exemple sa documentation et ses guides de prise en main, sa feuille de route et ses priorités, ses pratiques de travail, les canaux par lesquels on peut la joindre et la manière de lui demander du travail.

Pourquoi s’attend-on à ce que les modes d’interaction changent avec le temps ?

Parce que la collaboration convient à la découverte d’une nouvelle frontière et qu’une fois la frontière et l’interface comprises, les équipes doivent se stabiliser en X en tant que service ; les modes suivent le degré de maturité de la frontière.

Qu’est-ce que la plateforme viable la plus fine, et pourquoi la viser ?

Le plus petit ensemble de services, de documentation et de normes qui accélère réellement les équipes qui l’utilisent ; une plateforme plus grande risque d’ajouter de la charge cognitive au lieu d’en retirer.

Pourquoi une séparation entre équipe frontend et équipe backend est-elle généralement un plan de fracture faible ?

Parce que la plupart des fonctionnalités la traversent : chaque changement exige alors les deux équipes, des transferts et des mises en production coordonnées, c’est-à-dire la structure en couches que la loi de Conway transforme en un système en couches et couplé.

Suivant · 11.6Modernisation des systèmes héritésPourquoi les grandes réécritures échouent et comment moderniser sans risque à la place : les sept R, le strangler fig, branch by abstraction, les exécutions en parallèle, la capture des données modifiées, les couches anticorruption et une migration des données soigneuse.Continuer →

Sources et lectures complémentaires

Une question sur cette section ? ArchitectBot, l’assistant d’étude IA du cours, répond d’abord à partir du cours.

Demander : « Nous avons des équipes frontend, backend et base de données séparées, et chaque fonctionnalité prend des semaines. Comment proposer un passage à des équipes orientées flux sans tout casser ? »