Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update readme #1

Merged
merged 2 commits into from
Oct 23, 2024
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
151 changes: 10 additions & 141 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
### Sistema de Gerenciamento de E-commerce: Requisitos e Arquitetura
# Catálogo de Produtos e Categorias

#### Objetivo
Desenvolver um sistema de gerenciamento de e-commerce utilizando uma arquitetura de microserviços, seguindo o padrão Clean Architecture para garantir modularidade, escalabilidade e manutenção fácil.
Microserviço responsável pelo gerenciamento do catálogo de produtos e categorias, seguindo o padrão Clean Architecture para garantir modularidade, escalabilidade e manutenção fácil.

### Requisitos Funcionais
## Tecnologias Utilizadas

#### 1. Serviço de Catálogo
- **Framework:** Flask
- **Autenticação:** JWT (JSON Web Tokens)
- **Banco de Dados:** MySQL e SQLalchemy
- **Mensageria:** RabbitMQ (para comunicação assíncrona entre serviços)

[![Continuos Integration -Testing, Build and Deploy Backend Catalog Microservice to AWS ECS](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml/badge.svg)](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml)
#### Serviço de Catálogo

[![Continuos Integration -Testing, Build and Deploy Backend Catalog Microservice](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml/badge.svg)](https://github.com/maxsonferovante/catalog-microservice/actions/workflows/workflowTestingAndDeploy.yaml)

- **Gerenciamento de Produtos:**
- CRUD (Create, Read, Update, Delete) de produtos.
Expand All @@ -19,138 +23,3 @@ Desenvolver um sistema de gerenciamento de e-commerce utilizando uma arquitetura
- Pesquisa de produtos por nome, descrição e categoria.
- Filtragem por preço, disponibilidade e outros atributos.

#### 2. Serviço de Carrinho de Compras
- **Gerenciamento de Carrinho:**
- Adicionar produtos ao carrinho.
- Atualizar quantidade de produtos no carrinho.
- Remover produtos do carrinho.
- Visualizar itens no carrinho.
- **Cálculo de Preço:**
- Cálculo de preços totais e subtotais.
- Aplicação de descontos e promoções.

#### 3. Serviço de Pedidos
- **Processamento de Pedidos:**
- Criação de pedidos a partir do carrinho de compras.
- Atribuição de status ao pedido (pendente, pago, enviado, concluído).
- Histórico de pedidos por usuário.
- **Pagamento:**
- Integração com gateways de pagamento (ex: Stripe, PayPal).
- Verificação e confirmação de pagamento.

#### 4. Serviço de Autenticação
- **Gerenciamento de Usuários:**
- Registro de novos usuários.
- Login/logout de usuários.
- Recuperação de senha.
- Perfis de usuário (dados pessoais, endereços de entrega, histórico de compras).
- **Autorização e Autenticação:**
- Geração e verificação de tokens JWT.
- Controle de acesso baseado em funções (administrador, cliente).

### Requisitos Não Funcionais
- **Escalabilidade:** O sistema deve ser capaz de lidar com um grande número de usuários e pedidos simultaneamente.
- **Segurança:** Proteção contra ataques comuns como SQL injection, XSS, CSRF, e garantia de proteção dos dados do usuário.
- **Desempenho:** Resposta rápida às solicitações do usuário.
- **Manutenibilidade:** Código limpo, modular e bem documentado para facilitar a manutenção e futuras expansões.
- **Monitoramento:** Sistema de logging e monitoramento para rastrear a performance e erros.

### Arquitetura

#### 1. Estrutura Geral

1. **Front-End:** Interface do usuário desenvolvida com um framework JavaScript moderno (React, Angular, Vue.js) que consome os serviços back-end via API REST.

2. **Back-End:** Composto por vários microserviços, cada um implementado seguindo o padrão Clean Architecture.

#### 2. Microserviços

1. **Serviço de Catálogo**
- **API Gateway:** FastAPI
- **Banco de Dados:** PostgreSQL
- **Cache:** Redis (para melhorar a velocidade das consultas frequentes)

2. **Serviço de Carrinho de Compras**
- **API Gateway:** FastAPI
- **Banco de Dados:** PostgreSQL

3. **Serviço de Pedidos**
- **API Gateway:** FastAPI
- **Banco de Dados:** PostgreSQL
- **Mensageria:** RabbitMQ (para comunicação assíncrona entre serviços)

4. **Serviço de Autenticação**
- **API Gateway:** FastAPI
- **Banco de Dados:** PostgreSQL
- **Autenticação:** JWT (JSON Web Tokens)

#### 3. Componentes Adicionais
- **Gateway de API:** NGINX ou Traefik para rotear solicitações para os microserviços apropriados.
- **Orquestração de Contêineres:** Kubernetes para gerenciar a implantação, escalabilidade e operação dos contêineres Docker.
- **CI/CD:** Pipeline automatizado usando GitLab CI ou GitHub Actions para integração contínua e entrega contínua.
- **Monitoramento e Logging:** Prometheus e Grafana para monitoramento; ELK Stack (Elasticsearch, Logstash, Kibana) para logging centralizado.

### Detalhamento das Tarefas

#### 1. Configuração Inicial
- **Configurar Repositórios:** Criar repositórios separados para cada microserviço e um repositório central para o front-end.
- **Configurar Docker:** Criar arquivos Dockerfile para cada microserviço e configurar o Docker Compose para desenvolvimento local.
- **Configurar Kubernetes:** Criar arquivos de manifesto para Kubernetes (Deployment, Service, ConfigMap, Secret).

#### 2. Desenvolvimento dos Microserviços

##### Serviço de Catálogo
- **Modelagem de Dados:** Definir esquemas de banco de dados para produtos e categorias.
- **Endpoints de API:**
- `GET /products`
- `POST /products`
- `PUT /products/{id}`
- `DELETE /products/{id}`
- `GET /categories`
- `POST /categories`
- `PUT /categories/{id}`
- `DELETE /categories/{id}`
- **Implementação de Cache:** Integrar Redis para caching de consultas frequentes.

##### Serviço de Carrinho de Compras
- **Modelagem de Dados:** Definir esquemas de banco de dados para itens do carrinho.
- **Endpoints de API:**
- `GET /cart`
- `POST /cart`
- `PUT /cart/{item_id}`
- `DELETE /cart/{item_id}`
- **Cálculo de Preço:** Implementar lógica de cálculo de preços e aplicação de descontos.

##### Serviço de Pedidos
- **Modelagem de Dados:** Definir esquemas de banco de dados para pedidos.
- **Endpoints de API:**
- `GET /orders`
- `POST /orders`
- `PUT /orders/{id}`
- `DELETE /orders/{id}`
- **Integração de Pagamentos:** Implementar integração com gateways de pagamento.

##### Serviço de Autenticação
- **Modelagem de Dados:** Definir esquemas de banco de dados para usuários.
- **Endpoints de API:**
- `POST /register`
- `POST /login`
- `POST /logout`
- `POST /password-reset`
- **Autenticação e Autorização:** Implementar geração e verificação de tokens JWT.

### Etapas Finais

#### 1. Integração
- **Integração de Microserviços:** Testar a comunicação entre os microserviços usando RabbitMQ e API Gateway.
- **Testes de Integração:** Realizar testes de ponta a ponta para garantir que todos os componentes funcionem juntos corretamente.

#### 2. Monitoramento e Logging
- **Configurar Monitoramento:** Implementar monitoramento com Prometheus e Grafana.
- **Configurar Logging:** Implementar logging centralizado com ELK Stack.

#### 3. Deploy
- **Configuração de CI/CD:** Criar pipelines CI/CD para deploy automatizado em Kubernetes.
- **Deploy em Produção:** Realizar o deploy do sistema em um cluster Kubernetes.

Esse detalhamento deve fornecer uma visão clara das tarefas e da arquitetura necessárias para desenvolver o sistema de gerenciamento de e-commerce. Boa sorte com o projeto!
81 changes: 80 additions & 1 deletion procuder.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,86 @@ def new_stock_random():
def main():

while True:
data = request_get_all_products()
data = {
"data": {
"atributes": [
{
"category": {
"description": "Synchronized composite algorithm",
"id": "840be210-7e19-5f93-b997-43d3c6ed8fb4",
"name": "Clothing"
},
"description": "Operative next generation circuit",
"id": "00b4f388-4a16-50ac-9ab9-be13fdd3f87b",
"name": "Salad",
"price": "42.00",
"stock": 44
},
{
"category": {
"description": "Object-based local structure",
"id": "46fe8de9-94a7-5ffc-9f0c-8e700e26fc9e",
"name": "Tools"
},
"description": "Profit-focused disintermediate process improvement",
"id": "0163690f-5007-51fe-b14d-ab9462cfeecb",
"name": "For repair Cotton Gloves",
"price": "72.00",
"stock": 12
},
{
"category": {
"description": "Centralized value-added customer loyalty",
"id": "df83e778-efa9-5c10-a786-4597ac44bbed",
"name": "Shoes"
},
"description": "Focused foreground success",
"id": "01898931-1c02-5ba2-ab92-0584774a3e83",
"name": "Car",
"price": "1.00",
"stock": 19
},
{
"category": {
"description": "Re-engineered scalable parallelism",
"id": "c786db45-4659-5b6e-90e6-7e964f1971c8",
"name": "Computers"
},
"description": "Cross-platform cohesive standardization",
"id": "01cbaab7-08e0-572d-8734-dd8752d34f36",
"name": "Fantastic Plastic Table",
"price": "86.00",
"stock": 44
},
{
"category": {
"description": "Extended zero tolerance budgetary management",
"id": "8303098f-0034-5a83-9432-d0511324b537",
"name": "Outdoors"
},
"description": "Open-source tertiary orchestration",
"id": "0202f162-0ee2-58e3-90a7-f55a5e5ab96e",
"name": "Fantastic Plastic Keyboard",
"price": "48.00",
"stock": 79
},
{
"category": {
"description": "Synergistic systemic benchmark",
"id": "26035f81-1e2a-5a50-83cd-82d294834fcb",
"name": "Industrial"
},
"description": "Multi-channeled disintermediate info-mediaries",
"id": "02c7391e-2fc3-52c2-aaa8-7a1be0f2ec06",
"name": "Metal Ball",
"price": "86.00",
"stock": 28
},
],
"count": 500,
"type": "Products"
}
}

if data['data']['count'] == 0:
print ("No products to update stock")
Expand Down