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.