Pub/Sub: Job Batch (Procesamiento por Lotes)
Autor: Eduardo Martínez Agrelo
Aunque Pub/Sub es conocido por su baja latencia en tiempo real, muchas veces es más eficiente y económico procesar datos en grupos. En este laboratorio, aprenderemos a crear un Job Batch: un proceso que despierta, recolecta todos los mensajes acumulados y los persiste en un sistema de almacenamiento masivo.
¿Qué es el Pull Síncrono?
A diferencia del streaming constante (donde el servidor nos "empuja" los datos), el Pull Síncrono permite que nuestra aplicación tome la iniciativa. Le pedimos a Pub/Sub una cantidad exacta de mensajes acumulados:
- Eficiencia: Podemos configurar un proceso cron (programado) que se ejecute una vez al día para vaciar la cola.
- Control de Carga: Evitamos saturar nuestros sistemas de destino procesando los datos en tamaños de lote controlados.
Persistencia en Cloud Storage (GCS)
Cloud Storage es el destino ideal para backups y data lakes. En este ejercicio, utilizaremos Terraform para crear un Bucket donde guardaremos nuestros lotes de mensajes. Aprenderemos a transformar el flujo de eventos en archivos JSON estructurados, facilitando su posterior análisis en herramientas de Big Data.
La importancia del ACK en Bloque
En un entorno Batch, la confirmación de los mensajes cambia ligeramente. En lugar de confirmar cada mensaje
individualmente, recolectamos sus ack_ids y realizamos una confirmación múltiple al final de la
operación:
- Atomicidad: Si el guardado en el Bucket falla, no confirmamos los mensajes, asegurando que sigan disponibles para un reintento posterior.
- Reducción de llamadas: Optimizamos la comunicación con la API de Google Cloud al reducir el número de peticiones de red.
Implementación práctica
Desarrollaremos un script en Python que utiliza storage.Client() y
pubsub_v1.SubscriberClient(). El flujo será: solicitar 10 mensajes, agruparlos en una lista,
subirlos como un único objeto a GCS y, finalmente, realizar el ACK masivo. Este patrón es la base de los
procesos de auditoría y almacenamiento histórico en la nube.
Conclusión: Versatilidad en el manejo de datos
Has aprendido que Pub/Sub no solo sirve para la comunicación instantánea, sino que es un búfer de datos excelente para procesos Batch. Ahora que dominas el almacenamiento en reposo, es hora de volver a la acción con datos que nunca se detienen: el Streaming de telemetría IoT.