Pular para o conteúdo

Monorepos ganham espaço na era da IA. A fronteira entre contextos é o que faz funcionar.

Um repositório só aproxima a IA do código real. No painel do Grupo SBF, o Nx separa libs globais e libs de contexto de negócio.

Por

~5 min de leitura

Capa: um cartão central aceso ligado a cartões menores, um deles com uma estrela.

A inteligência artificial lê o repositório antes de escrever a próxima linha. Quando o código, a convenção e o contexto do negócio estão no mesmo lugar, o modelo chega mais perto do que o time já decidiu. Quando cada pedaço mora num repositório diferente, ele completa a lacuna com um padrão que o projeto não usa.

Por isso o monorepo tem ganhado espaço. Times compartilham biblioteca há anos. O motivo que pesa agora é outro: a sessão de IA precisa enxergar o grafo real. O que é global, o que é de um contexto, e o que não deve ser importado.

1. O que o monorepo entrega

Um contexto só. Lint, pasta, nome de lib e o jeito de chamar a API estão escritos uma vez. A próxima sessão herda isso. O modelo deixa de inventar um segundo design system ou um segundo cliente HTTP.

A mudança fica visível. Uma lib compartilhada alterada mostra quem depende dela. O refactor que antes era copiar o padrão em cada repositório vira mudar a origem e ver o impacto. Para a IA, isso é o mapa. Para o time, é o mesmo mapa.

Consistência no mesmo lugar. Teste, pipeline e fronteira nascem juntos. O agente segue um padrão. Quem revisa também.

Entrada mais curta. Pessoa nova e modelo novo leem a mesma árvore. O caminho para achar onde aquilo vive é um só.

A IA ainda aumenta o volume de mudança. Mais geração, mais pull request, mais chance de um ajuste atravessar o que não devia. O monorepo concentra esse volume. A organização deixa de ser detalhe e passa a ser o que segura a velocidade.

2. No Grupo SBF, o painel cabe nesse desenho

No Grupo SBF, o painel — o backoffice — vive num monorepo gerido com Nx. Para nós, tem funcionado muito bem.

A separação que segura o dia a dia é simples: libs globais e libs de acordo com o contexto do negócio.

A lib global carrega o que todo mundo precisa do mesmo jeito. Base de UI, cliente, utilitário estável. A lib de contexto carrega a regra daquele domínio. Quem entra numa squad encontra o lugar da feature sem vasculhar o repositório inteiro. Quem evolui um fluxo mexe no contexto certo e deixa o restante quieto.

O Nx é o mapa dessa separação. Dependência explícita, projeto com fronteira, um lugar claro para cada lib. Com isso, o monorepo vira um conjunto de fronteiras.

Essa organização facilita para o time entender, atuar e evoluir. Facilita a IA pelo mesmo motivo: o recorte já está nomeado. O modelo acha a lib do contexto antes de propor um atalho no global.

3. Os contras de muitos times na mesma codebase

A mesma codebase que aproxima também concentra o risco.

Muitos times no mesmo código. Squads diferentes abrem pull request na mesma árvore. Um ajuste numa lib global atravessa um fluxo que aquela squad não pediu. A review vira fila. O ownership fica difuso: se todo mundo pode mudar, o custo da mudança se espalha e ninguém o sente por inteiro.

Raio de impacto. Uma quebra numa lib compartilhada pinta o pipeline de vários contextos. O feedback deixa de ser da feature e passa a ser do repositório. Sem cache e sem saber o que foi afetado, a espera cresce junto com o grafo.

Acoplamento disfarçado de reuso. Importar de outro contexto é fácil. A fronteira some. O que era compartilhar o estável vira um domínio conhecendo o interno do outro. O monorepo fica com o custo e perde a vantagem.

Carga para quem lê. Sem nome de contexto, a árvore vira labirinto. Pessoa e modelo percorrem arquivo demais até achar o lugar certo. Contexto de mais também confunde a IA: a janela de contexto enche com código que não é desta tarefa, e a sugestão mistura dois domínios.

Governança do que é global. Quem pode mudar uma lib que todo mundo consome? Quem revisa? Permissão larga demais acelera o atalho. Permissão estreita demais vira gargalo de um time só.

A ferramenta faz parte do produto. Nx, ou o equivalente, precisa ser cuidado. Se o grafo mente, a pessoa e o agente confiam no caminho errado. A ferramenta não escolhe onde cada coisa mora. Essa decisão continua com o time.

Há um efeito específico da IA nesse cenário. O modelo enxerga o repositório inteiro e tende a aproveitar um arquivo de outro contexto, ou a subir uma abstração para a lib global porque ali todo mundo usa. A sugestão parece ajuda. O acoplamento entra no diff.

4. A fronteira é o que faz funcionar

O que tem segurado no painel é tratar a separação como regra.

Lib global muda com critério e com dono. Lib de contexto muda com a squad daquele negócio. A dependência segue um sentido: o contexto pode usar o global. Um contexto não atravessa o interno de outro. Quando a IA sugere um import, a fronteira diz se aquilo cabe.

Muitos times na mesma codebase funcionam quando cada contexto tem um lugar e um responsável. O monorepo junta o trabalho no mesmo git. A fronteira é o que impede um time de desfazer o contexto do outro. Na era da IA, isso fica mais visível, porque o modelo escreve no lugar que encontrar aberto.

O principal aprendizado?

O monorepo ajuda a IA porque a decisão e o código moram juntos. Ele ajuda o time quando a fronteira entre o global e o contexto do negócio continua explícita.

No painel do Grupo SBF, o Nx tem sido esse mapa. Separar libs globais e libs por contexto de negócio facilitou entender, atuar e evoluir. A ferramenta organiza. A fronteira é a decisão.

Leva para a próxima conversa.

Se fez sentido aqui, pode fazer sentido para mais alguém.

Continue lendo

  1. IA acelera o desenvolvimento. Boas decisões de engenharia sustentam a entrega.

    Práticas para equilibrar velocidade, qualidade e previsibilidade em uma entrega de front-end.

    ~2 min de leitura

  2. A IA fica perto do projeto quando a decisão já está escrita.

    No Raise Clubs, a plataforma evolui por especificação. Convenção, decisão e aceite ficam no repositório para o modelo implementar o front-end que eu espero.

    ~3 min de leitura