Introducción: Coordinación por eventos
En Choreography no existe un orquestador central. Cada servicio reacciona a eventos y decide su siguiente acción.
Esto reduce el acoplamiento y elimina un punto único de fallo, pero requiere disciplina en el diseño de eventos y trazabilidad.
La coordinación emerge del flujo de eventos: un servicio publica y otro responde, generando una cadena de reacciones.

Prompt: Event-driven choreography flow, clean minimal style.
1. Naturaleza: Bandadas sincronizadas
Las aves vuelan en bandadas sin un líder central. Cada ave reacciona a señales locales de sus vecinas.
La coordinación global es resultado de decisiones locales, igual que en Choreography.

Prompt: Birds flocking in coordination, soft natural illustration.
2. Mundo Real: Cadena logística
Un pedido aprobado dispara el empaque; el empaque dispara el envío; el envío dispara la facturación.
No hay un director central: cada etapa reacciona al evento anterior.
Este estilo permite agregar nuevas etapas sin reconfigurar un orquestador, pero obliga a controlar el orden y los duplicados.

Prompt: Logistics chain event flow, clean flat style.
3. Implementación en C#: Código Paso a Paso
public class OrderCreated { public string OrderId { get; set; } }
public class Packed { public string OrderId { get; set; } }
public class WarehouseService
{
public event Action PackedEvent;
public void OnOrderCreated(OrderCreated e)
{
// Empacar
PackedEvent?.Invoke(new Packed { OrderId = e.OrderId });
}
}
En sistemas reales, estos eventos viajan por un broker y cada servicio maneja su propia persistencia y reintentos.
La observabilidad es clave: sin trazas distribuidas, el flujo se vuelve difícil de entender.
4. Choreography vs Orchestration
Choreography es distribuido y emergente; Orchestration tiene un coordinador que controla el flujo.
Choreography escala mejor en equipos autónomos, pero puede volverse difícil de depurar sin buena telemetría.
5. Diagrama UML

Prompt: UML diagram of choreography pattern, clean vector layout.

Prompt: Choreography event flow diagram, minimal infographic style.
⚠️ Cuándo NO Usar Choreography
- Si necesitas control central estricto del flujo.
- Si el equipo no tiene experiencia en eventos y observabilidad.
- Si los errores deben detectarse y revertirse inmediatamente.
💪 Ejercicio
Diseña una coreografía para un pedido: creación, pago, preparación y envío. Define los eventos clave.
Conclusión
Choreography permite sistemas flexibles y desacoplados, ideales para microservicios autónomos.
Con contratos claros y trazabilidad, es una estrategia poderosa para flujos distribuidos.