Conceitos da Arquitetura Hexagonal

Definição

  • Padrão de design de negócio

  • A aplicação é dividida em camadas

    • 1º camada: camada interna da aplicação (application core) (não se comunica com o mundo externo)

    • 2º camada: camada externa (ports e adapters) da aplicação (responsável pela comunicação com o mundo externo)

      • Exemplos

        • Banco de dados

        • Broker (mensageria)

        • Terminal

        • API

  • Com a divisão da aplicação em camadas, o núcleo da aplicação (application core) é isolado e com isso é garantido uma maior testabilidade e também um menor acoplamento

Estrutura

  • Application core

    • Núcleo da aplicação

    • Sempre deixar com o menor nível de acoplamento

  • Port

    • Definição

      • São abstrações do application core

      • É a forma do application core se comunicar com o “mundo externo”

    • Função: encapsular as regras de negócio da aplicação (baixo acoplamento)

  • Adapter

    • Definição

      • É a implementação do port

      • Existem 2 tipos de adapters

        • Inbound adapter

          • Camada externa executa uma ação na qual chama a camada interna (uma funcionalidade do application core)

          • Exemplos

            • Browser

            • Queue (Consumer)

        • Outbound adapter

          • Camada interna executa uma ação na qual chama a camada externa (serviço externo)

          • Exemplo

            • Banco de dados

            • Queue (Producer)

    • Função: responsável pela comunicação entre a aplicação e o “mundo externo”