FiapFood 🍟


❗IMPORTANTE - Urls dos MS de Pagamento e Produção

💬 Sobre o repositório

O FiapFood consiste em um sistema que é utilizado em lanchonetes e restaurantes, que processa todas as informações do contexto do pedido, desde a identificação do cliente, a escolha do pedido e o pagamento, até a entrega do pedido ao cliente.

⚠ Pré-requisitos para execução do projeto

  • Java 17 ou inferior
  • Maven
  • MySQL
  • MongoDB
  • Kafka

📌 Como utilizar?

Para utilizar o FiapPedidos, é necessário ter uma instância de conexão do banco de dados ativa (no caso MySQL), que por padrão fica na porta 3306, caso sua porta esteja diferente, especifique no application.properties em:

server.port=8080
server.servlet.context-path=/pedido
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=${MYSQL_HOST}
spring.datasource.username=${MYSQL_USERNAME}
spring.datasource.password=${MYSQL_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

# Specify the path of the OpenAPI documentation
springdoc.api-docs.path=/api-docs
# Specify the path of the Swagger UI
springdoc.swagger-ui.path=/swagger-ui.html
# Enable or disable Swagger UI
springdoc.swagger-ui.enabled=true 
spring.jpa.generate-ddl=true

Com o banco de dados devidamente configurado, rode o back-end da aplicação através do seguinte comando:

*Disponível em http://localhost:8080/

mvn spring-boot:run 

Com a aplicação rodando, acesse o localhost (porta 4200), e navegue pelo sistema!

🧠 Links importantes


Entrega Tech Challenge fase 5

Entrega Tech challenge fase 05

Pipeline

  • Fiap Pedidos

https://github.com/alissonit/fiap-pedidos/actions/runs/8346757102/job/22844801809

screenshot

  • Fiap Pagamento

https://github.com/alissonit/fiap-pagamento/actions/runs/8347692011/job/22848065559

screenshot

  • Fiap Production

https://github.com/alissonit/fiap-production/actions/runs/8348231780/job/22849655157

screenshot

Deploy na Cloud AWS

Evidência de deploy do serviço de pedidos:

screenshot

Evidência de deploy do serviço de pagamento:

screenshot

Evidência de deploy do serviço de produção:

screenshot

RDS Mysql

screenshot

API Gateway

screenshot

screenshot

Execução no SONAR:

https://sonarcloud.io/organizations/alissonit/projects

screenshot

Evidência aplicação em execução:

Pedido:

screenshot

Pagamento:

screenshot

Produção:

screenshot

MongoDB Atlas

Métricas de acesso:

screenshot screenshot

Evidências KAFKA SaaS

screenshot

screenshot

screenshot

screenshot

Desenho SAGA:

Estou usando o padrão SAGA de coreografia com o Kafka em três serviços: Pedido, Pagamento e Produção, para coordenar transações distribuídas de forma descentralizada, garantir atomicidade nas operações, aproveitar a flexibilidade e escalabilidade do Kafka para comunicação entre os serviços, e obter auditoria e visibilidade através do registro de eventos do Kafka. Isso resulta em uma arquitetura resiliente e altamente escalável, com garantia de atomicidade e monitoramento detalhado do fluxo de pedidos.

screenshot

Vídeo explicação SAGA: https://drive.google.com/file/d/1hl50zhNwh6xavo9BZHReaaazgVUb8UAL/view Youtube: https://youtu.be/8Qv_ctCRSvE

Link OWASP ZAP

https://drive.google.com/drive/folders/1Ku1gZSvSISKbuN28j3_3Zm04C2y1zYQp?usp=sharing

Link RIPD

https://docs.google.com/document/d/1LtdV65wnCPWYilI6BW09OqeHAyrsZLX-/edit?usp=drive_link&ouid=110299184513916109783&rtpof=true&sd=true

IaC (Infra as Code)

ECS-PEDIDO

https://github.com/alissonit/fiap-pedidos-iac-ecs/actions/runs/8350325962/job/22856465495

ECS-PRODUCAO

https://github.com/alissonit/fiap-producao-iac-ecs/actions/runs/8350922073/job/22858314023

ECS-PAGAMENTO

https://github.com/alissonit/fiap-pagamento/actions/runs/8347692011/job/22848065559

Desenho da Solução na Cloud:

screenshot