Actualizado el 20 de marzo de 2017
Compara los servicios que Amazon y Google proporcionan para facilitar la comunicación entre varias partes de tu aplicación. Este artículo se enfoca en los servicios de mensajería disponibles en cada plataforma.
Mensajes
Comparación de los modelos de servicios
Para la cola de mensajes, Amazon proporciona Amazon Simple Queue Service (SQS) y Google proporciona Pub/Sub. Las características de Amazon SQS se corresponden con las de Pub/Sub de la siguiente manera:
Característica | Amazon SQS | Google Pub/Sub |
---|---|---|
Fuente de datos | Cola | Tema |
Destino de datos | Cola | Suscriptor |
Localidad de la implementación | Regional | Global |
Tiempo de retención de mensajes | Hasta 14 días | Hasta 7 días |
Número máximo de mensajes en tránsito por cola | 120,000 para estándar y 20,000 para FIFO | Ilimitado para extracciones (sujeto a la cuota) y 1000 para envíos |
Tamaño máximo de la carga útil | 256 KB | 10 MB |
Fan-out | Con Amazon SNS | Compatibilidad nativa |
Cola de mensajes no entregados | Sí | Sí |
Colas de demora | Sí | No |
Facturación | Paga el dueño de la cola | Pagan los suscriptores |
Amazon Simple Queue Service (SQS) y Amazon Simple Notification Service (SNS)
En Amazon Simple Queue Service (SQS), las operaciones se enfocan en la cola de mensajes que creas. Envías mensajes a la cola y las aplicaciones cliente los extraen de la cola. Para implementar un sistema de distribución, en el que múltiples suscriptores puedan consumir un solo mensaje, puedes combinar Amazon SQS con Amazon Simple Notification Service (SNS), que entrega notificaciones push a una variedad de dispositivos y extremos. Una cola de Amazon SQS se suscribe a un tema de Amazon SNS y, cuando se publica un mensaje al tema, Amazon SNS envía un mensaje de Amazon SQS a la cola suscrita.
Amazon SQS ofrece dos tipos de colas de mensajes: estándar y FIFO. Las colas estándar ofrecen una alta capacidad de procesamiento, pero no garantizan un orden estricto de mensajes ni que estos se entreguen exactamente una vez. Por el contrario, las colas FIFO sí ofrecen estas garantías, pero tienen una capacidad de procesamiento más baja que las colas estándar.
Pub/Sub
Pub/Sub combina la puesta en cola de mensajes, la entrega de mensajes basados en envíos y la entrega de mensajes de transmisión de alto volumen en un solo servicio global. Usa un modelo de publicación y suscripción: una aplicación de publicador crea y envía mensajes a un tema, y las aplicaciones de suscriptor crean una suscripción para recibir mensajes del tema. Como un servicio basado en publicación y suscripción, Pub/Sub admite de forma nativa fan-in, en la que varias fuentes de mensajes pueden orientarse a un solo tema, y fan-out.
A diferencia de Amazon SQS, que admite la entrega de mensajes basada en extracciones, Pub/Sub admite la entrega de mensajes basada en envíos y en extracciones. En la entrega basada en envíos, Pub/Sub inicia solicitudes a tu aplicación de suscriptor para entregar mensajes. En la entrega basada en extracciones, tu aplicación de suscriptor inicia solicitudes al servidor de Pub/Sub para recuperar mensajes, de manera similar a Amazon SQS.
Al igual que las colas estándar de Amazon SQS, Pub/Sub no garantiza el orden de los mensajes. Sin embargo, si necesitas un orden estricto de los mensajes, puedes mitigar esta limitación de varias maneras. Como con las colas estándar de Amazon SQS, Pub/Sub tampoco garantiza que los mensajes se entreguen exactamente una vez. Para controlar los mensajes duplicados, tu código debe tratar los mensajes de manera idempotente.
A diferencia de Amazon SNS, Pub/Sub está diseñado para integraciones de sistemas y aplicaciones en lugar de comunicación directa con interfaces de usuario final, como teléfonos celulares o páginas web. Para este tipo de comunicación cliente-servidor, puedes usar Firebase Cloud Messaging, la solución de Cloud para enviar notificaciones push a varios dispositivos móviles.
Ciclo de vida de los mensajes
Amazon SQS y Pub/Sub requieren que reconozcas los mensajes para quitarlos de una cola o suscripción.
Amazon SQS
Amazon SQS cuenta con un tiempo de espera de visibilidad. Cuando un proceso adquiere un mensaje a fin de procesarlo, el mensaje se vuelve invisible para otros procesos que actúan sobre la cola. En el diagrama a continuación, se ilustra cómo funciona el tiempo de espera de visibilidad cuando se procesan mensajes.
Figura 1: Tiempo de espera de visibilidad de Amazon SQS
Cuando se adquiere el mensaje, el tiempo de espera de visibilidad comienza una cuenta regresiva. Durante esta cuenta regresiva, la aplicación de consumidor procesa el mensaje. Si el procesamiento es exitoso y se realiza dentro del tiempo de espera de visibilidad, la aplicación de consumidor puede hacer una llamada para borrar el mensaje. Si la aplicación no realiza esta llamada antes de que expire el tiempo de espera de visibilidad, el mensaje vuelve a ser visible para otros procesos.
Pub/Sub
Del mismo modo, Pub/Sub tiene un plazo de reconocimiento. De forma predeterminada, este plazo es de 10 segundos, pero puede extenderse hasta 10 minutos. Para una suscripción de extracción, los suscriptores también pueden modificar el plazo por mensaje sobre la marcha a fin de permitir un tiempo de procesamiento más corto o más largo de un mensaje determinado.
Figura 2: Plazo de reconocimiento de Pub/Sub
Garantías de entrega de mensajes
Amazon SQS tiene dos tipos de colas disponibles: colas estándar y colas primero en entrar, primero en salir (FIFO). Las colas estándar de Amazon SQS y Pub/Sub garantizan que cada mensaje se entregará al menos una vez. De manera similar, los dos servicios tienen limitaciones comparables: cada uno puede tener una duplicación ocasional de mensajes, y ninguno de los dos garantiza el orden de entrega de los mensajes.
Las colas FIFO de Amazon SQS mitigan ambos problemas porque admiten que los mensajes se entreguen en orden y exactamente una vez Las colas FIFO tienen un límite de 300 transacciones por segundo.
Aunque Pub/Sub no ofrece garantías de anulación de duplicación de estilo FIFO ni del orden de mensajes, es posible lograr esta funcionalidad a nivel de aplicación. Para obtener orientación, consulta Orden de mensajes.
Costos
Amazon SQS y Amazon SNS
Los precios de Amazon SQS se basan en la transferencia de datos fuera de Amazon SQS y el número de solicitudes. Todas las llamadas a la API de Amazon SQS cuentan como solicitudes. Una sola solicitud puede tener de 1 a 10 mensajes, con una carga útil total máxima de 256 KB. Cada fragmento de 64 KB de la carga útil se factura como una sola solicitud.
Los precios de Amazon SNS se basan en la cantidad de notificaciones que publicas, la cantidad de notificaciones que entregas y cualquier llamada a la API adicional para administrar temas y suscripciones. Los precios de entrega varían según el tipo de extremo.
Pub/Sub
Los precios de Pub/Sub se calculan según la cantidad de volumen de datos que se usa para la entrega de mensajes. El volumen se calcula en función de los datos de mensaje y atributo para las operaciones de publicación, extracción y envío. Para obtener más información, consulta Precios de Pub/Sub.
Próximos pasos
Consulta los demás artículos de Google Cloud para profesionales de AWS:
- Descripción general
- Compute
- Herramientas de redes
- Storage
- Herramientas de implementación
- Macrodatos
- Administración
- Dipositivos móviles
Para obtener información sobre cómo transferir datos entre Google Cloud y AWS mediante sus respectivos servicios de mensajería, consulta Conecta Google Cloud Pub/Sub a temas de AWS SNS a través de Cloud Functions.