Monolithe ou microservices : une question d'effectif
Le découpage en services répond à un problème de coordination entre équipes bien plus qu'à un problème technique. Des calculs pour situer votre seuil, et les rares cas où la technique décide quand même.
Par Elias Varen7 min de lectureMembres
Demandez à une équipe pourquoi elle a découpé en microservices, elle répondra « pour la scalabilité ». Demandez-lui ensuite combien d'instances tourne chaque service : la réponse est souvent deux, la seconde pour la disponibilité. Le découpage n'a rien dimensionné. Il a, dans le meilleur des cas, permis à plusieurs équipes de livrer sans s'attendre. Dans le pire, il a imposé à une seule équipe le coût de coordination de plusieurs.
Je considère un service comme une unité d'autonomie d'équipe. Le nombre de services se déduit du nombre d'équipes qui se gênent, bien plus que de la charge, du volume de code ou de l'élégance du schéma. Les calculs qui suivent permettent de situer le seuil, avec des hypothèses posées que vous remplacerez par les vôtres.
La file de merge d'un monolithe qui grandit
Un monolithe a une seule file d'attente vers la production. Tant qu'elle est vide, il n'a que des avantages, et le calcul qui compte est celui de sa saturation.
Avec une CI de 15 minutes et une règle saine, où chaque merge est validé sur la branche main à jour, les merges sont sérialisés. Sur une journée de 8 heures, la file laisse passer 8 × 60 / 15 = 32 merges. Avec 12 développeurs qui mergent chacun une fois par jour, elle est occupée à 12 / 32 = 37 %. Avec 40 développeurs, la demande dépasse la capacité ; les PR attendent, se périment, repassent la CI, et le délai moyen explose bien avant les 100 %, comme dans toute file.
On peut repousser ce mur, et il faut le faire avant de découper : regrouper les merges par lots, ne lancer que les tests touchés par le changement, paralléliser la suite. Une CI ramenée à 6 minutes donne 80 merges par jour. Cela représente des semaines de travail d'outillage, contre des trimestres pour une extraction de service.
À lire ensuite
Toute la rubrique ArchitectureArchitecture
Le comité d'architecture, ou comment ralentir sans protéger
Pourquoi une instance d'approbation préalable ajoute des semaines sans retirer de risque, quels besoins réels elle recouvre, et les mécanismes qui y répondent mieux, avec leurs propres défaillances.
8 minMembres
Architecture
Les migrations s'arrêtent à 80 % : comment les finir
Pourquoi une migration technique cale toujours au même endroit, ce que coûte l'état intermédiaire, et les mécanismes d'organisation qui permettent d'éteindre réellement l'ancien système.
7 minMembres
Architecture
Revenir des microservices : critères, plan de consolidation, ce qu'on perd
Les signaux qui justifient de regrouper des services, l'ordre dans lequel consolider sans fabriquer une boule de boue, et la liste honnête de ce que vous abandonnez en revenant.
7 minMembres