clean-architecture
Clean Architecture no Concentrador
Nossa plataforma adota rigidamente os padrões de Clean Architecture (Arquitetura Limpa), propostos por Robert C. Martin (Uncle Bob). O principal objetivo é a separação de conceitos (Separation of Concerns), permitindo que as regras de negócio permaneçam completamente isoladas e imunes a mudanças de frameworks, bancos de dados ou agentes externos.
1. Estrutura de Camadas
Nosso repositório Java e Javascript é estruturado em quatro camadas fundamentais:
-
1. Domain (Domínio):
- Contém as entidades puras e regras de negócio essenciais.
- Não possui dependência alguma de bibliotecas de terceiros (como Spring Boot ou Hibernate).
- Define as interfaces (portas) para repositórios e serviços externos.
-
2. Application (Aplicação):
- Orquestra o fluxo de dados dos casos de uso (Use Cases).
- Implementa a lógica específica de fluxo da aplicação.
- Converte estruturas de dados de entrada/saída (DTOs).
-
3. Infrastructure (Infraestrutura):
- Implementa as interfaces definidas no domínio (adaptadores).
- Lida com banco de dados (JPA, PostgreSQL, Redis), envio de e-mails, integrações com APIs governamentais, etc.
-
4. Presentation (Apresentação):
- Lida com requisições HTTP, rotas REST e controllers.
- Recebe dados do usuário e invoca os Casos de Uso.
2. Benefícios Práticos
- Independência de Framework: Podemos atualizar a versão do Spring Boot ou migrar para outro framework sem alterar uma única linha da regra de negócio central.
- Testabilidade: Os serviços de domínio podem ser testados unitariamente de forma simples, sem necessidade de levantar contextos pesados do Spring ou conexões de banco.
- Manutenibilidade: A estrutura clara impede que queries complexas ou lógica de banco fiquem espalhadas em controllers, reduzindo bugs e retrabalho.