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
De forma geral, clientes e administradores usarão o sistema, que depende de um serviço de pagamento externo.
Entre os requisitos não funcionais está a escalabilidade.
Consulte a documentação para conhecer todos os requisitos.
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.
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
.
Arquitetura Hexagonal (Ports and Adapters) e Clean Architecture são estritamente adotados no projeto.
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.
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).