/sistema-bancario

API Rest de sistema bancário

Primary LanguageJava

Conteúdo

  1. Sobre a Aplicação
  2. Instalando o Docker-CE
  3. Iniciando o conteiner da aplicação
  4. Compilando a imagem Docker da aplicação
  5. Executando a aplicação usando o DockerCompose
  6. Monitorando a API da aplicação com o Zabbix
  7. Monitorando a API da aplicação com o Grafana
  8. Referências do Docker

Sobre a Aplicação

O objetivo desta aplicação é simular operações bancárias.

Operações do sistema:

A seguir estão os endpoints disponíveis na API Swagger da aplicação.

  • Cadastrar Pessoas

alt text

  • Listar Pessoas

alt text

  • Criar Conta

alt text

  • Bloquear Conta

alt text

  • Desbloquear Conta

alt text

  • Listar Contas

alt text

  • Consultar Saldo

alt text

  • Depósito

alt text

  • Saque

alt text

  • Extrato de Conta

alt text

  • Extrato de Conta por Período

alt text

Instalando o Docker-CE

  • Instale o Docker-CE seguindo as instruções das páginas abaixo de acordo com a distribuição GNU/Linux.

No Ubuntu: https://docs.docker.com/install/linux/docker-ce/ubuntu

No CentOS: https://docs.docker.com/install/linux/docker-ce/centos

No Debian: https://docs.docker.com/install/linux/docker-ce/debian

  • Altere o valor da variárel USUARIO pelo nome da sua conta no S.O no qual o Docker foi instalado e execute os comandos abaixo para adicionar o seu usuário ao grupo Docker.
USUARIO="seu-nome-usuario"
sudo usermod -aG docker $USUARIO
sudo setfacl -m user:$USUARIO:rw /var/run/docker.sock

Iniciando o conteiner da aplicação

Use o comando a seguir para iniciar um conteiner do banco de dados.

sudo mkdir -p /docker/postgresql/sistema-bancario/data
sudo chown -R 999:999 /docker/postgresql/sistema-bancario/data

docker run -p 5433:5432 -d --name postgres \
--restart=always \
-v /docker/postgresql/sistema-bancario/data:/var/lib/postgresql/data \
-e POSTGRES_DB="sistema-bancario" \
-e POSTGRES_PASSWORD="postgres" \
-e POSTGRES_USER="postgres" \
postgres

Use o comando a seguir para iniciar um conteiner da aplicação.

docker run -d -p 8080:8080 --name sistema-bancario \
-e DATASOURCE_URL="postgresql://172.17.0.1:5433/sistema-bancario" \
-e DATASOURCE_USERNAME="postgres" \
-e DATASOURCE_PASSWORD="postgres" \
jmilitao/sistema-bancario:latest

Acesse a API da aplicação na URL http://172.17.0.1:8080/swagger-ui.html

Use os comandos a seguir visualizar o log dos conteineres.

docker logs -f postgres
docker logs -f sistema-bancario

Compilando a imagem Docker da aplicação

Para saber como gerar um novo pacote e uma nova imagem Docker da aplicação acesse as instruções aqui.

Executando a aplicação usando o DockerCompose

Para saber como executar a aplicação usando o DockerCompose acesse as instruções aqui.

Monitorando a API da aplicação com o Zabbix

O Zabbix pode ser instalado usando um dos seguintes tutoriais disponíveis na comunidade Zabbix-BR: http://zabbixbrasil.org/?page_id=7.

Este template foi criado com base no conhecimento compartilhado na apresentação de André Déo e Thales Reis https://pt.slideshare.net/andredeo/monitoramento-de-aplicaes-web-modernas-com-zabbix

Foi criado este o Template_Monitoramento_API_Sistema_Bancario.xml para monitorar os endpoints da API.

Abaixo estão algumas imagens do template sendo utilizado.

  • Monitoramento da API usando cenário web

alt text

  • Grafico saldo conta via LLD

alt text

  • Trigger criada limite conta via LLD

alt text

  • Dados recentes:

alt text alt text alt text

Monitorando a API da aplicação com o Grafana

O Grafana pode ser instalado usando um dos seguintes tutoriais disponíveis na comunidade Zabbix-BR: http://zabbixbrasil.org/?page_id=7 e no site do Grafana https://grafana.com/grafana/download.

Foi criado este o Dashboard-Sistema_Bancario.json para exibir os dados coletados pelo Zabbix de forma mais agradável.

Abaixo está uma imagem do dashboard sendo utilizado.

alt text

Referências do Docker

https://docs.docker.com/engine/tutorials/dockerimages/

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

https://docs.docker.com/engine/reference/commandline/commit/

https://www.digitalocean.com/community/tutorials/docker-explained-how-to-create-docker-containers-running-memcached