- O Projeto
- Desenvolvedores
- Transformadores da Gama Academy
- Diagrama de Classes
- Gerência do Projeto
- Swagger do BlueBank
- Endpoints
- Tratamento de Exceção
- AWS BlueBank
- Agradecimentos
Desenvolver uma aplicação de um banco fictício BlueBank. O sistema deve gerenciar as transações, cadastros de clientes, permitindo incluir os dados pessoais e de contato. No sistema o cliente vai ser atrelado a uma conta bancária e registrar histórico de transações entre contas. Software desenvolvido conforme os requisitos descritos no documento do projeto final Projeto Final PanAcademy.
Projeto desenvolvido pelo grupo 2 - Squad Undefined Coders
Carmo Júnior |
Felipe Cândido |
José Carlos |
Tiago Almeida |
O sistema foi representado de forma visual sua estrutura a partir do modelo de Diagrama de Classes, o qual foi dividido entre as camadas do MVC as classes a serem implementadas, facilitando a divisão de tarefas entre os membros da equipe.
Link do Diagrama de classes: Diagrama de Classes - Blue Bank
Diagramas Entidade Relacionamento(DER) são mais utilizados para projetar ou depurar bancos de dados relacionais. Também conhecidos como DERs, ou modelos ER, usam um conjunto definido de símbolos, tais como retângulos, diamantes, ovais e linhas de conexão para representar a interconectividade de entidades, relacionamentos e seus atributos.
O projeto foi desenvolvido aplicando as técninas de metodologias ágeis para a sua gestão, a equipe é multidisciplinar e auto gerenciável, com possui a presença de Tech Leader entre os desenvolvedores.
Para o controle e gestão de fluxo do projeto foi utilizado o Trello, adicionando e dividindo as tarefas através de um quadro Kanban, que possui a etapas padrão: to do, doing e done.
As tarefas são adicionadas através de uma reunião de equipe, onde é definido o escopo e priorização de cada atividade. Cada desenvolvedor seleciona a tarefa para realizar, registra a data de conclusão e marca como concluída. Ao final, o código atualizado é enviado para o GitHub e passa por uma revisão antes de ser submetido.
KANBAN - Trello da Squad - Undefined Coders
- Java 11 (JDK)
- Spring Boot
- Spring JPA
- Maven
- Swagger
- Model Mapper
- MySQL
- Git
- Postman
- AWS
Para utilizar e testar o back-end do BlueBank em sua máquina local(localhost), é necessário:
- Baixar ou clonar o projeto do Github.
- Instalar o Java JDK (Versão 11 ou superior).
- Instalar uma IDE em Java(Eclipse ou IntelliJ IDEA) ou outra IDE Java e importar o projeto do BlueBank.
- Instalar uma base de dados MySQL(MySQL Workbench) para armazenamento dos dados.
- Alterar a senha da base de dados do MySQL no application.properties na package -> src/main/resources
- Instalar o Postman, Insomnia ou acessar o link do Swagger para inserção de dados, consulta, alterção e inclusão de dados.
Para usar o BlueBank na AWS no serviço de Elastic Beanstalk, é necessário:
- Foi adicionado no projeto o arquivo application-beanstalk.properties em src/main/resources e adicionar informações no pom.xml.
- No arquivo raiz do projeto BlueBank, clica com o botao direito vai em "run as-> Mavem build", na tela tem o campo Goals inseri o nome "clean install", marca na caixa de seleção "Skip Tests" e depois "Run" e aguarda a criação do arquivo BlueBank-0.0.1-SNAPSHOT.jar.
- No ambiente da AWS:
- Pesquisa o serviço Elastic Beanstalk e vai em criar um novo ambiente.
- Seleciona o Ambiente Servidor Web
- Informa o Nome do Aplicativo (minusculo), escolhe a Plataforma (do exemplo Java 11), ramificação (qual versão do Java) e versão da plataforma.
- Faz Upload do arquivo gerado BlueBank-0.0.1-SNAPSHOT.jar.
- Depois seleciona - Configurar mais opções, vai em banco de dados e clica em Editar:
- não modifica nada em Snapshot, escolhe a versão do MySQL "Recomendado a versão 8.0.23", mantêm a classe "db.t2.micro", deixa disponibilidade "Baixa" e cria o "nome do usuário do BD" e a "senha do BD" e marca em Excluir e salvar. E aguarda o ambiente ser criado, demora alguns minutos.
- Com o ambiente criado, no lado Esquerdo abaixo do ambiente criado em clica em "configurações", na nova tela em "software" e depois em "editar", nas propriedades de ambiente adiciona os dois campos abaixo:
SERVER_PORT 5000
SPRING_PROFILES_ACTIVE beanstalk, mysql
Clica em Aplicar, o ambiente é criado e a Integridade fica OK!. Com o link Criado agora é testar a aplicação.
A Swagger UI fornece uma página que lê um documento de especificação OpenAPI e gera um site de documentação interativo a partir de seu projeto em spring boot.
Os endpoints para teste e acesso ao seus métodos HTTPs (GET, POST, PUT e DELETE) do BlueBank são:
Endpoint do método GET consulta todos os clientes, o método POST que cria os clientes, o método PUT atualiza o cadastro do cliente e para o método DELETE que exclui o cliente:
http://localhost:8080/clientes
http://localhost:8080/clientes
{
"nome": "Lionel Andrés Messi Cuccittini",
"cpf": "214.033.700-01",
"dataDeNascimento": "18/08/1987"
}
http://localhost:8080/clientes/{id}
{
"nome": "Lionel Messi",
"cpf": "214.033.700-01",
"dataDeNascimento": "24/06/1987"
}
http://localhost:8080/clientes/{id}
http://localhost:8080/clientes/{id}
{
"id": 1,
"nome": "Lionel Messi",
"cpf": "214.033.700-01",
"dataDeNascimento": "18/08/1987"
}
Endpoint do método GET consulta todas as contas, o método POST que cria a conta, método PUT atualiza o cadastro da conta do cliente e o método DELETE que exclui a conta do cliente:
http://localhost:8080/contas
Método GET - Lista todas as contas com paginação e definição de filtros(id, data, valor, desc, asc) na busca das páginas.
Os filtros pode ser ajustados conforme a necessidade através dos campos:
- Page: deve informar qual página apresentar.
- Size: informa a quantidade de itens para apresentar na página.
- Sort: informa a coluna chave da pesquisa(id, valor, data).
- Asc ou Desc: apresenta a listagem em ordem crescente ou decrescente.
http://localhost:8080/contas/1/transacoes?page=1&size=2&sort=id,asc
{
"content": [
{
"id": 3,
"nomeClienteOrigem": "Ronaldo Nazário",
"contaOrigem": "999745",
"tipoTransacao": "DEPOSITO",
"data": "24/11/2021 17:48:38",
"valor": 3000.0
},
{
"id": 4,
"nomeClienteOrigem": "Ronaldo Careca",
"contaOrigem": "990045",
"tipoTransacao": "DEPOSITO",
"data": "24/11/2021 17:49:01",
"valor": 3500.0
}
],
"pageable": {
"sort": {
"sorted": true,
"empty": false,
"unsorted": false
},
"pageSize": 2,
"pageNumber": 1,
"offset": 2,
"unpaged": false,
"paged": true
},
"totalElements": 12,
"last": false,
"totalPages": 6,
"size": 2,
"number": 1,
"sort": {
"sorted": true,
"empty": false,
"unsorted": false
},
"numberOfElements": 2,
"first": false,
"empty": false
}
Método POST - Cria a conta de acordo com o ID do cliente e pode selecionar o tipoConta (0-Conta Corrente, 1-Conta Poupança, 2-Conta Salário).
http://localhost:8080/contas
{
"cliente":{"id":1},
"tipoConta": 1,
"numeroConta": "99005",
"agencia": "0117"
}
http://localhost:8080/contas/{id}
{
"tipoConta": 2,
"numeroConta": "99005-x",
"agencia": "0117"
}
http://localhost:8080/contas/{id}
http://localhost:8080/contas/{id}
{
"id": 1,
"nomeCliente": "Lionel Messi",
"status": true,
"tipoConta": "POUPANÇA",
"numeroConta": "99005-x",
"agencia": "0117",
"saldo": 0.0,
"transacoes": []
}
Endpoint do método GET consulta todos os endereços, o método POST cria o endereço, método PUT atualiza o cadastro de endereço do cliente e o método DELETE que exclui o endereço do cliente:
http://localhost:8080/enderecos
http://localhost:8080/enderecos
{
"cliente":{"id": 1},
"logradouro": "Rua Edson Arantes do Nascimento",
"cidade": "Campinas",
"estado": "SP",
"numero": 800,
"cep": "13056-340"
}
http://localhost:8080/enderecos/{id}
{
"logradouro": "Rua Edson Arantes - Rei Pelé",
"cidade": "Campinas",
"estado": "SP",
"numero": 1000,
"cep": "13056-340"
}
http://localhost:8080/enderecos/{id}
http://localhost:8080/enderecos/{id}
{
"id": 1,
"nomeCliente": "Lionel Messi",
"logradouro": "Rua Edson Arantes - Rei Pelé",
"cidade": "Campinas",
"estado": "SP",
"numero": 1000,
"cep": "13056-340"
}
Endpoint do método GET consulta todos os contatos, o método POST que cria o contato, método PUT atualiza o cadastro de contato do cliente e o método DELETE que exclui o cantato do cliente:
http://localhost:8080/contatos
http://localhost:8080/contatos
{
"cliente":{"id":1},
"numeroTelefone": "(11) 97710-8811",
"email": "lionel_messi@hotmail.com"
}
http://localhost:8080/contatos/{id}
{
"numeroTelefone": "(11) 93384-7744",
"email": "messi_30@gmail.com"
}
http://localhost:8080/contatos/{id}
http://localhost:8080/contatos/{id}
{
"id": 1,
"nomeCliente": "Lionel Messi",
"numeroTelefone": "(11) 93384-7744",
"email": "messi_30@gmail.com"
}
Endpoint do método GET consulta todas as transações, o método POST que cria a transação de Depósito, Saque e Transferência:
http://localhost:8080/transacoes
http://localhost:8080/transacoes/{id}
{
"id": 1,
"nomeCliente": "Lionel Messi",
"contaOrigem": "99005-x",
"tipoTransacao": "POUPANÇA",
"data": "29/11/2021 20:44:57",
"valor": 79.89
}
http://localhost:8080/transacoes/tipo/{id}
{
"id": 2,
"nomeClienteOrigem": "Lionel Messi",
"contaOrigem": "99005-x",
"nomeClienteDestino": "Riquelme",
"contaDestino": "4444",
"tipoTransacao": "TRANSFERENCIA",
"data": "01/12/2021 19:34:13",
"valor": 550.0
},
{
"id": 3,
"nomeClienteOrigem": "Lionel Messi",
"contaOrigem": "99005-x",
"nomeClienteDestino": "Riquelme",
"contaDestino": "4444",
"tipoTransacao": "TRANSFERENCIA",
"data": "01/12/2021 19:37:43",
"valor": 1550.0
},
{
"id": 4,
"nomeClienteOrigem": "Lionel Messi",
"contaOrigem": "99005-x",
"nomeClienteDestino": "Riquelme",
"contaDestino": "4444",
"tipoTransacao": "TRANSFERENCIA",
"data": "01/12/2021 19:51:57",
"valor": 750.0
}
http://localhost:8080/transacoes/deposito
{
"contaOrigem" : {"id" : 1},
"valor": 3500
}
http://localhost:8080/transacoes/saque
{
"contaOrigem" : {"id" : 1},
"valor" : 1500
}
http://localhost:8080/transacoes/transferencia
{
"contaOrigem" : {"id" : 1},
"contaDestino" : {"id" : 2},
"valor" : 1100
}
O tratamento de exceções do BlueBank é realizado de diversas formas e parâmetros nas classes do projeto. O package de Exceptions apresenta as exceções das classes de Cliente, Conta, Contato, Endereço e Transações. E suas mensagens de validação pode ser verificadas e alteradas em -> src/main/resources/ValidationMessages.properties
O AWS Elastic Beanstalk é um serviço de fácil utilização para implantação e escalabilidade de aplicações e serviços da web desenvolvidos com Java, .NET, PHP, Node.js, Python, Ruby, Go e Docker em servidores familiares como Apache, Nginx, Passenger e IIS. Basta fazer o upload de seu código e o Elastic Beanstalk se encarrega automaticamente da implementação, desde o provisionamento de capacidade, o balanceamento de carga e a escalabilidade automática até o monitoramento da saúde do aplicativo.
O Amazon Simple Notification Service (Amazon SNS) é um serviço de mensagens totalmente gerenciado para a comunicação de aplicação para aplicação (A2A) e de aplicação para pessoa (A2P), seus sistemas editores podem repassar mensagens para um grande número de sistemas de assinantes, incluindo filas do Amazon SQS, funções do AWS Lambda e endpoints HTTPS e o Amazon Kinesis Data Firehose para processamento paralelo. A funcionalidade A2P permite enviar mensagens para usuários em grande escala por SMS, push de dispositivos móveis e e-mail.
O AWS CodePipeline é um serviço gerenciado de entrega contínua que ajuda a automatizar pipelines de liberação para oferecer atualizações rápidas e confiáveis de aplicativos e infraestruturas. O CodePipeline automatiza as fases de compilação, teste e implantação do processo de liberação sempre que ocorre uma mudança no código, de acordo com o modelo de liberação que você definiu.
O Amazon API Gateway é um serviço gerenciado que permite que desenvolvedores criem, publiquem, mantenham, monitorem e protejam APIs em qualquer escala com facilidade. APIs agem como a “porta de entrada” para aplicativos acessarem dados, lógica de negócios ou funcionalidade de seus serviços de back-end.
O AWS Lambda é um serviço de computação sem servidor e orientado a eventos que permite executar código para praticamente qualquer tipo de aplicação ou serviço de backend sem provisionar ou gerenciar servidores.
Feito com 💙 pela Squad - Undefined Coders 💻