Solução para conversão de moeds de acordo a taxa de câmbio corrente
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:
- Configuração inicial do projeto
- Documentação
- Job para obtenção das taxas de câmbio em tempo real da API externa Exchange Rate
- Microsserviço para consulta da taxas de câmbio salvas (cacheadas) na tabela ExchangeRate no DynamoDB
- Microsserviço para listagem de produtos com a moeda corrente requerida
- Circuit Breaker para tratamento de indisponibilidade da API externa de taxas de câmbio
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
A utlização da API de produtos pode ser verificada na wiki na página: Documentação da API de Produtos
- A arquitetura da aplicação seguiu o Clean Architecture. De acordo a figura acima, os módulos possuem a seguinte correspondência:
- domain: Enterprise Business Rules
- business: Application Business Rules
- adapters: Interface adapters
- framework: Framework & Drivers
- 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)
- Para testes, foram realizados testes unitários nas camadas de business e adapters
- 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