MÓDULO 3 · ARQUITECTURA DE SISTEMAS CONVERSACIONALES · LECCIÓN 4.3 · 40 MIN

Estrategias de Comunicación

Nivel intermedio — comparar REST, GraphQL, gRPC y mensajería con criterios objetivos, y decidir cuándo comunicación síncrona o asíncrona.

Idea central "Usamos REST porque todos usan REST" ignora que cada protocolo optimiza para escenarios distintos. El protocolo de comunicación afecta rendimiento, complejidad y evolución del sistema — se paga en cada request durante toda la vida del sistema.

El problema

Situación típica: un equipo implementa GraphQL porque "evita over-fetching". Seis meses después: el 90% de las queries usan los mismos campos, nadie aprovecha la flexibilidad, pero todos sufren la complejidad de un servidor GraphQL con resolvers, DataLoaders y schemas. // resolver un problema que no tenías, a cambio de uno nuevo

4 protocolos

REST

Recursos sobre HTTP. Universal, cacheable, sin dependencias de cliente especial. Sufre over/under-fetching y el problema N+1.

Usa REST si...Evítalo si...
API pública para tercerosComunicación interna de alto rendimiento
CRUD simple sobre recursosStreaming de datos

GraphQL

El cliente pide exactamente los datos que necesita, en una sola request. Schema tipado, pero complejidad en el servidor (resolvers, N+1, DataLoaders).

Usa GraphQL si...Evítalo si...
Múltiples clientes con necesidades distintasAPI simple con recursos fijos
Over-fetching es un problema real medidoEquipo sin experiencia previa

gRPC

Framework RPC de Google, Protocol Buffers binarios. Muy eficiente, tipado estricto, streaming bidireccional nativo — pero no funciona en browsers directamente y es difícil de debuggear.

Usa gRPC si...Evítalo si...
Comunicación interna entre serviciosAPI pública para terceros
Alto throughput, baja latencia, streamingClientes son browsers directos

Mensajería (colas/topics)

Comunicación asíncrona vía broker (RabbitMQ, Kafka, SQS/SNS). Patrones: Point-to-Point (un consumidor), Pub/Sub (múltiples consumidores), Request/Reply.

Úsala si...Evítala si...
Operaciones pueden ser eventualesNecesitas respuesta inmediata
Picos de carga impredeciblesSistema simple sin fallos frecuentes

Matriz comparativa

CriterioRESTGraphQLgRPCMensajería
LatenciaMediaMediaBajaAlta (async)
ThroughputMedioMedioAltoMuy alto
TipadoOpcionalObligatorioObligatorioOpcional
Browser supportNativoNativoVía proxyNo
StreamingSSE, WebSocketSubscriptionsNativoNativo
AcoplamientoTemporalTemporalTemporalNinguno
"Acoplamiento temporal" es la variable que importa

REST, GraphQL y gRPC comparten algo que la tabla oculta a simple vista: los tres son síncronos, así que el emisor espera respuesta — si el destino cae, el emisor lo nota de inmediato. Solo la mensajería rompe ese acoplamiento. Antes de elegir por latencia o tipado, pregúntate si tu sistema puede permitirse que un servicio caído tumbe al que lo llama.

Practica: e-commerce multi-componente

Sistema con: web app y mobile app (clientes), API Gateway, servicios de Orders, Catalog, Payments, Notifications, Inventory, integraciones con Stripe y SendGrid.

Diseña la estrategia de comunicación: qué protocolo usa cada conexión (cliente↔gateway, gateway↔servicios, servicio↔servicio, integraciones externas) y justifica cada elección con la matriz.