Home > Architecture > Arquitetura Hexagonal

Arquitetura Hexagonal

Dr. Cockburn é um renomado consultor que entre outras contribuições, ajudou na criação do Agile Development Manifesto e no desenvolvimento de Use Cases. Ele definiu um pattern chamado Ports and Adapters (‘’Object Structural’’) ou “Hexagonal Architecture“.

O objetivo, como descrito no documento acima, é permitir que uma aplicação seja igualmente “conduzida” por usuários, programadores, testes automáticos ou scripts batch, e que seja desenvolvida e testada de forma isolada do seu ambiente e banco de dados de produção.

A idéia por trás deste pattern é isolar a aplicação (veja figura ao lado) e, à medida que eventos chegam em direção à aplicação através de uma porta (port), um adapter específico converterá este evento em uma chamada de procedure ou mensagem e encaminha a requisição, já traduzida, para a aplicação.

Independente do dispositivo ou ambiente onde esteja sendo executada, dos sinais recebidos e dos que precisam ser enviados ao “mundo exterior”, tudo isto precisa ser transparente para a aplicação.

Uma das motivações, de acordo com o autor, é prevenir um velho problema que encontramos em muitas aplicações: a inclusão de lógica de negócio no código da interface de usuário (GUI). Alguns problemas que isto traz:

  • o sistema não pode devidamente testado porque parte da lógica é dependente de como os detalhes de apresentação da camada visual são apresentados
  • pela mesma razão, é impossível simular a interação de um ser humano através, por exemplo, de um script batch (para fins de teste)
  • difícil integração com outros programas ou sistemas devido ao alto acoplamento da camada de negócio com a camada visual

A proposta é que todas as funcionalidades estejam externalizadas através de uma API. Vários ports seriam criados para cada ator que precisa interagir com a aplicação: GUI, banco de dados, acesso via FTP, funções de teste etc. Veja a figura a seguir com alguns detalhes da fronteira da aplicação e as várias interações com o mundo:

Bom, e o que isto tem a ver com SOA? Eu acho que esta é uma excelente opção para fazer um wrapper em sua aplicação legada e inseri-la no meio-ambiente da sua arquitetura orientada a serviços.

Boa sorte!

Categories: Architecture Tags:
  1. No comments yet.
  1. No trackbacks yet.