Olá, Osiel!
Entendo que você esteja curioso sobre o uso de monorepos, especialmente porque a empresa em que você trabalha os utiliza.
Monorepos são uma estratégia de organização de código na qual todo o código de um projeto, ou mesmo de vários projetos relacionados, é armazenado em um único repositório (daí o nome "monorepo"). Grandes empresas, como a Google e o Facebook, usam essa abordagem.
Vamos aos pontos principais:
Simplicidade: Com um monorepo, você não precisa se preocupar com a gestão de múltiplos repositórios, cada um com sua própria configuração, dependências, etc. Tudo está em um único lugar.
Compartilhamento de código: Em um monorepo, é muito mais fácil compartilhar código entre diferentes projetos. Isso pode ser especialmente útil se você tiver muitos projetos que compartilham a mesma base de código ou dependências.
Integração contínua: Com um monorepo, a integração contínua é mais fácil de configurar e gerenciar. Você pode configurar uma única pipeline de CI/CD que atenda a todos os seus projetos.
Porém, o monorepo não é uma solução mágica para todos os problemas. Ele tem suas desvantagens, como a dificuldade de gerenciamento à medida que o repositório cresce e a necessidade de ferramentas mais sofisticadas para gerenciar o build e os testes.
No seu caso, como você mencionou que está trabalhando em um projeto Java + React, o uso de monorepo pode não trazer tantas vantagens. Isso porque você está lidando com duas tecnologias diferentes que podem ter suas próprias dependências e configurações, o que pode complicar o gerenciamento em um monorepo.
Porém, é importante entender que a decisão entre monorepo e multirepo depende muito do contexto do projeto e da equipe. Se a sua empresa já está usando monorepos e você está confortável com isso, pode ser uma boa ideia continuar usando.
Espero ter ajudado e bons estudos!