Arquitectura de microservicios escalable con containerización Docker, orquestación Kubernetes y base para despliegue en AWS.
- Auth (FastAPI): Registro, login, JWT.
- Users (FastAPI): Perfil de usuario, CRUD básico.
- Products (FastAPI): Catálogo de productos.
- Orders (FastAPI): Creación de pedidos validando stock.
- API Gateway (FastAPI): Enrutamiento y verificación de JWT.
- Copia
.env.examplea.envy ajusta valores. - Construye y levanta:
# Windows PowerShell
docker compose up --buildGateway expuesto en http://localhost:8080
- Registrar usuario:
Invoke-RestMethod -Method Post -Uri 'http://localhost:8080/api/register' -ContentType 'application/json' -Body (@{ email='alice@example.com'; password='secret'; full_name='Alice' } | ConvertTo-Json)- Crear producto:
Invoke-RestMethod -Method Post -Uri 'http://localhost:8080/api/products' -ContentType 'application/json' -Body (@{ name='Keyboard'; price=99.9; stock=10 } | ConvertTo-Json)- Login (obtén token):
Invoke-RestMethod -Method Post -Uri 'http://localhost:8080/api/login' -ContentType 'application/x-www-form-urlencoded' -Body 'username=alice@example.com&password=secret'- Crear orden (reemplaza ):
Invoke-RestMethod -Method Post -Uri 'http://localhost:8080/api/orders' -Headers @{ Authorization = 'Bearer <TOKEN>' } -ContentType 'application/json' -Body (@{ product_id=1; quantity=2 } | ConvertTo-Json)- Namespace, Deployments, Services e Ingress por servicio.
- Requiere un Ingress Controller (por ejemplo, NGINX Ingress).
Pasos rápidos:
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/configmap-env.yaml
kubectl apply -f k8s/deployments.yamlNotas:
- Las imágenes en
deployments.yamlson:latestlocales. Para cluster remoto, publica en un registro (ECR/Docker Hub) y actualizaimage:. - Ingress mapea el servicio
gatewaypor defecto.
- Esqueleto Terraform para ECR y EKS.
- Ajusta variables y sigue el README del módulo.
- Tipado, linters opcionales y pruebas básicas.
- Imágenes Docker pequeñas basadas en Python slim.
services/
auth/ users/ products/ orders/ gateway/
k8s/
infra/aws/terraform/
.vscode/
- POST /api/register
- POST /api/login
- GET /api/products, GET /api/products/{id}, POST /api/products
- POST /api/orders (JWT necesario)
Swagger UI disponible en cada microservicio en /docs (p. ej., http://localhost:8000/docs para Auth, http://localhost:8080/docs para Gateway).
- Cambia
JWT_SECRETy usa una base de datos administrada (Postgres/MySQL). SQLite es solo para desarrollo. - Añade observabilidad (Prometheus/Grafana), tracing (OTLP) y rate limiting en el Gateway si lo requieres.