Las tres opciones dominantes son REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) y colas de mensajes (Kafka/RabbitMQ). REST y gRPC son síncronos; las colas son asincrónicas.
Las tres opciones dominantes son REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) y colas de mensajes (Kafka/RabbitMQ). REST y gRPC son síncronos; las colas son asincrónicas.
| Aspecto | REST | gRPC | Message Queue |
|---|
| Estilo | Síncrono | Síncrono | Asincrónico |
| Carga útil | JSON (texto) | Protobuf (binario) | Cualquiera (a menudo binario) |
| Rendimiento | Bueno | Alto | Alto rendimiento |
| Contrato | OpenAPI (flexible) | .proto (estricto) | Schema/event |
| Transmisión | Limitada | Nativa (bidireccional) | Pub/sub |
| Mejor para | API públicas, navegadores | Rutas internas críticas | Desacoplamiento, eventos |
service OrderService {
// strongly-typed RPC, generated client + server stubs
rpc GetOrder (OrderId) returns (Order);
}
message OrderId { string id = 1; }
message Order { string id = 1; double total = 2; }
Order Service ─publish→ [ "OrderPlaced" topic ] ─▶ Inventory
└────▶ Notifications
(producer doesn't know or wait for consumers)
Usar gRPC/REST síncrono en todas partes recrea un acoplamiento estrecho; usar asincrónico para una lectura inmediata del usuario agrega latencia innecesaria.
La elección de transporte establece el acoplamiento y el techo de rendimiento para cada interacción, por lo que elegir por caso de uso — no globalmente — es lo que mantiene el sistema rápido y resiliente.
Los sistemas maduros deliberadamente mezclan los tres: gRPC en rutas internas críticas, REST en el perímetro y colas para flujos de trabajo.