Eae gente bonita, beleza? Dessa vez vim falar um pouco sobre arquitetura e queria começar falando sobre a arquitetura hexagonal, que pelo menos assusta, mas na verdade, ela é bem simples.
O que é arquitetura de software?
Pode parecer óbvio mas nem todas as pessoas imaginam que um software tem uma arquitetura, então vou dar uma breve explicada sobre. A arquitetura de software é a forma como o seu código é organizado e arquiteto, não só as pastas que foram criadas mas também a regra que o time irá seguir para saber qual parte do software deve se relacionar com quem. Pode ser um pouco confuso, mas prometo que vai ficar mais simples!
Como funciona a arquitetura hexagonal?
Bom a arquitetura hexagonal ou também conhecida como ports and adapters tem o objetivo de isolar a camada de regra de negócio da sua aplicação fazendo que você possa trocar banco, serviços ou até mesmo a forma como é consumida sem afetar o core do app.
Normalmente uma aplicação que trabalha com essa arquitetura costuma ter 3 pastas.
Porém é importante disser que não é nada escrito na pedra e você pode alterar e ver esse mesmo tipo de arquitetura de formas diferentes. Recomendo dar uma pesquisada no Github, vai ver muita coisa legal lá.
- Infraestrutura: Aqui fica toda a parte de infraestrutura da aplicação como apis rest, serviços de mensageria e coisas do tipo.
- Application: Aqui você vai ser os casos de uso da sua aplicação ou podendo ter até serviços, vai depender da situação.
- Core: Aqui você vai ter os casos de uso da sua aplicação ou até mesmo serviços, dependendo da situação.
Abaixo tem uma imagem que pode ilustrar bem o que foi explicado a cima.
Como funciona a comunicação entre as camadas?
Bom tive a experiência trabalhando com java e apliquei também utilizando NestJS e a palavra-chave são interfaces! Você só precisa criar uma interface dizendo o que a camada vai receber e vai retornar, assim sendo a sua implementação irrelevante para a camada que está utilizandoe assim podendo ter implementações usando vários bancos diferentes mas sempre mantendo o mesmo "contrato" entre camadas.
Quando usar
A arquitetura hexagonal é ótima, mas não é uma bala de prata e deve ser usada no momento correto para evitar complexidade desnecessária em seu projeto. É altamente recomendada quando você tem diversos bancos de dados ou quando sua aplicação precisa ser consumida de formas diferentes. Assim, você terá a mesma regra de negócio sendo usada e sua aplicação poderá trabalhar com várias peças sem afetar outra camada.
Conclusão
Em resumo, podemos dizer que a arquitetura hexagonal serve para separar sua aplicação em camadas e isolá-las. Isso evita que sua regra de negócio esteja sempre misturada com a lógica da sua aplicação.
--
Espero que tenha sido claro e tenha ajuda a entender um pouco mais sobre o assunto, fique a vontade para dúvidas e sugestões abaixo!
Recomendo darem uma olha em projeto no Github, pesquisem no google por arquitetura hexagonal github na linguagem que quiserem e sejam felizes. Recomendo apertar a tecla '.' (ponto final) do seu teclado quando estiverem logados para navegar e visualizar de uma forma melhor os projetos.
Se chegou até aqui, me segue la nas redes vizinhas.