Skip to content

Main repository for solution proposed by Group 15 to the Tech Challenge of specialization in Software Architecture from FIAP

License

Notifications You must be signed in to change notification settings

FIAP-3SOAT-G15/tech-challenge

Repository files navigation

FIAP 3SOAT Tech Challenge - G15

Para o avaliador da Fase 4 ✨

Queira encontrar todos os entregáveis nos outros repositórios desta organização no GitHub incluindo microsserviços de pagamentos, pedidos, e estoque (com testes usando BDD / Cucumber).

Os microsserviços possuem seu próprio banco de dados isolado, sendo NoSQL (DynamoDB) no caso do microsserviço de pagamentos, e relacional (RDS / Postgres) nos demais. A comunicação é realizada de forma síncrona.

Todos os repositórios têm branches principais protegidas, pipelines CI/CD usando GitHub Actions, com provisionamento de Infrastructure as Code (IaC) usando Terraform, e análise estática usando SonarCloud garantindo 80% de cobertura de testes.

Outros repositórios criados nas fases anteriores para o resto da infraestrutura também continuam ativos.

Este projeto do curso de Pós-graduação em Arquitetura de Software da FIAP compreende uma solução possível para uma especificação referente a um sistema de autoatendimento de restaurante (do tipo fast-food), com quiosques ou terminais de autoatendimento.

Autores membros do Grupo 15:

  • Bleno Humberto Claus
  • Giovanni Di Luca Evangelista
  • Lucas Gabriel dos Santos
  • Mateus Sales Albino
  • Wellyson de Freitas Santos

Requisitos

De forma geral, clientes e administradores usarão o sistema, que depende de um serviço de pagamento externo.

Diagrama de Contexto C4

Entre os requisitos não funcionais está a escalabilidade.

Consulte a documentação para conhecer todos os requisitos.

Domain-Driven Development (DDD)

DDD foi a abordagem utilizada para o desenvolvimento, com as seguintes saídas documentadas:

  • Glossário ubíquo
  • Event storming
  • Storytelling
  • Mapa de Contexto

Consulte a documentação para saber mais.

Arquitetura

O sistema expõe RESTful APIs para aplicações front-end, como terminais de autoatendimento para clientes e interfaces para administradores. Tem com dependência um provedor externo de pagamento, como o Mercado Pago. As decisões de arquitetura foram devidamente documentadas como Architecture Decision Records (ADRs) em /docs/adr.

Diagrama de Container C4

Arquitetura Hexagonal (Ports and Adapters) e Clean Architecture são estritamente adotados no projeto.

Mercado Pago

Essa aplicação está integrada com o Mercado Pago, um provedor de pagamento. Com a realização do pedido, um QR code é criado num ponto de venda ("Point of Sale" ou "POS") da loja para ser pago pelo cliente através do aplicativo do Mercado Pago. Após o pagamento, o Mercado Pago notifica a aplicação através de um endpoint funcionando como webhook.

Consulte a documentação para saber mais sobre a integração.

Infraestrutura

Amazon Web Services (AWS) é usado como Cloud Provider e o Terraform é usado para provisionar Infrastructure as Code (IaC) hospedado neste repositório em /terraform e nos demais repositórios desta organização no GitHub.

Os recursos incluem:

  • repositórios privados no Amazon Elastic Container Registry (ECR)
  • cluster do Amazon Elastic Kubernetes Service (EKS)
  • instâncias do Relational Database Service (RDS) for PostgreSQL
  • tabela do DynamoDB
  • secrets (de banco de dados e Mercado Pago) no Secrets Manager
  • parâmetros de sistema no SSM Parameter Store
  • API Gateway (Load Balancer no EKS como target)
  • user pool de clientes no Cognito
  • funções Lambda para autenticação

Além de dependências como recursos do Virtual Private Cloud (VPC).

About

Main repository for solution proposed by Group 15 to the Tech Challenge of specialization in Software Architecture from FIAP

Resources

License

Stars

Watchers

Forks