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
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ço | Tecnologia | URL |
---|---|---|
pje2-discovery-service | Netflix Eureka | http://localhost:8761 |
pje2-gateway-service | Netflix Zuul | http://localhost:8761 |
pje2-web | Frontend Angular | http://localhost:8761 |
message-broker | RabbitMQ | http://localhost:8761 |
message-broker-mangement | RabbitMQ | http://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.
Também é possível passar estas configurações por meio de variáveis do maven ou arquivo de propriedades (integracao.properties
).
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ável | Valor | Descrição |
---|---|---|
ENV_PJE2_CLOUD_APP_NAME | pje-cnj | Nome do serviço PJe. |
ENV_PJE2_CLOUD_REGISTRAR | true | Indica se o PJe deve se registrar no service discovery. |
ENV_EUREKA_SERVER_URL | http://localhost:8761/eureka | Endereço para registro no service discovery. |
ENV_PJE2_CLIENTE_URL | http://localhost:4200 | Endereço do fontend. |
ENV_PJE2_CLOUD_URL_GATEWAY | http://localhost:8180 | Endereço do API Gateway. |
ENV_PJE2_CLOUD_RABBIT_PUBLISH_MESSAGES | true | Indica se o PJe deve publicar mensagens para o broker. |
ENV_PJE2_CLOUD_RABBIT_HOST | localhost | Endereço do message broker RabbitMQ. |
ENV_PJE2_CLOUD_RABBIT_USERNAME | pje | Nome de usuário do PJe no RabbitMQ. |
ENV_PJE2_CLOUD_RABBIT_PASSWORD | pje | Senha de usuário do PJe no RabbitMQ. |
ENV_PJE2_CLOUD_RABBIT_VIRTUALHOST | pje-dev | Nome 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