O Que É um Monólito? Um Codebase, Um Deploy
Um monólito é uma aplicação única onde todas as funcionalidades vivem em um codebase e são entregues como uma única unidade implantável.
Um monólito mantém tudo junto: a UI, a lógica de negócio e o acesso a dados compilam e fazem deploy como um único artifact. É o ponto de partida padrão para a maioria dos sistemas e, apesar do hype em torno de separar as coisas, um monólito bem estruturado é frequentemente a escolha certa. Seu formato de artifact único dá ao CI/CD uma história refrescantemente simples.
Como um monólito se parece
Um repositório, um build, um artifact implantável. Uma requisição pode fluir pelas camadas via chamadas de função in-process em vez de saltos de rede, então não há service discovery, nem autenticação entre serviços, nem falha distribuída para raciocinar.
A vantagem
- Deploys simples: um artifact, um release.
- Desenvolvimento local fácil: rode o app inteiro em um laptop.
- Chamadas in-process rápidas em vez de idas e voltas na rede.
- Testes de ponta a ponta diretos em um único processo.
Onde ele sofre
À medida que o codebase e a equipe crescem, um build compartilhado se torna um gargalo. Cada mudança rebuilda e reimplanta tudo, escalar significa duplicar o app inteiro, e um único commit ruim pode bloquear o release inteiro.
O panorama de CI/CD
Um monólito tem exatamente um pipeline, que é fácil de raciocinar mas tende a ficar lento. A suíte de testes completa roda a cada mudança, então os tempos de build sobem à medida que o app cresce. Caching, paralelismo de testes e execuções seletivas de testes são as alavancas usuais para manter esse pipeline rápido.
Monólito não significa bagunçado
Um monólito ainda pode ser limpamente estratificado internamente. A distinção é o formato de deployment, não a qualidade do código. Um monólito organizado com limites de módulo claros é frequentemente mais fácil de operar do que um emaranhado de serviços mal definidos.
Mantendo o pipeline único rápido
Como tudo roda em um único pipeline, a duração do build é o que se deve observar. Caching de dependências e runners warm (como o Latchkey fornece) cortam o imposto do cold start que, de outra forma, se acumula em um build monolítico grande.
Principais conclusões
- Um monólito é um codebase que faz build e deploy como uma única unidade.
- Ele oferece a história de CI/CD mais simples, mas um único pipeline que desacelera à medida que cresce.
- Monólito descreve o formato de deployment, não se o código está bem organizado.