Jump to content

Postagens Recomendadas

Em poucas palavras, um monorepositório, ou monorepo, é um repositório único que contém múltiplos projetos, com relacionamentos bem definidos. Um monorepo não é somente ter vários projetos no mesmo repositório; é necessário que haja relações bem definidas entre eles. Do mesmo jeito, se um repositório tem uma grande aplicação sem divisão entre as partes, ele é somente um repositório grande, e não um monorepo. Um monorepo é o oposto de monolito.

Polyrepos ainda são bastante utilizados pelas empresas. Temos um quando utilizamos um repositório para cada time, aplicação ou projeto, e é comum que cada repositório tenha seu próprio CI. A indústria costuma utilizar esse padrão por uma razão: manter a autonomia de cada time. Com polyrepos, cada time pode escolher quais libs irão utilizar, quando terão seus depoloys, e quem pode ter acesso a cada repositório.

Se um polyrepo traz toda essa autonomia, porque as empresas tentariam algo diferente? Essa autonomia tem um custo: isolamento. E isolamento prejudica a colaboração. Aqui estão algumas desvantagens dos polyrepos:

  • Dificuldade em compartilhamento de código: para compartilhar código entre repositórios, seria necessário criar um repositório para o código compartilhado. E isso requer configurar o CI, adicionar os membros do projeto, configurar a publicação desse projeto, etc. Isso sem falar que é necessário manter essa dependência atualizada nos projetos manualmente.
  • Muita duplicação de código: nem todos estão dispostos a criar um repositório para compartilhar código, por isso acabam apenas copiando o código de um projeto para o outro. Isso aumenta o custo da manutenção, diminui a segurança e degrada o controle de qualidade.
  • Ferramentas não padronizadas: cada projeto tem seus próprios comandos para rodar testes, builds, linting, deploys, etc. Isso causa estresse mental desnecessário nos desenvolvedores.

E quais vantagens um monorepo traz?

Além de resolver os problemas listados sobre polyrepos, aqui estão outras vantagens:

  • Sem gasto de tempo desnecessário criando novos projetos: configurar tudo que é necessário para um projeto funcionar é automático. Não é mais necessário gastar tempo configurando o linting, testes, build, etc.
  • Commits atômicos entre os projetos: não existem mais breaking changes, pois tudo funciona junto em cada commit.
  • Liberdade dos desenvolvedores: agora desenvolvedores podem contribuir com códigos de outros times, pois conseguem verificar que suas mudanças são seguras.

Devo utilizar essa técnica na minha empresa e em meus projetos?

Se você acha que essas vantagens que listei aqui são vantagens para você, sim, você pode utilizar um monorepo na sua empresa. Mas cuidado, um monorepo com uma arquitetura mal definida (ou não definida) pode virar um monolito distribuído. Um repositório mais complexo do que precisaria ser. Isso traz uma péssima experiência de desenvolvimento para o desenvolvedor. Por isso vá devagar. Testes as ferramentas existentes de gerenciamento de monorepos, estude com o time como será a arquitetura do seu monorepo, e aproveite! Você vai ver: monorepos dão um up na experiência dos desenvolvedores!

  • Curtir 2
Link to comment
Compartilhe em outros sites

Ótimo texto! 🚀

Essa distinção "clara e informativa" entre monorepos e polyrepos, ressaltando as vantagens e desvantagens de cada abordagem ficou massa. A explicação de que um monorepo não é apenas um repositório grande, mas sim um ambiente onde há relações bem definidas entre múltiplos projetos, é essencial para entender o conceito. As desvantagens dos polyrepos, como a dificuldade de compartilhamento de código e a duplicação de esforços, são pontos relevantes que muitas empresas enfrentam. Por outro lado, as vantagens do monorepo, como commits atômicos e a liberdade dos desenvolvedores para contribuir em diferentes projetos, mostram como essa abordagem pode melhorar a colaboração e a eficiência. É importante destacar a necessidade de uma arquitetura bem definida ao adotar um monorepo, para evitar transformar o repositório em um monolito distribuído. No geral, a decisão de adotar um monorepo deve ser cuidadosa e baseada nas necessidades específicas da empresa e dos projetos. Excelente análise!

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...