diff --git a/docs/assets/arquitetura.png b/docs/assets/arquitetura.png new file mode 100644 index 00000000..6e5859d6 Binary files /dev/null and b/docs/assets/arquitetura.png differ diff --git a/docs/assets/checks-tests-pr.png b/docs/assets/checks-tests-pr.png new file mode 100644 index 00000000..00ca2799 Binary files /dev/null and b/docs/assets/checks-tests-pr.png differ diff --git a/docs/assets/deploy-dev-done.png b/docs/assets/deploy-dev-done.png new file mode 100644 index 00000000..a956fe79 Binary files /dev/null and b/docs/assets/deploy-dev-done.png differ diff --git a/docs/assets/gh-actions-history.png b/docs/assets/gh-actions-history.png new file mode 100644 index 00000000..cc87bdef Binary files /dev/null and b/docs/assets/gh-actions-history.png differ diff --git a/docs/assets/pr-comment-deploy.png b/docs/assets/pr-comment-deploy.png new file mode 100644 index 00000000..6c84b092 Binary files /dev/null and b/docs/assets/pr-comment-deploy.png differ diff --git a/docs/assets/quality-gate-sonarqube-1.png b/docs/assets/quality-gate-sonarqube-1.png new file mode 100644 index 00000000..3659a02f Binary files /dev/null and b/docs/assets/quality-gate-sonarqube-1.png differ diff --git a/docs/assets/status-auth-service-after-deploy.png b/docs/assets/status-auth-service-after-deploy.png new file mode 100644 index 00000000..4027dc69 Binary files /dev/null and b/docs/assets/status-auth-service-after-deploy.png differ diff --git a/docs/assets/trigger-deploy-dev.png b/docs/assets/trigger-deploy-dev.png new file mode 100644 index 00000000..3d756465 Binary files /dev/null and b/docs/assets/trigger-deploy-dev.png differ diff --git a/docs/fase_4/continuous_integration.md b/docs/fase_4/continuous_integration.md new file mode 100644 index 00000000..58cd03a5 --- /dev/null +++ b/docs/fase_4/continuous_integration.md @@ -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 diff --git a/docs/fase_4/movies.md b/docs/fase_4/movies.md index dc8fe614..92cae3fb 100644 --- a/docs/fase_4/movies.md +++ b/docs/fase_4/movies.md @@ -6,4 +6,8 @@
+
+ +
+
\ No newline at end of file diff --git a/docs/fase_4/ms_architecture.md b/docs/fase_4/ms_architecture.md new file mode 100644 index 00000000..c5823c7b --- /dev/null +++ b/docs/fase_4/ms_architecture.md @@ -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. diff --git a/mkdocs.yml b/mkdocs.yml index 0616f0a7..0bcbf65e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -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"