Git Product home page Git Product logo

currency-converter's Introduction

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:

currency-converter's People

Contributors

thukabjj avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.