Volver al blog Microservicios

Cómo conectar microservicios con eventos

Microservicios que se comunican sin acoplarse usando eventos.

02 octubre 2025
laravel Arquitectura limpia

En una arquitectura de microservicios tradicional basada en HTTP, cada servicio debe conocer las rutas y contratos del resto. Esto genera acoplamiento, problemas de escalabilidad y dependencias difíciles de mantener. La Event-Driven Architecture (EDA) propone otra forma: los microservicios se comunican a través de eventos, sin saber quién los recibe.

¿Qué es un evento?

Un evento representa algo que ocurrió en el sistema, por ejemplo: “un usuario se registró”, “una factura fue pagada” o “un pedido fue enviado”. Los servicios publican esos eventos en un broker de mensajes (Kafka, RabbitMQ, Redis Streams, etc.) y otros servicios los suscriben para reaccionar.

Caso real: facturación automática

Supongamos una app de e-commerce. Tenemos dos microservicios:

  • PedidosService
  • FacturacionService

Cuando un pedido se completa, el servicio de pedidos publica un evento:

// PedidosService
$evento = [
    'tipo' => 'pedido.completado',
    'datos' => ['pedido_id' => 153, 'usuario_id' => 21]
];

$broker->publicar('pedidos', json_encode($evento));

Luego, el servicio de facturación escucha la cola pedidos:

// FacturacionService
$broker->suscribirse('pedidos', function (string $mensaje) {
    $evento = json_decode($mensaje, true);

    if ($evento['tipo'] === 'pedido.completado') {
        $this->generarFactura($evento['datos']['pedido_id']);
    }
});

Así, FacturacionService no conoce al servicio de pedidos. Solo reacciona a eventos. Esto permite agregar nuevos servicios (por ejemplo, NotificacionesService) sin tocar código existente.

Ventajas

  • Bajo acoplamiento entre microservicios
  • Escalabilidad horizontal más simple
  • Tolerancia a fallos
  • Extensibilidad sin afectar lo existente

EDA es la base de sistemas como Uber, Netflix o Mercado Libre, donde los servicios intercambian millones de eventos por segundo.