Aller au contenu
Micro-front-ends : autopsieLecture : 0 %

Micro-front-ends : autopsie

Ce que les micro-front-ends achètent vraiment, ce qu'ils facturent en bundle, en expérience et en exploitation, et le critère pour savoir si votre organisation a le problème qu'ils résolvent.

Par Elias Varen7 min de lectureMembres

Un micro-front-end n'a jamais rendu une page plus rapide, plus cohérente ni plus simple à débugger. Il achète une seule chose, le droit pour une équipe de mettre en production sa partie de l'écran sans attendre les autres. Tout le reste est une facture, adressée à des gens qui n'ont pas participé à la décision : l'utilisateur, qui télécharge le découpage de votre organigramme ; le designer, qui regarde l'interface se désaccorder ; et la personne d'astreinte, qui cherche à qui appartient une erreur née entre deux fragments.

J'appelle micro-front-end une page assemblée à l'exécution à partir de morceaux construits et déployés séparément. Un monorepo avec des paquets par domaine, assemblés à la compilation, n'en est pas un, et c'est justement ce qui le sauve.

Le bundle : partager ou dupliquer, il faut choisir

Chaque fragment est construit seul. Il embarque donc, par défaut, tout ce dont il a besoin : le runtime du framework, le routeur, la bibliothèque de formulaires, le design system. Soit un socle commun de 60 Ko compressés et cinq fragments présents sur le même écran.

Sans partage      5 × 60 Ko = 300 Ko de socle, dont 240 Ko de doublons
Avec partage      1 × 60 Ko, à condition que les cinq acceptent la même version

La seconde ligne a l'air d'une évidence, jusqu'à ce qu'on lise sa condition. Pour qu'un runtime soit chargé une seule fois, tous les fragments doivent tolérer la version présente dans la page. On vient de réintroduire le couplage qu'on voulait supprimer : la montée de version majeure du framework redevient un chantier coordonné entre toutes les équipes, sauf qu'il n'y a plus de repo commun ni de compilation commune pour dire qui est prêt.

La variante intermédiaire, celle que proposent les outils de fédération de modules, négocie les versions à l'exécution. Si les plages déclarées sont compatibles, une seule copie est chargée ; sinon, chacun charge la sienne. C'est élégant, et c'est le pire des deux mondes en diagnostic, parce que le poids de la page dépend de l'ordre de déploiement des équipes. Un fragment qui resserre sa plage de versions un mardi ajoute 60 Ko à un écran qu'il ne possède pas, et personne ne reçoit d'alerte.

Micro-front-ends : autopsie · Deepstack