Pular para o conteúdo principal

Quick start para o ambiente de desenvolvimento do PJe 2.1

Infraestrutura básica com docker

A arquitetura baseada em microsserviços do PJe 2.1 depende de alguns recursos de infraestrutura. Estes recursos são responsáveis por prover a integração necessária para o ambiente. Entre estes recursos estão: serviço de descoberta (Eureka), API gateway (Zuul) e broker de mensagens (RabbitMQ). Todos esses serviços estão disponíveis no repositório de imagens Docker do CNJ.

Para facilitar a composição do ambiente de desenvolvimento a sugestão é utilizar o docker-compose. O docker-compose permite fazer uma composição de serviços que serão executados na máquina do desenvolvedor. A pilha de serviços de infraestrutura de nuvem, então, será executada localmente e o desenvolvedor poderá focar em desenvolver o seu microsserviço.

Executando o docker-compose da pilha do PJe

IMPORTANTE!

Para este ambiente é necessário ter o Docker e o docker-compose instalados na máquina.

Para executar a pilha de serviços do PJe devemos utilizar o seguinte docker-compose.yml:

version: "3"

services:
discovery:
image: registry.cnj.jus.br/pje2/pje-discovery:latest
container_name: discovery
ports:
- "8761:8761"
gateway:
image: registry.cnj.jus.br/pje2/pje-gateway:latest
container_name: gateway
ports:
- "8180:8180"
- "8181:8181"
environment:
- EUREKA_SERVER_DEFAULT_ZONE=http://discovery:8761/eureka/
- EUREKA_INSTANCE_PREFERIPADDRESS=true
- GATEWAY_ACTIVE_PROFILES=dev
rabbitmq:
image: rabbitmq:3.7.9-management-alpine
container_name: rabbitmq
ports:
- "15672:15672"
- "5672:5672"
environment:
- RABBITMQ_DEFAULT_USER=pje
- RABBITMQ_DEFAULT_PASS=pje
- RABBITMQ_DEFAULT_VHOST=pje-dev
frontend:
image: registry.cnj.jus.br/pje2/pje2-clientes/pje-frontend:master
container_name: pje-frontend
ports:
- "4200:80"

O comando para executar o compose será:

sudo docker-compose docker-compose.yml up -d

Ao executar o compose temos acesso aos seguintes serviços:

ServiçoTecnologiaURL
pje2-discovery-serviceNetflix Eurekahttp://localhost:8761
pje2-gateway-serviceNetflix Zuulhttp://localhost:8761
pje2-webFrontend Angularhttp://localhost:8761
message-brokerRabbitMQhttp://localhost:8761
message-broker-mangementRabbitMQhttp://localhost:8761

Subindo o frontend Angular (pje2-web)

O PJe conta agora com um projeto Angular para frontend. Este projeto visa a substituição gradual das telas JSF atuais. O novo cliente pje2-web com Angular foi construído de forma a se comunicar com toda API de serviços do PJe, e prover os serviços ao usuário final através de uma experiência mais moderna e amigável. Caso o desenvolvedor necessite realizar alterações no código do frontend é necessário removê-lo do docker-compose, e subir a aplicação separadamente.

Clonando o projeto pje2-web

O pje2-web é um projeto Angular padrão gerado com angular-cli, portanto antes de começar certifique-se de que você tem o Node.js na versão 10.x ou superior instalado em sua máquina.

Com o Node.js instalado já podemos instalar o angular-cli:

npm install -g @angular/cli

Após a instalação do angular-cli faça o clone do repositório do pje2-web:

git clone git@git.cnj.jus.br:pje2/pje2-clientes/pje2-web.git

Com o repositório clonado iremos instalar as depedências do projeto:

npm install

Iniciando o frontend pj2-web

Para executar nosso frontend usaremos o próprio angular-cli, que já nos provê um servidor para desenvolvimento. Na raiz do projeto pje2-web execute:

ng serve --host=0.0.0.0 --disable-host-check

Este comando irá compilar e servir o projeto frontend em http://localhost:4200.

PJe legado para o ambiente de microsserviços

O projeto PJe deve ser configurado para que se integre ao ambiente de microsserviços. Na nova arquitetura o PJe passou por diversas alterações para que pudesse fazer parte desse novo ambiente. Hoje, o projeto é um grande monolito, com diversos emaranhamentos negociais que o torna um projeto de difícil manutenção e muito sujeito a falhas. Com a nova arquitetura quebraremos aos poucos o monolito, criando novos microsserviços que atendam a contextos de negócio bem definidos.

Configurando o PJe

Para se integrar ao ambiente o PJe precisa de configurações como: URL do pje2-discovery-service, URL do gateway, URL do rabbitmq entre outras configurações possíveis. Vamos nos concetrar nas configurações básicas para o ambiente de desenvolvimento.

Estas configurações serão passadas ao PJe através de variáveis de ambiente.

NOTA

Também é possível passar estas configurações por meio de variáveis do maven ou arquivo de propriedades (integracao.properties).

ATENÇÃO!

Não esqueça de subir o PJe com bind para o endereço 0.0.0.0, do contrário o gateway não conseguirá enviar requisições ao PJe.

As seguintes variáveis de ambiente deverão ser passadas ao servidor de aplicação do PJe com os respectivos valores:

VariávelValorDescrição
ENV_PJE2_CLOUD_APP_NAMEpje-cnjNome do serviço PJe.
ENV_PJE2_CLOUD_REGISTRARtrueIndica se o PJe deve se registrar no service discovery.
ENV_EUREKA_SERVER_URLhttp://localhost:8761/eurekaEndereço para registro no service discovery.
ENV_PJE2_CLIENTE_URLhttp://localhost:4200Endereço do fontend.
ENV_PJE2_CLOUD_URL_GATEWAYhttp://localhost:8180Endereço do API Gateway.
ENV_PJE2_CLOUD_RABBIT_PUBLISH_MESSAGEStrueIndica se o PJe deve publicar mensagens para o broker.
ENV_PJE2_CLOUD_RABBIT_HOSTlocalhostEndereço do message broker RabbitMQ.
ENV_PJE2_CLOUD_RABBIT_USERNAMEpjeNome de usuário do PJe no RabbitMQ.
ENV_PJE2_CLOUD_RABBIT_PASSWORDpjeSenha de usuário do PJe no RabbitMQ.
ENV_PJE2_CLOUD_RABBIT_VIRTUALHOSTpje-devNome do virtual host a ser utilizado no RabbitMQ.

Com as variáveis configuradas é só subir o servidor de aplicação. No startup da aplicação o PJe deverá se registrar no pje2-discovery-service. Para verificar quais serviços estão registrados acesse http://localhost:8761. Os seguinte serviços devem estar registrados no painel do Eureka:

  • gateway-service
  • pje-cnj