Comunicación síncrona vs asíncrona: ¿cuándo usar cada una?

La elección depende de si el cliente debe esperar una respuesta antes de continuar.

Usa Síncrona (Solicitud-Respuesta) cuando:

  • Se necesita un resultado inmediato: Acciones de cara al usuario (inicio de sesión, búsqueda, pago) donde la UI se bloquea hasta que el servidor responde.
  • Integridad transaccional: Operaciones que requieren garantías ACID entre servicios (por ejemplo, transferencia de fondos).
  • Interacción en tiempo real: Chat, videollamadas, edición colaborativa, juegos — la baja latencia es crítica.
  • Orquestación simple: Pocos servicios, latencia predecible.

Usa Asíncrona (Event-Driven) cuando:

  • Procesamiento en segundo plano: Envío de correo, generación de informes, procesamiento de imágenes, sincronización de datos — el usuario no espera.
  • Desacoplamiento y resiliencia: Los servicios se comunican mediante colas de mensajes (Kafka, RabbitMQ) o buses de eventos; las fallas no se propagan inmediatamente.
  • Escalabilidad: Los consumidores se escalan de forma independiente; los picos de tráfico los absorbe la cola.
  • Flujos de trabajo de larga duración: Cumplimiento de pedidos, aprobación de préstamos, aprovisionamiento de varios pasos.

Enfoque híbrido

La mayoría de los sistemas usa ambos: síncrona para APIs de cara al usuario, asíncrona para flujos de trabajo internos. Elige según los requisitos de latencia, necesidades de consistencia y semántica de fallos.