O programa dispõe de uma grade de estudos de cerca 390 horas de conteúdo, e é estruturado em 10 semanas de treinamento. Contendo aulas gravadas e também ao vivo, porém as aulas e mentorias foram assistidas nos horários pré determinados.
E o fechamento com um projeto final conforme o seguinte documento:
# CHECANDO A VERSÃO DO JAVA
java -version
# CHECANDO A VERSÃO DO MVN
mvn -v
# INICIANDO O PROJETO
mvn spring-boot:run
# BUILD O PROJETO
mvn clean install
Com o objetivo de integras contínuas de pequenas partes usáveis,optamos usar o Scrum, para termos um feedback do que estava ficando pronto, no caso do projeto o cliente final, que avaliava e gerava feedbacks, para criação de novas features eramos nós mesmo da equipe. E visando um fluxo de entrega otimizado, adotamos práticas do DevOps, que serão expostos nos próximos tópicos, como fizemos cada etapa:
- Plan
Após identificar todas os atores, funções que possuíamos, começamos a modelar a primeira versão do banco de dados. Usamos o Jira, organizando épicos, que eram as pequenas partes entregáveis e dentro delas as tasks, com extimativas de horas a a serem gastas, e responsáveis, possíveis impedimentos.
- Code
Utilizamos Java 11, SpringBoot, Mysql e docker, para termos como subir um ambiente totalmente configurado facilmente. Em seguida adicionamos o FlyWay para termos liberdade em mudar algo do banco de dados de maneira fácil, como o scrum permite.
Precisamos adicionar os serviços da AWS lambda, AWS SNS, para notificações de transações.Utilizamos o AWS RDS como serviço do banco de dados.
Optmaos para usar variáveis de ambiente para armazenamento de credenciais, aqui no github disponibilizado através do secrets
- Build
Utilizamos o maven, e o GitHubActions para realizar o o deploy de nossa aplicação.
- Test
A aplicação possui de cobertura de código, optamos por testar a camada mais alta da aplicação, os controllers, para também atingir as camadas inferiores, como os services e os repositorys.
- Release
Lançamos 3 versões, onde 0.0.1, ja contemplava entregáveis como as operações básicas, em seguida a 0.1.0 ja possuia a integração com a AWS lambda, AWS SNS, validações com sonarCloud, e por último, a 1.0.0 com testes cobrindo 81% da aplicação, poucos code smell.
- Deploy
Por questões de segurança na hora da apresentação, resolvemos subir com o beanstalk , com o ec2, uma aplicação no Heroku, e configuramos um API Gateway,para centralizar as url do beanstalk e lambda.
- Operate
Links úteis da aplicação:
Repositórios
Projeto: https://github.com/ramondomiingos/pan-academy-blue-bank
Repositório do Lambda: https://github.com/iasminaraujoc/lambda-blue-bank
Aplicações
Aplicação EBS: http://t2s7bluebank.us-east-1.elasticbeanstalk.com/
Aplicaçao EC2: http://ec2-54-175-137-20.compute-1.amazonaws.com:5005
API Gateway (Configuração): https://console.aws.amazon.com/apigateway/home?region=us-east-1#/apis/pzqujsr0ch/resources/er0o0zdtf8 API Gateway (Aplicação) : https://pzqujsr0ch.execute-api.us-east-1.amazonaws.com/final
Organização
Sonar: https://sonarcloud.io/project/overview?id=ramondomiingos_pan-academy-blue-bank
Jira: https://prf12.atlassian.net/jira/software/projects/BLUEB7/boards/2
📄 As urls interativas, construídas através do Swagger, pode ser acessadas no link: http://t2s7bluebank.us-east-1.elasticbeanstalk.com/
Método | URL | Finalidade |
---|---|---|
POST | /auth/login | Fazer login na aplicação |
GET | /clients | Lista todos os clientes |
POST | /clients | Adiciona um novo cliente |
GET | /clients/{id} | Detalha um cliente pelo id |
PUT | /clients/{id} | Atualiza o cliente pelo id |
PUT | /clients/{id}/delete | Desativa o cliente pelo id |
PUT | /clients/{id}/block | Bloqueia o cliente pelo id |
GET | /accounts | Lista todas as contas |
POST | /accounts | Criar uma nova conta |
PUT | /accounts/{id} | Atualiza uma conta pelo id |
GET | /accounts/{id} | Detalha uma conta pelo id |
DELETE | /accounts/{id} | Desativar uma conta pelo id |
GET | /accounts/{id}/extract | Detalha um cliente e mostra o extrato de transações |
GET | /addresses | Lista todos os endereços |
POST | /addresses | Adiciona um novo endereço |
GET | /addresses/{id} | Busca um endereço por id |
PUT | /addresses/{id} | Atualiza um endereço por id |
DELETE | /addresses/{id} | Deleta um endereço por id |
GET | /transactions | Lista todas as transações |
GET | /transactions{id} | Lista uma transação pelo id |
POST | /transactions/deposit | Realiza um depósito em uma conta |
POST | /transactions/transfer/{idAccount} | Realiza uma trasnferência de uma conta para outra |
POST | /transactions/withdraw/{idAccount} | Realiza um saque em uma conta |
.
| .gitignore
| buildspec.yml
| docker-compose.yml
| Dockerfile
| mvnw
| mvnw.cmd
| pom.xml
| README.md
| system.properties
+---.github
| \---workflows
| main.yml
|
+---src
| +---main
| | +---java
| | | \---com
| | | \---panacademy
| | | \---squad7
| | | \---bluebank
| | | | BlueBankApplication.java
| | | |
| | | +---configs
| | | | | AwsSnsConfig.java
| | | | | OpenApiConfig.java
| | | | | WebSecurityConfig.java
| | | | |
| | | | \---security
| | | | AuthTokenFilter.java
| | | | JwtUtils.java
| | | |
| | | +---domain
| | | | +---enums
| | | | | AccountType.java
| | | | | ClaimType.java
| | | | | ClientType.java
| | | | | RoleType.java
| | | | | StatusType.java
| | | | | TransactionType.java
| | | | |
| | | | +---models
| | | | | Account.java
| | | | | Address.java
| | | | | Client.java
| | | | | Transaction.java
| | | | | User.java
| | | | |
| | | | \---repositories
| | | | AccountsRepository.java
| | | | AddressesRepository.java
| | | | ClientsRepository.java
| | | | TransactionsRepository.java
| | | | UsersRepository.java
| | | |
| | | +---exceptions
| | | | | BlueBankRunTimeExceptionHandler.java
| | | | | ContentNotFoundException.java
| | | | | InvalidInputException.java
| | | | |
| | | | \---dtos
| | | | ApiExceptionsDTO.java
| | | |
| | | +---services
| | | | | AccountsService.java
| | | | | AddressesService.java
| | | | | ClientsService.java
| | | | | TransactionsService.java
| | | | | UsersService.java
| | | | |
| | | | \---impl
| | | | AccountsServiceImpl.java
| | | | AddressesServiceImpl.java
| | | | ClientsServiceImpl.java
| | | | TransactionsServiceImpl.java
| | | | UsersServiceImpl.java
| | | |
| | | \---web
| | | +---controllers
| | | | AccountsController.java
| | | | AddressesController.java
| | | | AuthController.java
| | | | ClientsController.java
| | | | TransactionsController.java
| | | |
| | | +---dtos
| | | | +---request
| | | | | AccountRequest.java
| | | | | AccountUpdateRequest.java
| | | | | AddressRequest.java
| | | | | ClientRequest.java
| | | | | DepositRequest.java
| | | | | LoginRequest.java
| | | | | TransferRequest.java
| | | | | WithdrawRequest.java
| | | | |
| | | | \---response
| | | | AccountResponse.java
| | | | AddressResponse.java
| | | | ClientResponse.java
| | | | JwtResponse.java
| | | | TransactionResponse.java
| | | |
| | | \---helpers
| | | +---annotations
| | | | CpfCnpj.java
| | | |
| | | +---converters
| | | | AccountConverter.java
| | | | AddressConverter.java
| | | | AuthConverter.java
| | | | ClientConverter.java
| | | | TransactionConverter.java
| | | | UserConverter.java
| | | |
| | | \---validators
| | | CpfCnpjValidator.java
| | |
| | \---resources
| | | application.properties
| | | openapi.properties
| | | secret.properties
| | |
| | \---db
| | \---migration
| | V1__baseline_migration.sql
| | V2__fix_transactions_table.sql
| | V3__fix_enums_tables.sql
| | V4__change_transactions_type.sql
| | V5__change_account_table.sql
| |
| \---test
| +---java
| | \---com
| | \---panacademy
| | \---squad7
| | \---bluebank
| | | BlueBankApplicationTests.java
| | |
| | \---controllers
| | AccountsControllerTests.java
| | AddressesControllerTests.java
| | AuthControllerTests.java
| | ClientsControllerTests.java
| | TransactionsControllerTests.java
| |
| \---resources
| application.properties
| secret.properties
|