Arquitetura de microsserviços para gestão de pedidos fornecendo interfaces REST, GraphQL e gRPC.
Este projeto segue o Modelo C4 para documentação da arquitetura. Visualize os diagramas em /docs/c4
:
- Contexto - Visão geral do sistema e interações externas
- Container - Componentes técnicos e seus relacionamentos
- Componente - Estrutura interna e organização
- Código - Classes e interfaces principais
Contexto | Container | Componente | Código |
---|---|---|---|
- API REST:
:8080
- GraphQL:
:8081
- gRPC:
:50051
# Iniciar todos os serviços
docker compose up -d
# Verificar status dos serviços
docker compose ps
Antes de iniciar as requisições para listar as ordens é importante que você execute pelo menos uma única vez a requisição HTTP para criar uma nova ordem.
Use o seguinte comando no terminal ou execute o arquivo tests/http/create_order.http
em sua IDE (se for compatível).
curl -X POST "http://localhost:8080/order" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"total_amount": 150.50
}'
Use este comando para executar a requisição diretamente no Terminal, ou use o arquivo .http
que está na pasta tests/http/rest_list_orders.http
.
curl -X GET "http://localhost:8080/order" -H "Accept: application/json"
Use esta consulta para listar as ordens através do GraphQL, ou use o arquivo .http
que está na pasta tests/http/graphql_list_orders.http
.
query {
listOrders {
id
customerId
status
totalAmount
}
}
Um cliente adicional foi desenvolvido para listar as ordens através do gRPC, você pode executá-lo usando o seguinte comando.
go run tests/grpc/client.go
service OrderService {
rpc ListOrders(ListOrdersRequest) returns (ListOrdersResponse);
}
.
├── api/ # Definições de API
├── cmd/ # Pontos de entrada dos serviços
├── internal/ # Código privado da aplicação
├── migrations/ # Migrações do banco de dados
├── tests/ # Testes
└── docs/ # Documentação
- Go 1.23+
- Docker & Docker Compose
- PostgreSQL (fornecido via Docker)