Trabalho com microfrontends a mais de um ano e para mim foi uma experiência ruim. Para ficar mais simples de entender minha opnião vou explicar separando pontos positivos e negativos, segundo a minha experiência:
Pontos Positivos
- Cada microfrontend pode ser criado com uma tecnologia diferente. Ideal para times gigantescos que trabalham em sistemas gigantescos (mas é preciso ter um design system bem definido, para não criar um Frankenstein).
- Os microfrontends sendo independentes permite que o deploy de cada parte seja feito separadamente, o que pode acelerar o envio de código para produção.
- Flexibilizar o deploy. No projeto que eu trabalhava, se algum cliente não quisesse ou precisasse de algum módulo, nós poderíamos não subir o container daquele microfrontend.
- CI mais rápido se a aplicação for grande, porque se só mexeu em um microfrontend, não vai precisar rodar testes dos outros.
Pontos Negativos
- Configurações de build complexas. Não é simples configurar o webpack com o module federation para tudo funcionar corretamente. Já tive alguns problemas que eram muito difíceis de achar aonde que estavam.
- Configurações de lint e formatação de código. É bom configurar tudo no começo e achar um jeito de padronizar tudo, ou se não vai acontecer o que aconteceu comigo: todas as configs do eslint e prettier eram replicadas em cada MFE.
- Compartilhamento de código. Cada microfrontend deveria ser independente, mas e se você tem um componente genérico que é usado em todos eles (supondo que todos usem a mesma tecnologia)? No projeto que eu trabalhava, todos os MFEs eram feitos em React e existia um chamado Common, que disponibilizava código a ser reutilizado (componentes, funções, hooks, etc).
- Comunicação entre MFEs. Para um mandar algum dado para outro você possivelmente vai precisar usar Custom Events do JS.
Conclusão
Para mim, MFEs só servem se você está tendo problemas com monolitos muito grandes, por conta de aplicações imensas (pensa no Mercado Livre, por exemplo) e se tem um time de front grande também.
O que os MFEs resolvem são questões mais relacionadas a gestão de pessoas e times do que questões técnicas relacionadas a código e a aplicação.
Pode parecer uma solução incrível no começo, mas garanto que dá muita dor de cabeça, especialmente se for implementado de forma descuidada e não acho seja uma boa ideia começar um projeto usando microfrontends, porque é muita complexidade sem necessidade.