06: Arquitetura Limpa e Princípios SOLID
A Omni Sistemas aplica a Clean Architecture e os 5 princípios SOLID como restrições automatizadas na metodologia STE-DEV. A arquitetura estabelece barreiras…
Base de Conhecimento — 06: Arquitetura Limpa e Princípios SOLID
Resumo da Arquitetura
A Omni Sistemas aplica a Clean Architecture e os 5 princípios SOLID como restrições automatizadas na metodologia STE-DEV. A arquitetura estabelece barreiras rígidas para evitar que alterações em banco de dados, provedores de nuvem ou frameworks visuais quebrem regras de negócio fundamentais.
Estrutura Canônica das Camadas
- Camada de Apresentação (UI): Componentes visuais atômicos (< 100 linhas), desacoplados de bibliotecas de cliente HTTP ou drivers de banco de dados.
- Camada de Aplicação: Casos de uso e custom hooks que expressam fluxos de usuário e orquestram a comunicação entre repositórios.
- Camada de Domínio: Entidades centrais, value objects e contratos de interfaces livres de qualquer dependência externa.
- Camada de Infraestrutura: Implementações concretas de repositórios (PostgreSQL, Redis), integrações com APIs e serviços de mensageria (Kafka).
A Barreira entre DB-Row e DTO
- DB-Row: O schema de persistência reflete tabelas de banco e detalhes internos de armazenamento.
- DTO (Data Transfer Object): O contrato imutável trafegado para a tela ou consumido pela API externa.
- Regra de Ouro: É terminantemente proibido que componentes de tela recebam instâncias de
DB-Row. A conversão deve ocorrer obrigatoriamente através de adapters dedicados.
Aplicação dos Princípios SOLID
- S (Single Responsibility): Cada arquivo resolve exatamente um problema, reforçado pelo teto de 100 linhas.
- O (Open/Closed): Módulos são abertos para extensão por contratos, mas fechados para modificação no núcleo.
- L (Liskov Substitution): Repositórios concretos podem ser trocados sem alteração na lógica de negócio.
- I (Interface Segregation): Criação de interfaces pequenas e atômicas.
- D (Dependency Inversion): Módulos de alto nível dependem de abstrações (interfaces), nunca de implementações diretas.