Coordination trop chère
Certaines features demandaient plusieurs pull requests, plusieurs releases séquencées et des contrats inter-services à surveiller.
Étude de cas
Une équipe de quatre développeurs maintenait sept microservices, plusieurs pipelines, un broker et trop de coordination pour le niveau réel de trafic et d'organisation.
La mission a transformé une architecture distribuée disproportionnée en monolithe modulaire exploitable : une CI, un backend déployable, le frontend servi en assets statiques, et une migration progressive sans big bang.
Contexte
Le choix microservices avait été fait avant que le produit, le trafic et l'organisation ne le justifient. Chaque feature traversait plusieurs services, plusieurs logs, plusieurs pipelines et plusieurs jeux de variables.
Certaines features demandaient plusieurs pull requests, plusieurs releases séquencées et des contrats inter-services à surveiller.
Avec staging, UAT et production, la règle des 3 pods minimum par service multipliait le coût et l'exploitation.
Le produit était live. La cible devait être atteinte sans freeze, sans big bang et avec un chemin de rollback clair.
Décisions
Le but n'était pas de nier les microservices. Le but était de remettre la distribution au bon niveau pour la taille de l'équipe et les contraintes produit.
Les préfixes HTTP existants ont servi d'unité de migration. Une route pouvait basculer vers le handler local sans changer l'interface externe.
Chaque bascule était protégée par feature flag : trafic local si le flag était actif, service externe sinon.
La cible était un monolithe modulaire, pas un bloc opaque. Les responsabilités métier devaient rester lisibles dans le code.
Le frontend a été servi comme assets statiques depuis le backend, avec une seule CI et un seul artefact à opérer.
Delivery
La trajectoire a été pensée pour que l'équipe continue à livrer pendant la transformation. Le travail combinait architecture, implémentation, exploitation et décommissioning.
La logique du service était ramenée dans l'application principale derrière la même interface HTTP.
Le flag permettait de tester en production, d'observer, puis de rendre la bascule permanente.
Une fois le flux stabilisé, l'appel réseau était supprimé, la queue drainée, puis le service retiré.
Impact
L'effet principal a été de retirer une taxe distribuée que l'organisation ne récupérait pas en autonomie ou en scalabilité.
Stack
La valeur ne venait pas d'une technologie unique, mais de l'alignement entre architecture applicative, runtime et delivery.
Leçon
Un système distribué est justifié quand il résout un vrai problème d'organisation, de charge ou d'isolation. Sinon, il transforme chaque feature en coordination inutile.