Skip to content

Eugeniosales/coin-converter

Repository files navigation

Solução do conversor de moedas

Solução para conversão de moeds de acordo a taxa de câmbio corrente


Organização

Para organização do problema, foram abertas as seguintes issues, onde na descrição das substasks é possível acompanhar como a solução foi organizada:

  1. Configuração inicial do projeto
  2. Documentação
  3. Job para obtenção das taxas de câmbio em tempo real da API externa Exchange Rate
  4. Microsserviço para consulta da taxas de câmbio salvas (cacheadas) na tabela ExchangeRate no DynamoDB
  5. Microsserviço para listagem de produtos com a moeda corrente requerida
  6. Circuit Breaker para tratamento de indisponibilidade da API externa de taxas de câmbio

Arquitetura da solução

Para apresentação e justificava das escolhas, foi construída uma ADR (Architecture Decision Records) que pode ser consultada na wiki: ADR da solução do conversor de moedas

Documentação da API

A utlização da API de produtos pode ser verificada na wiki na página: Documentação da API de Produtos

Princípios de Software

Logo

  1. A arquitetura da aplicação seguiu o Clean Architecture. De acordo a figura acima, os módulos possuem a seguinte correspondência:
  1. Além disso foram empregados princípios do Clean Code, Solid (Single responsibility principle e Dependency inversion) e Design Patterns (Circuit Breaker Pattern, Repository Pattern e Dependency Injection)
  2. Para testes, foram realizados testes unitários nas camadas de business e adapters

Infra

  • A AWS foi o serviço de cloud utilizado para o provisionamento dos recursos
  • Para o provionamento e Configuração das Lambdas foi utilizado o Serverless Framework
  • Os demais recursos da AWS foram provisados com o Terraform
  • O CI/CD foi configurado com o Github Pipelines

Referências