Saltar al contenido principal

Comunicación entre sistemas

Cuando los sistemas necesitan hablar, tienen dos maneras fundamentales de comunicarse: de forma sincrónica (esperando respuestas inmediatas) o asincrónica (disparar y olvidarse). Entender esta división te va a ayudar a debuggear problemas, elegir tecnologías y explicar decisiones arquitectónicas a tu equipo.

comparación síncrono asíncrono

Sincrónico

Una conversación directa y en tiempo real donde quien llama espera una respuesta inmediata.

ProtocoloMejor paraProblemas comunes
RESTAPIs web/móvilVersionado, overfetching
GraphQLNecesidades complejas de datos del clienteComplejidad de consultas
gRPCMicroservicios (internos)Debugging de formato binario
SOAPIntegraciones empresarialesComplejidad de XML
  • Usalo cuando lidiás con escenarios de éxito/fracaso, como pasarelas de pago o flujos de autenticación de usuario.
  • Evitalo para tareas largas, imaginate esperar 10 minutos a que cargue una página web.

Asincrónico

Comunicación asincrónica a través de message brokers. Los sistemas tiran mensajes en un "buzón digital" y siguen con lo suyo.

TecnologíaFortalezaPeculiaridad
RabbitMQEnrutamiento flexible de mensajesNecesita tunear colas
KafkaStreaming de eventos de alto volumenConfiguración compleja
AWS SQSSimplicidad serverlessBloqueo de proveedor
Redis Pub/SubNotificaciones en tiempo realSin persistencia
  • Brilla en escenarios como:
    • Procesamiento de pedidos ("Gracias por tu compra, te enviaremos un correo cuando lo despachemos")
    • Sincronización de datos entre sistemas ("Actualizar el CRM durante la noche")
    • Arquitecturas basadas en eventos ("Usuario se registró → enviar correo de bienvenida").
  • Estate atento a problemas como:
    • Duplicación de mensajes ("¿Por qué les cobramos dos veces?")
    • Datos desactualizados ("El inventario dice que queda 1, pero en realidad ya se vendió").

Comparación

CriterioSincrónicoAsincrónico
LatenciaNecesita respuesta inmediataRetraso tolerable (segundos-minutos)
Manejo de erroresFalla rápidoColas de reintento
AcoplamientoAjustado (conoce al receptor)Suelto (a través del broker)
EscalabilidadLimitado por quien llamaEscalado independiente
ComplejidadSimple de implementarGarantías de entrega complejas
CostoConsume muchos recursos (esperando)Eficiente (no espera)

La mayoría de los sistemas que vas a encontrar usan una mezcla. Recordá:

  1. La infraestructura existente de tu empresa va a influir un montón en las decisiones (no vas a reescribir jobs por lotes de COBOL a streams de Kafka).
  2. Los patrones de comunicación a menudo sobreviven a los sistemas mismos.
  3. Cuando te unís a un equipo, preguntá: "¿Qué pasa si el Sistema A estornuda?" La respuesta revela su filosofía de comunicación entre sistemas.

Ahora que estás armado con este conocimiento, nunca vas a ver un error de "Connection timed out" de la misma manera.