limhs25 / CURRENCY-CONVERTER

The goal of project is converter currency

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CURRENCY CONVERTER

GitHub Workflow StatusCoverageVulnerabilitiesBugs

Introdução

Currency Converter é um projeto no qual tem como objetivo converter um valor de uma moeda a partir da identificação de sua de origem e destino. As opções de converção são:

  • BRL (REAL)
  • USD (DÓLAR AMERICANO)
  • EUR (EURO)
  • JPY (IENE JAPONÊS)

Arquitetura

Para atender o objetivo do projeto optei por me basear na arquitetura de microserviços, no qual a principal motivação para implementar é prover escalabilidade, manutebilidade e agilidade em seu ciclo build/deploy. Para esse microserviço presando a integridade de consistência de dados foi implementado o Padrão de Projeto SAGA Orchestration, no qual a premissa é ter um gerenciador de etapas que executa solicitações saga, armazena e interpreta os estados de cada tarefa e manipula a recuperação de falha com transações de compensação.

Design de Aplicação

O Design do código foi construindo com base na Clean Arch seguindo algumas tecnicas de DDD como Bundle-Context e a utilização de alguns principios do SOLID.

Técnologias

Como Usar

Para testar as funcionalidade de converção e listagem das converções pelo usuario pode ser efetuada em ambiente produtivo através do Swagger UI acessando a URL abaixo:

Em produção

Local

$ docker-compose up --force-recreate --build --remove-orphans

Monitoramento

Para monitoramento da aplicação foi utilizado o Actuator que é usado principalmente para expor informações operacionais sobre a aplicação em execução através endpoints HTTP ou beans JMX. Segue abaixo com acessar essas informações:

Em produção

Local

Cobertura de Teste

Como mencionado anteriormente a aplicação segue utilizando o JaCoCo Report para validação de cobertura de testes e geração de relatorio e em conjunto com o JaCoCo foi utilizado o SonarCloud, que é um serviço em nuvem oferecido pela SonarSource e baseado no SonarQube. O SonarQube é uma plataforma open source amplamente adotada para inspecionar continuamente a qualidade do código-fonte e detectar bugs, vulnerabilidades e "code smells" em mais de 20 linguagens de programção.

JaCoCo Report

Para validar o JaCoCo Report basta rodar o comando a baixo

$ mvn verify

Após isso irá gerar um arquivo chamdo index.html dentro do diretorio target\site basta abrir o arquivo em qualquer browser de sua preferencia.

SonarCloud

Para acessar a informações basta acessar:

Pipeline de CI / CD

Para CI/CD escolhi o Github Actions nada mais é do que um orquestrador de workflow. Para esse projeto foi configurado dois workflows que serão descritos a seguir:

CI-CD-DEVELOPMENT

Neste workflow tem como resposabilidade executar dois jobs sendo eles:

  • Test - Units & Integrations: responsável por rodar os testes unitarios e integração em conjunto com o JaCoCo para validação de cobertura de testes.
  • Test - Units & Test - SonarCloud Scan: reponsável por inspecionar continuamente a qualidade do código-fonte e detectar bugs, vulnerabilidades e "code smells".
CI-CD-PRODUCTION

Neste workflow ele re-executa os passos do CI-CD-DEVELOPMENT e executa mais duas tarefas, sendo elas:

  • Publish - GitHub Packages: responsável por compilar o artefato e fazer o upload do mesmo no Github Packages.
  • Deploying Artefact: responsavel por pegar o artefato compilado e efetuar o deploy no Heroku: Cloud Application Platform.

Ambos workflows pode ser vizualizado na URL a seguir:

About

The goal of project is converter currency


Languages

Language:HTML 88.0%Language:Java 6.9%Language:JavaScript 4.8%Language:CSS 0.3%Language:Dockerfile 0.0%