Voltar ao Blog

Microfrontends

Como Começar um Projeto com Microfrontends: Guia Prático com Spotify Clone

Aprenda como aplicar microfrontends em um projeto real simulando o Spotify. Guia completo sobre orquestração, roteamento federado e decisões arquiteturais fundamentais.

21 de abril de 2025 5 min

Se você quer entender como aplicar a arquitetura de Micro Frontends em um projeto real, esse conteúdo é pra você.

A ideia aqui é simular a interface visual do Spotify, quebrando a aplicação em domínios funcionais, como se cada parte fosse responsabilidade de squads com missões bem definidas, seguindo o modelo organizacional de times autônomos:

🎯 Domínios Funcionais do Projeto

🎵 Listening Experience

Responsável pela área do player e controles de reprodução

📚 Library & Collections

Cuida das playlists, álbuns e conteúdo salvo

🔍 Content Discovery

Gerencia busca, recomendações e sugestões personalizadas

🧭 Navigation & Shell

Define a estrutura da interface, roteamento e layout principal

🧭 Etapa 1 — Orquestração: O Coração da Arquitetura

Mas antes de sair separando tudo em micro frontends, precisamos definir a base de como eles vão trabalhar em conjunto.

E é aí que entra a primeira etapa do nosso 📍Roadmap de Micro Frontends: Orquestração — o coração da arquitetura.

O que estamos realmente decidindo?

Quando falamos de orquestração, não estamos só escolhendo uma ferramenta ou estrutura de pastas. Estamos definindo decisões arquiteturais e de produto que terão impacto direto em:

  • Escalabilidade da plataforma
  • Autonomia dos times
  • Governança de deploy
  • Experiência do usuário
  • Velocidade de entrega

Perguntas Fundamentais:

  • Como os MFEs são organizados?
  • Como as equipes vão trabalhar?
  • Quem cuida do quê?
  • Como as rotas se conectam?
  • O que acontece se algo falhar?

Esse é o momento onde arquitetura e produto se alinham de verdade. Porque mesmo que cada MFE seja independente, o usuário precisa viver uma experiência única e integrada. E é a orquestração que garante que tudo funcione como uma plataforma — e não como um amontoado de aplicações desconectadas.

📦 1. Monorepo, Multi-repo ou Híbrido?

Essa decisão molda o modelo de colaboração entre times.

🔹 Monorepo

Tudo num único repositório.

✅ Quando usar:

  • Equipe única ou pequena
  • Ciclo de vida semelhante entre os MFEs
  • Precisa de integração contínua e controle mais rígido

❌ Quando evitar:

  • Vários times com níveis diferentes de maturidade
  • Desejo por deploys independentes

🔹 Multi-repo

Cada MFE tem seu próprio repositório.

✅ Quando usar:

  • Squads autônomos
  • Produtos com roadmap separado
  • Deploy sob controle de cada time

❌ Quando evitar:

  • Projetos iniciais ou times com pouca integração entre si

🔹 Híbrido

Um mix: shared libs em monorepo, MFEs separados.

✅ Quando usar:

  • Você precisa de consistência no Design System e utilitários
  • Quer permitir liberdade nos MFEs, sem sacrificar padronização

Nossa escolha: Multi-repo, simulando uma organização com produtos distintos, gerenciados por times autônomos, mas com responsabilidades bem definidas.

🛠️ 2. Ferramenta de Orquestração: Quem Conecta Tudo?

Orquestração também envolve escolher a tecnologia que une tudo na tela.

Aqui, entramos na parte técnica da arquitetura: o shell, o carregamento dos MFEs, o gerenciamento do ciclo de vida e o fallback em caso de erro.

As opções avaliadas:

🔸 Single-SPA

  • Agnóstico de framework
  • Controle total do ciclo de vida de cada MFE
  • Orquestração centralizada
  • Ideal pra criar um shell que carrega e descarrega apps conforme a rota

🔸 Module Federation

  • Compartilha código entre apps em tempo de execução
  • Perfeito para Design System ou lib compartilhada
  • Não cuida de rotas, nem orquestra MFEs diretamente

🔸 bit.dev / Zephyr Cloud

  • bit.dev é ótimo para compartilhamento de componentes
  • Zephyr Cloud é mais enterprise, com custos e curva de aprendizado mais altos

Nossa escolha: Single-SPA, porque:

  • Precisamos de controle sobre o carregamento dos MFEs
  • Queremos simular uma orquestração real com shell + apps
  • É flexível, bem documentado e didático para quem está aprendendo

🌐 3. Roteamento Federado: Como Manter a Navegação Fluida?

Separar a aplicação em MFEs não pode quebrar a experiência de navegação. Por isso, precisamos decidir como será o roteamento entre e dentro dos MFEs.

Padrões que avaliamos:

📍 Roteador no Shell

O shell define todas as rotas principais e decide qual MFE renderizar em cada caminho.

✅ Fácil de manter
✅ Ótimo para SEO
❌ MFEs têm pouca liberdade

🔁 Roteamento Cruzado

Um MFE pode redirecionar para outro (ex: busca redireciona para player).

✅ Dá mais fluidez à navegação
❌ Pode gerar acoplamento

🌿 Rotas Aninhadas por Domínio

Cada MFE tem suas rotas internas sob um path dedicado (Ex: /search, /library, /player/:id).

✅ Ótimo para clareza e organização
❌ Exige coordenação entre shell e MFE

⚠️ Fallbacks e Erros Isolados

Cada MFE precisa tratar seus próprios erros. Shell não deve cair por erro em um MFE específico.

✅ Aumenta a resiliência
✅ Evita tela branca geral em caso de falha

Nossa estratégia:

  • Shell gerencia as rotas principais
  • MFEs cuidam das subrotas internas
  • Usaremos boundaries de erro e fallback visual para garantir robustez

🧱 Decisão Arquitetural Não é Só Código

Arquitetura define como os produtos evoluem. E isso precisa andar junto com os objetivos de produto:

  • Se um time quer lançar uma nova funcionalidade sem esperar o outro, a arquitetura precisa permitir.
  • Se a empresa quer medir separadamente cada feature, a arquitetura precisa suportar.
  • Se a escala do projeto vai crescer, o código precisa vir preparado.

A orquestração é onde tudo começa. É onde alinhamos tecnologia, produto e times.

🤝 E Agora?

Essa foi a primeira etapa. Vamos seguir juntos, implementando cada parte do projeto de forma pública, aberta e prática.

Se você quer participar e aprender junto:

Este é o primeiro artigo de uma série prática sobre implementação de microfrontends. Para discussões técnicas, contribuições ou dúvidas sobre implementação, me encontre no LinkedIn ou GitHub.

Logo eliseu.dev

Software Developer especializado em Arquitetura de Software e Engenharia de Plataformas.

Currículo

Navegação

© 2026 Eliseu Santos. Todos os direitos reservados.

Feito com ❤️ e muito café