Skip to content

ALFAC-Org/food

Repository files navigation

Aplicação Fast Food - ALFAC · Coverage CI/CD

Esta é uma aplicação que tem por objetivo, fornecer uma plataforma de pedidos de fast food. A plataforma permite aos clientes seguir o fluxo comum de um pedido: escolher o lanche com seu complemento, acompanhamento, bebida e sobremesa.

Ao final, o cliente irá realizar o pagamento deste pedido, através de um QR Code e por fim, receber seu pedido.

Para isso, o consumidor desta plataforma deve seguir o fluxo estabelecido na imagem a seguir:

Fluxo básico da aplicação

Fluxo completo no MIRO

Fase 1

  • Brain Storming
  • Event Storming
  • Fluxo Vertical
  • Linguagem Ubíqua

Veja em: https://miro.com/app/board/uXjVKZNCxxM=/?moveToWidget=3458764595480383068&cot=14

Fase 2

Veja em: https://miro.com/app/board/uXjVKZNCxxM

Fase 3

Veja em: https://miro.com/app/board/uXjVKZNCxxM=/?moveToWidget=3458764600931910148&cot=14

Fase 4

Veja em: https://miro.com/app/board/uXjVKZNCxxM=/?moveToWidget=3458764603014029962&cot=14

Warning

Essa documentação foca na 4° FASE do Tech Challenge - usando Terraform e GitHub Actions. Se precisar, consulte o README.md da 3° FASE no link: https://github.com/ALFAC-Org/food/tree/fase3-devops

Tabela de conteúdos

Tecnologia

  • Linguagem de Programação: Java 17
  • Framework: Spring Boot
  • Gerenciador de dependências: Maven
  • Banco de dados:
    • Este repositório: MySQL 8
    • Microsserviço food-cliente: MySQL 8
    • Microsserviço food-produto: AWS DynamoDB
  • Documentação e uso de API's: Swagger
  • Conteinerização: Docker
  • Orquestração: Kubernetes

Na Nuvem

  • Web Services: AWS
  • IaC: Terraform - v1.9.5

Requisitos

  • Docker (versão 27.0.3) - para rodar localmente
  • Kubernetes (versão 1.30) - para rodar localmente e na nuvem (AWS)
  • Terraform (versão 1.9.5) - para rodar na nuvem (AWS) e GitHub Actions

Arquitetura

Visão Geral

A aplicação está estruturada no padrão de Clean Architecture.

Pode ser executada tanto via Docker, Kubernetes e Terraform.

Podendo ser hospedada tanto localmente ou na nuvem, usando serviços como AWS.

A interação da aplicação se dá através de APIs com o Swagger disponibilizado.

Diagrama

diagrama-arquitetura.png

Tutoriais

Passo Vídeo
0. Introdução geral 00-INTRODUCAO_GERAL
1. Introdução aos repositórios 01-INTRODUCAO_AOS_REPOSITORIOS
2. Configuração das variáveis ambiente 02-CONFIGURACAO_VARIAVEIS_AMBIENTE
3. Provisão da infraestrutura com https://github.com/ALFAC-Org/food-cloud-infra 03-PROVISAO_INFRA_P1 / 03-PROVISAO_INFRA_P2
4. Provisão dos bancos de dados com https://github.com/ALFAC-Org/food-database 04-PROVISAO_DB_P1 / 04-PROVISAO_DB_P2
5. Provisão das lambdas com https://github.com/ALFAC-Org/food-serveless-function 05-PROVISAO_LAMBDAS_P1 / 05-PROVISAO_LAMBDAS_P1
6. Provisão da aplicação food-produto https://github.com/ALFAC-Org/food-produto 06-PROVISAO_FOOD_PRODUTO_P1 / 06-PROVISAO_FOOD_PRODUTO_P2
7. Provisão da aplicação food-cliente https://github.com/ALFAC-Org/food-cliente 07-PROVISAO_FOOD_CLIENTE_P1 / 07-PROVISAO_FOOD_CLIENTE_P2
8. Provisão da aplicação principal com https://github.com/ALFAC-Org/food 08-PROVISIONA_FOOD_P1 / 08-PROVISIONA_FOOD_P2
9. Simulando cliente na plataforma: Load Balancer e API Gateway 09-01_FLUXO_LOAD_BALANCER / 09-02_FLUXO_API_GATEWAY

Todos os vídeos estão disponíveis também aqui: https://drive.google.com/drive/folders/1C9UbKeiVNRIM7CSv-HMgMHZflwbqI5tQ?usp=sharing

Fluxo do usuário

Como fazer um pedido em nossa plataforma?

Veja em Fluxo do usuário.

Roadmap

FASE 1

Veja em https://github.com/ALFAC-Org/food/tree/hexagonal#roadmap

FASE 2

Veja em https://github.com/ALFAC-Org/food/tree/fase2-clean-arch?tab=readme-ov-file#roadmap

FASE 3

Veja em https://github.com/ALFAC-Org/food/tree/fase3-devops?tab=readme-ov-file#roadmap

FASE 4
  1. Refatore o projeto, separe-o em ao menos 3 (três) microsserviços. Alguns exemplos de serviços:
    • a. Pedido: responsável por operacionalizar o processo de pedidos, registrando os pedidos, retornando as informações necessárias para montar um pedido, listando os pedidos registrados e em processo de produção (visão de cliente).
    • b. Pagamento: responsável por operacionalizar a cobrança de um pedido, registrando a solicitação de pagamento, recebendo o retorno do processador de pagamento e atualizando o status do pedido.
    • c. Produção: responsável por operacionalizar o processo de produção do pedido, acompanhando a fila de pedidos (visão da cozinha), atualização de status de cada passo do pedido.

Ao refatorar, os microsserviços devem conter testes unitários.

  • a. Ao menos um dos caminhos de teste deve implementar BDD.
  • b. Em todos os projetos, a cobertura de teste deve ser de 80%.
  1. Seus repositórios devem ser separados para cada aplicação e devem respeitar as seguintes regras:
  • a. As branchs main/master devem ser protegidas, não permitindo commits diretamente.
  • b. Pull Request para branch main/master, que deve validar o build da aplicação, e a qualidade de código via sonarqube ou qualquer outro serviço semelhante, cobrindo 80% de coverage no mínimo.
  • c. No Merge, o deploy de todos seus microsserviços devem ser executados, isso significa que todos os repositórios devem estar com CI/CD criados, e executados corretamente.

Entregas

  • FASE 1 - 28/05/2024 - FEITO
  • FASE 2 - 30/07/2024 - FEITO
  • FASE 3 - 01/10/2024 - FEITO
  • FASE 4 - 03/12/2024 - AGUARDANDO

Membros

Nome RM E-mail GitHub
Leonardo Fraga RM354771 rm354771@fiap.com.br @LeonardoFraga
Carlos Henrique Carvalho de Santana RM355339 rm355339@fiap.com.br @carlohcs
Leonardo Alves Campos RM355568 rm355568@fiap.com.br @lcalves
Andre Musolino RM355582 rm355582@fiap.com.br @amusolino
Caio Antunes Gonçalves RM354913 rm354913@fiap.com.br @caio367

About

Uma plataforma de pedidos de fast food

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 6

Languages