Google Cloud para profesionales de AWS: servicios de aplicaciones

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 servicio

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:

Función 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 No
Colas de demora 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 bajo 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 la convergencia, en la que múltiples orígenes 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, 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 manejar 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.

Tiempo de espera de visibilidad de Amazon SQS

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.

Plazo de reconocimiento de Pub/Sub

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 de 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 estilo FIFO ni de orden de mensajes, es posible lograr esta funcionalidad a nivel de la 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.

¿Qué sigue?

Consulta los demás artículos de Google Cloud para profesionales de AWS:

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.