Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/assets/arquitetura.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/checks-tests-pr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/deploy-dev-done.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/gh-actions-history.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/pr-comment-deploy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/quality-gate-sonarqube-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/trigger-deploy-dev.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions docs/fase_4/continuous_integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Continuous integration and continuous delivery

---

Nesta quarta entrega, apresentamos os processos para a implementação do Tech Challenge, cujo objetivo é desenvolver uma plataforma de vendas para uma lanchonete de bairro em plena expansão. Este documento detalha os testes unitários, cobertura de código e o fluxo de deploy baseado na branch principal.

A implementação foi realizada utilizando o mesmo ambiente configurado na [fase 3](https://software-architecture-fiap.github.io/tech-challenge/fase_3/eks_infra_cicd/), garantindo consistência e continuidade.

Para mais detalhes, consulte os manifestos do Terraform disponíveis no repositório [infra-kitchen](https://github.com/software-architecture-fiap/infra-kitchen).

---

## :material-wrench-outline: Checks de PR

Cada repositório de serviço possui um pipeline automatizado para verificar a qualidade do código e a execução de testes unitários sempre que há mudanças no código.

- Análise de código com Flake8: Valida a conformidade do código com as melhores práticas do Python.
- Execução de testes unitários:
- Configuração do ambiente com Python 3.10 e Poetry.
- Instalação de dependências via Poetry.

#### Execução de testes com pytest e cobertura de código.

![image](../assets/checks-tests-pr.png)

## :material-wrench-outline: Cobertura de código

O pipeline de cobertura de código é acionado via push na branch principal e em pull requests, garantindo que a cobertura mínima seja respeitada. Execução dos testes com cobertura inclui:

- O pytest é executado com pytest-cov.
- O relatório de cobertura é gerado no formato XML.

Caso a cobertura fique abaixo de 75%, o pipeline falha, upload do relatório de cobertura como artefato no GitHub Actions.

![image](../assets/quality-gate-sonarqube-1.png)

## :material-wrench-outline: Pipeline de Deploy

O deploy é acionado via comentário no PR (/deploy). O GitHub Actions executa as seguintes etapas:

- Build da imagem Docker com a tag baseada no commit SHA.
- Push da imagem para o Amazon ECR.
- Atualização do Kustomize para utilizar a nova imagem.
- Aplicar as configurações no cluster Kubernetes.

No ambiente de desenvolvimento o eploy acionado com `/deploy` em um PR.

![image](../assets/pr-comment-deploy.png)

![image](../assets/trigger-deploy-dev.png)

![image](../assets/gh-actions-history.png)

![image](../assets/deploy-dev-done.png)

![image](../assets/status-auth-service-after-deploy.png)

Mais detalhe da execução do pipeline [clique aqui](https://github.com/software-architecture-fiap/tech-challenge/actions/runs/13402806439/job/37437040963?pr=84)


No Ambiente de Produção o versionamento é baseado em semver e nas seguintes regras de nome de branch:

- bugfix/ → Patch version
- feature/ → Minor version
- release/ → Major version
- doc/ ou misc/ → Apenas incrementação de build
4 changes: 4 additions & 0 deletions docs/fase_4/movies.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@

<div style="text-align: center;">
<iframe width="745" height="400" src="https://www.youtube.com/embed/mAt4CfBFrb4?si=H-agpkWQji94AAkz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>

<div style="text-align: center;">
<iframe width="745" height="400" src="https://www.youtube.com/embed/jyov44bF7Fo?si=1naviSxACqjYp7tL" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div>
54 changes: 54 additions & 0 deletions docs/fase_4/ms_architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Arquitetura de microsserviços

Nesta documentação, detalharemos três microsserviços principais da nossa plataforma:

1. [**Auth Service**](https://github.com/software-architecture-fiap/tc-auth-service): Responsável pela autenticação de usuários e geração de tokens JWT.
2. [**Order Service**](https://github.com/software-architecture-fiap/tc-order-service): Cuida do gerenciamento de pedidos e sua interação com o Payment Service.
3. [**Payment Service**](https://github.com/software-architecture-fiap/tc-payment-service): Gerencia a integração de pagamentos através do MercadoPago.

Cada serviço é desenvolvido utilizando tecnologias específicas e possui funcionalidades e endpoints próprios, garantindo uma arquitetura modular e escalável.

### Desenho da arquitetura atualizada com os microsserviços

![image](../assets/arquitetura.png)

## :material-wrench-outline: Auth service

Esse microsserviço é responsável pela etapa de autenticação de clientes identificados, não identificados e usuários administrativos. Além disso, esse serviço também faz a geração de tokens JWT para autenticação em outro serviços. Contendo os endpoints para o gerenciamento de usuários.

### :material-dots-circle: Funcionalidades

- **Autenticação de usuários:** Geração de tokens JWT para autenticação.
- **Cadastro de usuários:** Permite que novos usuários se cadastrem no sistema.
- **Validação de tokens:** Valida se os tokens enviados em requisições são válidos.
- **Integração com outros** serviços: O Auth Service é consumido por outros serviços para validar a autenticidade de requisições.

### :material-code-json: Endpoints

- POST /token: Solicita um bearer token.
- GET /auth: Valida a autorização do bearer token.
- POST /customers/admin: Cria o usuário administrador da aplicação
- GET /customer/: Recupera a lista de usuários cadastrados.
- POST /customer/identify: Identifica um usuário pelo CPF.
- POST /customer/register: Criar o usuário identificado.
- POST /customer/anonymous: Criar o usuário anônimo.

## :material-wrench-outline: Payment service

Esse microsserviço é parte essencial da plataforma de vendas da lanchonete, gerenciando a integração de pagamentos através do MercadoPago. Ele é responsável por gerar QR codes para pagamentos e registrar todo o fluxo de transações, garantindo a segurança e a integridade dos dados armazenados.

### :material-dots-circle: Detalhes do funcionamento

Utilizamos o FastAPI como framework para desenvolvimento de APIs. O MongoDB é o banco de dados NoSQL utilizado para armazenar dados de transações, e a interação com o MongoDB é feita através do driver pymongo. Para a integração com o sistema de pagamentos MercadoPago, utilizamos o MercadoPago SDK. Além disso, o Poetry é utilizado como gerenciador de dependências e ambiente virtual.

## :material-wrench-outline: Order service

O Order service gerencia os pedidos da lanchonete, atualizando os status dos pedidos e interagindo com o payment service para a realização de pagamentos.

### :material-dots-circle: Funcionalidades

- **Criação de pedidos:** Permite a criação de novos pedidos a partir de um cliente autenticado.
- **Atualização de status:** Permite que o status do pedido seja atualizado, como paid, preparing, delivered, etc.
- **Integração com serviço de pagamento:** Comunica-se com um serviço de pagamento para gerar links de pagamento ou QR codes.
- **Gerenciamento de produtos e categorias:** Ações CRUD (Create, Read, Update, Delete) para produtos e categorias.
- **Rastreamento de pedidos:** Permite o rastreamento do status de cada pedido.
4 changes: 3 additions & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ nav:
- CI/CD App: "fase_3/cicd_code_app.md"
- Serverless: "fase_3/sls_setup.md"
- Fase 4:
- Vídeos: "fase_4/movies.md"
- Arquitetura de microsserviços: "fase_4/ms_architecture.md"
- Integração contínua: "fase_4/continuous_integration.md"
- Vídeos: "fase_4/movies.md"
- Guia:
- Ambiente: "environment.md"