ADR 0010: Adoção de Arquitetura Monolítica Modular vs. Microsserviços¶
Status¶
Aceito
Contexto¶
Durante as fases iniciais de desenvolvimento do EdTech, surgiu a necessidade de definir como os domínios do sistema (ex: Autenticação, Gestão de Documentos, Gestão de Projetos) seriam separados. A estrutura inicial de diretórios chegou a prever pastas separadas (docvault/auth e docvault/api), sugerindo uma arquitetura orientada a Microsserviços, onde o serviço de Autenticação rodaria de forma isolada do restante do backend.
No entanto, o escopo atual (MVP - Produto Mínimo Viável) exige velocidade de iteração, facilidade no fluxo de CI/CD (Integração e Entrega Contínuas), além de baixa complexidade em infraestrutura (redução de custos operacionais e da necessidade de orquestrar diversos containers).
Decisão¶
Decidimos consolidar toda a lógica de negócio, incluindo Autenticação (Login, Registro e JWT) e o Core do repositório, dentro de um único aplicativo Spring Boot (edtech-api), adotando o padrão de Monolito Modular.
A antiga pasta de microsserviço de autenticação (docvault/auth) foi removida da base de código, e os Controllers e Services referentes à segurança encontram-se isolados de forma lógica (em pacotes Java específicos) dentro do próprio projeto principal.
Consequências¶
Positivas¶
- Simplicidade de Deploy: Apenas um Dockerfile e um serviço no Cloud Run.
- Agilidade de Desenvolvimento: Desenvolvedores front-end e back-end só precisam levantar um único backend local na porta
8080para terem todo o sistema funcional. - Menor Complexidade de Rede: Sem necessidade de chamadas de rede internas (HTTP/gRPC) para validação de tokens entre serviços. Transações e consultas ao banco de dados são diretas.
- Organização Lógica: O código segue bem estruturado em pacotes (módulos lógicos), o que facilita a refatoração ou até a futura quebra em microsserviços, caso o produto ganhe tração e exija escala horizontal isolada de algum módulo.
Negativas¶
- O backend (Spring Boot) sofre um acoplamento temporal: caso o serviço de upload de arquivos tenha um pico altíssimo de processamento e consuma toda a CPU, as rotas de login também serão penalizadas.
- Todos os módulos escalam juntos, mesmo os que possuem pouca demanda, o que poderia (no longo prazo) gerar ineficiência computacional.
Alternativas Consideradas¶
- Microsserviços Completos (Auth + API Isolados): Rejeitado. Isso demandaria a criação de um API Gateway, tratamento complexo de CORS e o dobro do trabalho no setup local dos desenvolvedores. Para o estágio de MVP, isso violaria o princípio de simplicidade (KISS).
Histórico de Versões¶
| Versão | Data | Descrição | Autor |
|---|---|---|---|
1.0 |
21/06/2026 | Criação do documento | Pedro Henrique P. Santos |
1.1 |
04/07/2026 | Revisão profunda, correção de metadados e melhorias visuais | Pedro Henrique P. Santos |