Monorepo vs múltiplos repositórios: o que funciona de verdade para times pequenos?
A discussão de monorepo vs polyrepo voltou à tona com ferramentas como Turborepo, Nx e o crescimento de times fullstack. Qual funciona para times de 2 a 10 pessoas?
O argumento para monorepo
Código compartilhado sem NPM privado. Componentes de UI, tipos TypeScript, utilitários, tudo versionado junto, sem o ritual de publicar pacote para usar em outro repo.
Refatorações atômicas. Você pode mudar uma interface e atualizar todos os consumidores em um único PR.
Contexto unificado. Um dev consegue entender o sistema inteiro sem navegar por múltiplos repos.
O argumento para múltiplos repos
Isolamento. Um repo quebrando não bloqueia deploy de outro.
Permissões granulares. Terceiros (agências, freelancers, parceiros) acessam só o que precisam.
Simplicidade para times pequenos. Um repo por serviço é intuitivo para quem está começando.
O que as ferramentas mudaram
Turborepo e Nx resolveram a maioria dos problemas práticos de monorepo (build incremental, cache, pipeline de CI). O argumento "monorepo é lento" ficou desatualizado.
O problema restante é cultural: monorepo exige mais disciplina de boundaries entre pacotes para não virar uma bola de lama unificada.
Para times pequenos
Se você tem frontend + backend + lib compartilhada: monorepo. O overhead de polyrepo sem infra de pacotes é real.
Se você tem serviços completamente independentes com times diferentes: polyrepo. A separação física reforça a separação organizacional.
Você usa monorepo? O que te fez adotar ou evitar?