Skip to content

CSGonzalez22/Api_microservicios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Microservicios

Arquitectura de microservicios escalable con containerización Docker, orquestación Kubernetes y base para despliegue en AWS.

Servicios

  • 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.

Correr local con Docker Compose

  1. Copia .env.example a .env y ajusta valores.
  2. Construye y levanta:
# Windows PowerShell
docker compose up --build

Gateway expuesto en http://localhost:8080

Smoke test rápido (PowerShell)

  • 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)

Kubernetes (manifests en k8s/)

  • 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.yaml

Notas:

  • Las imágenes en deployments.yaml son :latest locales. Para cluster remoto, publica en un registro (ECR/Docker Hub) y actualiza image:.
  • Ingress mapea el servicio gateway por defecto.

AWS (infra/aws/terraform)

  • Esqueleto Terraform para ECR y EKS.
  • Ajusta variables y sigue el README del módulo.

Estilo y calidad

  • Tipado, linters opcionales y pruebas básicas.
  • Imágenes Docker pequeñas basadas en Python slim.

Estructura

services/
  auth/ users/ products/ orders/ gateway/
k8s/
infra/aws/terraform/
.vscode/

Endpoints (Gateway)

  • 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).

Notas de producción

  • Cambia JWT_SECRET y 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors