Fala pessoal! Neste post vamos abordar o desenvolvimento de uma aplicação na abordagem tradicional e, logo em seguida, quais seriam as diferenças desta para a arquitetura hexagonal. No fim, iremos discutir se algumas abordagens aplicadas valem a pena e quais possíveis casos de aplicação desta arquitetura.
Se você ainda não está muito familiarizado com os conceitos hexagonais, sugiro ir no post anterior (Parte 1) e, logo em seguida, voltar para cá.
Este tutorial será feito em SpringBoot + Kotlin. Caso goste de uma abordagem relacionada ao NodeJS, recomendo ver o tutorial do Guerreiro Programador.
Imagine que alguns consoles não sejam…
Arquitetura de software sempre é um assunto que dá muito pano pra manga. Para alinhar conceitos rígidos à entregas apertadas com clientes que mudam requisitos todos os dias é preciso ter muito jogo de cintura.
Alguns conceitos já estão batidos como “use camadas de controle, serviço, domínio e repositório”. Um projeto com uma lógica toda implementada na camada web/apresentação por exemplo já dá calafrios em devs mais experientes ou em líderes de projeto que conduzem uma entrevista. Porém, existem mais padrões que podem deixar o código “mais limpo”.
Um destes padrões é chamado de “ports and adapters”, mas fica mais…
Quando utilizamos Spring, a validação dos dados passados ao Controller é feita de forma direta. A biblioteca javax.validation nos dá várias opções para evitar que um objeto venha com dados inconsistentes como, por exemplo, uma data de nascimento após a data atual ou um atributo obrigatório passado como nulo.
A forma de implementar a validação é bastante conhecida para os javeiros. Porém, quando começamos a nos aventurar no Kotlin, algumas peculiaridades podem acontecer. Por isso, esse post tem como principal objetivo ajudar a quem está iniciando Kotlin ou está tentando converter (nem sempre diretamente) os códigos Java em Kotlin.
Em uma arquitetura baseada em microsserviços, desacoplar os componentes de uma aplicação é fundamental para facilitar, por exemplo, a adição de novas funcionalidades e a escalabilidade da solução. Desse modo, ao contrário de estruturas monolíticas, os serviços são separados por funcionalidades, cada qual com um acesso à sua base de dados específica.
Um outro aspecto da aplicação, as configurações, pode ser migrado para um servidor centralizado. Esta alternativa traz dois benefícios: a responsabilidade da configuração em um serviço ao invés da aplicação e a possibilidade de gerenciar essas configurações de modo independente, oferecendo redundância quando necessário.
Mestre em Ciência da Computação (CIn/UFPE). Atualmente, é Engenheiro de Software. Gosta também de um bom futebol, F1, Star Wars, brega e doce de leite.