JHipster com uma arquitetura de microsserviço
1. Introdução
Neste artigo, vamos explorar um exemplo interessante comJHipster - construir uma arquitetura simples de microsserviços. Mostraremos como construir e implantar todas as peças necessárias e, no final, teremos um aplicativo de microsserviço completo instalado e funcionando.
Se você é novo no JHipster, verifiqueour introductory article antes de prosseguir para ter um bom entendimento dos fundamentos desta ferramenta de geração de projetos.
2. Monolítico vs. Microsserviço
Em nosso artigo inicial, ilustramos como criar e inicializar um aplicativo monolítico que é relativamente fácil de manter.
Nosso sistema de microsserviço, por outro lado, separará o front-end do back-end que, por sua vez, também pode ser dividido em vários aplicativos pequenos, cada um lidando com um subconjunto do domínio completo do aplicativo. Naturalmente, como em todas as implementações de microsserviço, isso resolve alguns problemas, mas também introduz alguma complexidade, como lidar com o registro e a segurança de componentes.
O JHipster cuidará da maioria das dificuldades de gerenciamento dos aplicativos de microsserviço, com a ajuda de ferramentas modernas de código aberto comoEureka Server do Netflix eConsul do Hashicorp.
É claro que há algumas coisas a considerar aqui, como o tamanho ou a complexidade do nosso domínio, o quão crítico é o nosso aplicativo e quais os níveis de disponibilidade que queremos que precisamos ter, vamos hospedar nossos serviços em diferentes servidores e locais etc. O objetivo dessas ferramentas é, é claro, possível e fácil de gerenciar essas permutações.
2.1. Componentes do microsserviço JHipster
Ao trabalhar em uma arquitetura de microsserviço com JHipster, precisaremos construir e implantar pelo menos três projetos diferentes: um registro JHipster, um gateway de microsserviço e pelo menos um aplicativo de microsserviço.
The JHipster Registry é uma peça essencial da arquitetura de microsserviço. Ele une todos os outros componentes e permite que eles se comuniquem.
The Microservice Application contém o código de backend. Depois de executada, ela exporá a API para o domínio em questão. Uma arquitetura de microsserviço pode ser composta de muitos aplicativos de microsserviço, cada um contendo algumas entidades e regras de negócios relacionadas.
And the Microservice Gateway tem todo o código de front-end (Angular) e consumirá a API criada por todo o grupo de aplicativos de microsserviço:
3. Instalação
Para todos os detalhes sobre o processo de instalação, verifique nossointroductory article on JHipster.
4. Criação de um projeto de microsserviço
Agora vamos instalar os três componentes principais do nosso projeto de microsserviço.
4.1. Instalando o JHipster Registry
Como o JHipster Registry é um JHipster padrão, precisamos apenas fazer o download e executá-lo. Não há necessidade de modificá-lo:
git clone https://github.com/jhipster/jhipster-registry
cd jhipster-registry && ./mvnw
Isso clonará o projetojhipster-registry do GitHub e iniciará o aplicativo. Depois de iniciar com sucesso, podemos visitarhttp://localhost:8761/e fazer login com o usuárioadmine a senhaadmin:
4.2. Instalando um aplicativo de microsserviço
Aqui é onde começamos a construir os recursos reais do nosso projeto. Neste exemplo, criaremos um aplicativo de microsserviço simples que gerencia carros. Portanto, primeiro criaremos o aplicativo e, em seguida, adicionaremos uma entidade a ele:
# create a directory for the app and cd to it
mkdir car-app && cd car-app
# run the jhipster wizard
yo jhipster
Depois que o assistente for iniciado, vamos seguir as instruções para criar um aplicativo do tipo Microservice chamadocarapp. Alguns outros parâmetros relevantes são:
-
porta: 8081
-
pacote:com.car.app
-
autenticação: JWT
-
descoberta de serviço: JHipster Registry
A captura de tela abaixo mostra o conjunto completo de opções:
Agora vamos adicionar uma entidadecar ao nosso aplicativo:
# runs entity creation wizard
yo jhipster:entity car
O assistente de criação da entidade será iniciado. Devemos seguir as instruções para criar uma entidade chamadacar com três campos:make,model eprice.
Assim que terminar, nosso primeiro aplicativo de microsserviço estará completo. Se dermos uma olhada no código gerado, notaremos que não há javascript, HTML, CSS ou qualquer código de front-end. Todos serão produzidos assim que o Microservice Gateway for criado. Além disso, consulte o arquivo LEIA-ME para obter informações importantes sobre o projeto e comandos úteis.
Para terminar, vamos executar nosso componente recém-criado:
./mvnw
Antes de executar o comando acima, devemos garantir que o componentejhipster-registry esteja instalado e funcionando. Caso contrário, obteremos um erro.
Se tudo correr conforme o planejado, nossocar-app será iniciado e o log dejhipster-registry nos informa que o aplicativo foi registrado com sucesso:
Registered instance CARAPP/carapp:746e7525dffa737747dcdcee55ab43f8
with status UP (replication=true)
4.3. Instalando um gateway de microsserviço
Agora, o bit de front-end. Vamos criar um MicroService Gateway e indicar a ele que temos uma entidade em um componente existente para o qual desejamos criar o código de front-end:
# Create a directory for our gateway app
mkdir gateway-app && cd gateway-app
# Runs the JHipster wizard
yo jhipster
Vamos seguir as instruções para criar um aplicativo do tipo gateway de microsserviço. Vamos nomear o aplicativogateway e selecionar as seguintes opções para os outros parâmetros:
-
porta: 8080
-
pacote:com.gateway
-
auth: JWT
-
descoberta de serviço: JHipster Registry
Aqui está um resumo do conjunto completo de parâmetros:
Vamos prosseguir para a criação da entidade:
# Runs entity creation wizard
yo jhipster:entity car
Quando perguntado se queremos gerar a partir de um microsserviço existente, escolhaYes, e digite o caminho relativo para o diretório raizcar-app (ex .: ../car-app). Finalmente, quando perguntado se queremos atualizar a entidade, escolhaYes, regenerate the entity.
O JHipster encontrará o arquivoCar.json que faz parte do aplicativo de microsserviço existente que criamos anteriormente e usará os metadados contidos nesse arquivo para criar todo o código de IU necessário para essa entidade:
Found the .jhipster/Car.json configuration file, entity can be automatically generated!
Hora de executargateway-appe testar se tudo está funcionando:
# Starts up the gateway-app component
./mvnw
Vamos agora navegar parahttp://localhost:8080/ e fazer login com o usuárioadmine a senhaadmin. No menu superior, devemos ver um itemCar que nos levará à página de lista de carros. Tudo bom!
4.4. Criação de um segundo aplicativo de microsserviço
A seguir, vamos levar nosso sistema um passo adiante ecreate a second component of type Microservice Application. Este novo componente gerenciará as concessionárias de automóveis, então adicionaremos uma entidade chamadadealer a ele.
Vamos criar um novo diretório, navegue até ele e execute o comandoyo jhipster:
mkdir dealer-app && cd dealer-app
yo jhipster
Depois disso, digitamosdealerapp como o nome do aplicativo e escolhemos a porta8082 para que ele seja executado (é fundamental que esta seja uma porta diferente das que estamos usando parajhipster-registry ecar-app).
Para os outros parâmetros, podemos escolher qualquer opção que desejar. Lembre-se de que este é um microsserviço separado para que possa usar diferentes tipos de banco de dados, estratégia de cache e testes diferentes do componentecar-app.
Vamos adicionar alguns campos à nossa entidadedealer. Por exemploname eaddress:
# Runs the create entity wizard
yo jhipster:entity dealer
Não devemos esquecer de navegar atégateway-appe dizer a ele para gerar o código de front-end para a entidadedealer:
# Navigate to the gateway-app root directory
cd ../gateway-app
# Runs the create entity wizard
yo jhipster:entity dealer
Finalmente, execute./mvnw no diretório raizdealer-app para iniciar esse componente.
A seguir, podemos visitar nosso aplicativo de gateway emhttp://localhost:8080e atualizar a página para ver o item de menu recém-criado para a entidade Revendedor.
Antes de encerrarmos, vamos dar uma olhada no aplicativojhipster-registry novamente emhttp://localhost:8761/. Clique no item de menu Aplicativos para verificar se todos os nossos três componentes foram identificados e registrados com sucesso:
É isso! Criamos uma arquitetura sofisticada composta de um aplicativo Gateway com todo o código de front-end apoiado por dois microsserviços em apenas alguns minutos.
5. Conclusão
Iniciar um projeto de arquitetura de microsserviço com o JHipster é bastante fácil; precisamos apenas criar quantos aplicativos de microsserviço e um gateway de microsserviço e estamos prontos para começar.
Você pode explorar a estrutura mais adiante emofficial JHipster website.
Como sempre, a base de código para nosso aplicativo de carro, aplicativo de revendedor e aplicativo de gateway está disponívelover on GitHub.





