Skip to content

Conversor de par de moedas em Java com Spring que consulta uma API externa e retorna o câmbio em tempo real. Pipeline construída com testes unitários, conteinerização com Docker ; IaC com Terraform; Orquestração com Jenkins; Deploy com Kubernetes em ambiente de Cloud.

License

Notifications You must be signed in to change notification settings

rc-ventura/currencyConverter-k8s-pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Converta-me_cover

 rosto de uma presidente americano em uma moeda

🎱 Descrição

Conversor de pares de moeda que faz uma consulta em uma API LAYER retorna o câmbio em tempo real e faz a conversão dos respectivos pares.

esquema do design da aplicação

😄 Status do Projeto

→_-em desenvolvimento-green

🚀 Começando

Essas instruções permitirão que você obtenha uma cópia do projeto em operação na sua máquina local para fins de desenvolvimento e teste.

Consulte Implantação para saber como implantar o projeto.

📋 Pré-requisitos

🔧 Instalação

💢 Pelo Git Bash:


  1. Abra Git Bash.
  2. Altere o diretório de trabalho atual para o local em que deseja ter o diretório clonado.
  3. Digite git clone e cole a URL já copiada.
$ git clone https://github.com/rc-ventura/CurrencyConverter-App
  1. Pressione ENTER para criar seu clone local.
$ git clone https://github.com/rc-ventura/CurrencyConverter-App
> Cloning into `Spoon-Knife`...
> remote: Counting objects: 10, done.
> remote: Compressing objects: 100% (8/8), done.
> remove: Total 10 (delta 1), reused 10 (delta 1)
> Unpacking objects: 100% (10/10), done.
  1. Abra sua o Eclipse
  2. Selecione -> File -> Open Projects From File System -> Selecione o caminho da pasta onde fez o download.
  3. Pressione RUN no Eclipe para rodar a aplicação ou Ctrl + F11

💢 Por Download do arquivo .zip:


  1. No GitHub.com, navegue até a página principal do repositório.
  2. Acima da lista de arquivos, clique em Código ou Code.
  3. Selecione a opção Download .zip
  4. Salve em uma máquina local.
  5. Abra sua o Eclipse
  6. Selecione -> File -> Open Projects From File System -> Selecione o caminho da pasta onde fez o download.
  7. Pressione RUN no Eclipe para rodar a aplicação ou Ctrl + F11

💢 Executando com o Maven:


  1. Clona ou faça download da aplicação.
  2. Abra o prompt de comando ou terminal.
  3. Selecione o caminho da pasta onde fez download.
  4. Execute o seguinte comando:
mvn spring-boot:run

📜 Funcionalidades


  • Conversor de câmbio entre um par de moedas.
Conversor.de.Moeda.Feito.com.o.Clipchamp.mp4


  • Salvando transações de conversão no banco de dados.
Video.sem.titulo.Feito.com.o.Clipchamp.3.mp4

✈️ Roadmap

  • Main Feature: Método para conversão de pares de moeda.
  • Feature: Interface do usuário em Html/Css.
  • Feature: Link entre backend e frontend com JQuery.
  • Feature: Controlador de Exceptions
  • Testes unitários com Junit e Mockito da Main Feature.
  • Teste de integração da API com a biblioteca restAssured.
  • Testes com cobertura de 80%.
  • Ajustes na UI.
  • Feature: Método para salvar toda transação de conversão no banco de ddaos.
  • Teste para método salvar toda transação no banco de dados.
  • Teste de integração de todas as features.
  • Teste de carga em transações no banco de dados.
  • Teste de UI com Selenium.
  • Documentação da API com Swagger/OpenApi.
  • Documentação com Testes com Allure Framework.
  • Deploy da aplicação em ambiente de teste com K3d da Ranch.
  • Automatização com script de incialização com Terraform para o servidor remoto na Digital Ocean.
  • Deploy da aplicação em ambiente de desenvolvimento em um servidor remoto na Digital Ocean com Kubernetes.
  • Pipeline CI/CD com Jenkins em ambiente de desenvolvimento.
  • Pipeline CI/CD com Jenkins na Digital Ocean em produção.
  • SRE: Observabilidade da aplicação: Métricas com Micrometer
  • SRE: Observabilidade da aplicação: Monitoramento com o Prometheus
  • SRE: Observabilidade da aplicação: Dashboards com o Grafana.

📖 Documentação

documentacão Api swagger

Swagger.UI.-.Brave.2023-04-10.11-45-06.mp4

⚙️ Executando os testes


  • Overview dos testes feitos em Junit, Mockito, Rest Assured

Imagem modificada Imagem modificada

⏩ Testes de Integração


⭕ shouldConvertCurrencyAndSaveTransaction

  • Simula uma consulta na API externa.
  • Retorna com a taxa de conversão.
  • Processa a conversão.
  • Salva no banco de dados a transação.

Imagem modificada

⭕ Transaction Controller Feature

  • Simula todos os endpoints da aplicação ao manipular uma transação
  • Controller->Service->Repository
  • GET, UPDATE, GET/ID, DELETE/ID, SAVE

 Imagem modificada

⏩ Testes Unitários


⭕ CurrencyExceptionHandler

  • Simula o controle de exceções

Sem título - Brave 10_04_2023 11_56_51

⭕ Currency Conversion

  • Simula uma conversão.
  • Chama a API Externa
  • Faz uma conversão do par USD para BRL.

Sem título - Brave 10_04_2023 11_54_53


⭕ Transaction Service

  • Simula todas as manipulações de transações na camada de Serviços
  • Service->Repository

Sem título - Brave 10_04_2023 11_55_35

📦 Implantação


Deploy-Currency-Converter drawio


🔮 DEVOPS

  • Utilizando o Terraform provisiona uma infra-estrutura básica na Digital Ocean.
  • Criação de um cluster kubernetes com três serviços: backend, frontend e bancode dados
  • Criação de 3 réplicas do backend e do frontend para escalonamento
  • Criação de um load balancer aberto para internet que balanceia a carga para o frontend na porta 80 (http)
  • Provisionamento de um máquina virtual (Droplet) para configurar a orquestração com o Jenkins.
  • Criação do pipeline com o Jenkins CI utilizando o Docker e o DockerHub.
  • Configuração d eum webhook no github para automatização do início do pipeline CI após um gitpush no repositório.

🔍 SRE

  • Criação de observabilidade utlizando o Helm para configurar o cluster Kubernetes.
  • Criação um load balancer aberto para requisições http na porta 80 e redirecionamento para a porta 9090 (prometheus)
  • Criação um load balancer aberto para requisições http na porta 80 e redirecionamento para 3000 (grafana).
  • Criação dos dashboards das métricas funcionais e não funcionais da aplicação.

💻 DEV

  • Promove alterações no código e ativa o trigger do pipeline.
  • Manutenção e implementação dos testes unitários
  • Promove a cobertura do código nos testes.

🛠️ Tecnologias

🖇️ Colaborando

Por favor, leia o COLABORACAO.md para obter detalhes sobre o nosso código de conduta e o processo para nos enviar pedidos de solicitação.

📌 Versão

Para as versões disponíveis, observe as tags neste repositório.

✒️ Autores

Mencione todos aqueles que ajudaram a levantar o projeto desde o seu início

  • Rafael Ventura - Idealizador do projeto - Dev Ventura

Você também pode ver a lista de todos os colaboradores que participaram deste projeto.

📄 Licença

Este projeto está sob a licença (sua licença) - veja o arquivo LICENSE.md para detalhes.

🎁 Expressões de gratidão


⌨️ com ❤️ por Rafael Ventura 😊

About

Conversor de par de moedas em Java com Spring que consulta uma API externa e retorna o câmbio em tempo real. Pipeline construída com testes unitários, conteinerização com Docker ; IaC com Terraform; Orquestração com Jenkins; Deploy com Kubernetes em ambiente de Cloud.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published