Monorepo: Uma Armadilha Disfarçada de Praticidade (Anti-pattern)

jhonesgoncalves

Jhones Gonçalves

Posted on November 24, 2023

Monorepo: Uma Armadilha Disfarçada de Praticidade (Anti-pattern)

Introdução:

Nos últimos anos, o conceito de monorepositório, ou monorepo, tem sido propagado como uma solução para todos os males do desenvolvimento de software. No entanto, neste artigo, desafiaremos essa narrativa, expondo as armadilhas e desvantagens associadas ao uso do monorepo em contextos onde ele muitas vezes se revela mais um problema do que uma solução.

Image description
Figura 1: O "Monorepo" como uma solução única.

Estrutura monorepo:

monorepo/
|-- api/
|   |-- index.js
|   |-- package.json
|
|-- frontend/
|   |-- index.html
|   |-- main.js
|   |-- package.json
|
|-- package.json

Enter fullscreen mode Exit fullscreen mode

A estrutura gera uma falsa sensação de organização porem isso se torna um pesadelo pois você tem tudo em um só lugar onde os commits, as branchs , os conflitos estão tudo em um só lugar.

Desvantagens do Monorepo:

Escala Descontrolada:

À medida que um projeto cresce, o monorepo pode se transformar em uma fera incontrolável. O aumento de escala frequentemente resulta em tempos de compilação e testes mais longos, prejudicando a eficiência do processo de desenvolvimento.

Complexidade Crescente:

A ideia de centralizar tudo em um único repositório pode parecer atraente, mas a complexidade associada a isso pode rapidamente se tornar esmagadora. Manter uma visão clara e concisa do código em um monorepo pode ser uma tarefa hercúlea.

Dificuldades na Adoção Gradual:

Migrar para um monorepo é uma tarefa complexa, especialmente para projetos já existentes. A transição abrupta pode levar a períodos de instabilidade e desorientação na equipe.

Controle de Acesso Complicado:

Garantir que as equipes certas tenham acesso às áreas apropriadas do código pode se tornar uma dor de cabeça. O controle de acesso e permissões no contexto de um monorepo pode se tornar um desafio, especialmente em organizações maiores.

Dificuldades no Processo de Deploy:

Com o monorepo, torna-se muito desafiador a construção de pipelines, visto que o projeto ganha uma complexidade enorme com vários projetos em um só lugar.

Image description
Figura 2: Desafios no processo de Deploy.

Dificuldades na Estratégia de Branchs:

Com o monorepo, a estratégia de branches se torna muito complicada devido ao grande volume de alterações dentro do repositório.

Messy

🏆 Conclusão:

Em um mundo onde o monorepo é frequentemente apresentado como uma bola de prata para os desafios do desenvolvimento de software, é crucial questionar se essa abordagem é sempre a melhor escolha. Projetos menores, equipes reduzidas e contextos onde as fronteiras entre componentes são claras muitas vezes se beneficiam mais de alternativas mais flexíveis. Ao considerar a implementação de um monorepo, é fundamental pesar os benefícios em relação às possíveis armadilhas e avaliar se essa abordagem se alinha verdadeiramente com as necessidades específicas do projeto em questão.

🚨 Cuidado com o Monorepo! Avalie suas necessidades antes de se comprometer. 🚨

💖 💪 🙅 🚩
jhonesgoncalves
Jhones Gonçalves

Posted on November 24, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related