Recursos
Diagramas de Arquitectura
Diagramas en formato texto que podés copiar, adaptar y usar en tu documentación técnica.
🏗️ Arquitectura de Microservicios — Vista General
Diagrama de alto nivel mostrando los componentes principales de una arquitectura de microservicios típica.
┌─────────────────────────────────────────────────────────┐
│ CLIENTES │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web │ │ Mobile │ │ IoT │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└────────┼──────────────┼──────────────┼──────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────┐
│ API GATEWAY │
│ Auth │ Rate Limit │ Routing │ Load Balancing │
└────────┬──────────────┬──────────────┬──────────────────┘
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌────▼────┐
│ Service │ │ Service │ │ Service │
│ A │ │ B │ │ C │
│ (REST) │ │ (gRPC) │ │ (REST) │
└────┬────┘ └─────┬─────┘ └────┬────┘
│ │ │
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌─────────┐
│ DB A │ │ DB B │ │ DB C │
│(Postgres) │ (MongoDB) │ │ (Redis) │
└─────────┘ └──────────┘ └─────────┘
┌──────────────────────────┐
│ EVENT BUS │
│ (Kafka / RabbitMQ) │
│ │
│ Service A ──publish──► │
│ Service B ◄──consume── │
│ Service C ◄──consume── │
└──────────────────────────┘ 🔷 Arquitectura Hexagonal (Ports & Adapters)
Organización del código en capas concéntricas con puertos y adaptadores.
┌─────────────────┐
│ HTTP Adapter │
│ (Controller) │
└────────┬────────┘
│
┌──────────────▼──────────────┐
│ INPUT PORT │
│ (Use Case Interface) │
│ │
│ ┌────────────────────────┐ │
│ │ │ │
│ │ DOMAIN / CORE │ │
│ │ │ │
│ │ - Entities │ │
│ │ - Value Objects │ │
│ │ - Domain Services │ │
│ │ - Business Rules │ │
│ │ │ │
│ └────────────────────────┘ │
│ │
│ OUTPUT PORT │
│ (Repository Interface) │
└──────────────┬──────────────┘
│
┌────────▼────────┐
│ DB Adapter │
│ (Repository) │
└─────────────────┘
Regla: Las dependencias siempre apuntan hacia adentro.
El dominio NO conoce la infraestructura. 🚀 Pipeline de CI/CD
Flujo típico desde el commit hasta producción.
Developer
│
▼
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Commit │───►│ Build │───►│ Test │───►│ Lint / │
│ & Push │ │ (CI) │ │ Suite │ │ SAST │
└─────────┘ └──────────┘ └──────────┘ └────┬─────┘
│
▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│Production│◄───│ Canary / │◄───│ Staging │◄───│ Docker │
│ Deploy │ │Blue-Green│ │ Deploy │ │ Build │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
│
▼
┌──────────┐
│ Monitor │
│ & Alert │
└──────────┘
Cada etapa es un gate: si falla, el pipeline se detiene. 📡 Flujo Event-Driven
Cómo fluyen los eventos entre servicios en una arquitectura basada en eventos.
┌──────────────┐
│ Order │ 1. Crea orden
│ Service │─────────────────┐
└──────────────┘ │
▼
┌─────────────────┐
│ Event Bus │
│ │
│ OrderCreated │
│ orderId, items, │
│ userId, total │
└───┬─────┬───┬───┘
│ │ │
┌──────────────┘ │ └──────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Inventory │ │ Payment │ │ Notification │
│ Service │ │ Service │ │ Service │
│ │ │ │ │ │
│ 2. Reserva │ │ 3. Procesa │ │ 4. Envía │
│ stock │ │ pago │ │ email │
└──────────────┘ └──────┬───────┘ └──────────────┘
│
▼
┌─────────────────┐
│ Event Bus │
│ PaymentCompleted│
└─────────────────┘
Los servicios están desacoplados: cada uno reacciona
a eventos sin conocer al emisor. 🔌 Estados del Circuit Breaker
Máquina de estados del patrón Circuit Breaker.
Llamada exitosa
┌─────────────────┐
│ │
▼ │
┌──────────┐ ┌─────┴──────┐
─────────►│ CLOSED │ │ HALF-OPEN │
inicio │ │ │ │
│ Permite │ │ Permite 1 │
│ llamadas │ │ llamada de │
└────┬─────┘ │ prueba │
│ └─────┬──────┘
│ │
Fallos >= │ │ Llamada falla
threshold │ │
▼ │
┌──────────┐ │
│ OPEN │◄─────────┘
│ │
│ Rechaza │
│ llamadas │
└────┬─────┘
│
│ Timeout expira
│
└──────────────────► HALF-OPEN