Laboratorio 8: Ingesta en Tiempo Real (Streaming con Pub/Sub)
Objetivos del Laboratorio
- Diseñar una canalización de datos en tiempo real sin servidor (serverless) y sin código intermedio para reducir la complejidad operativa.
- Establecer relaciones de confianza seguras entre servicios de Google Cloud mediante asignación de permisos IAM con Terraform.
- Configurar una suscripción de escritura directa (BigQuery Write Subscription) para procesar payloads JSON asíncronos de forma paralela.
- Simular flujos de eventos en vivo y verificar la disponibilidad inmediata de los registros en el almacenamiento analítico.
Herramientas y APIs Utilizadas
Pub/Sub API: Servicio global e independiente de mensajería asíncrona estructurado bajo el patrón de publicación y suscripción.BigQuery API: Motor encargado de abrir y mantener el canal de almacenamiento en streaming para persistir las entradas del tópico.gcloud CLI: Utilidad empleada para emular emisores locales enviando y publicando mensajes estructurados en formato JSON.
Estructura del Código Desarrollado
main.tf: Declaración de Terraform que asocia metadatos del proyecto, el datasetlab08_dataset, la tabla física destino, las políticas de IAM y la suscripción de Pub/Sub con el bloquebigquery_config.08_verify_streaming.sql: Consulta SQL estructurada para interrogar el buffer de entrada en tiempo real de la tabla nativa.
Paso a Paso del Despliegue
Fase 1: Diseño de la Tabla Destino
- Creación del esquema estructurado en la tabla de BigQuery asegurando que las columnas coincidan de manera unívoca con las claves que se enviarán en los payloads JSON.
- Configuración del tipo de dato
TIMESTAMPpara registrar adecuadamente la hora física de ocurrencia de los eventos de usuario.
Fase 2: Infraestructura y Permisos IAM
- Uso del bloque
data "google_project"en Terraform para recuperar el identificador numérico de nuestro proyecto en tiempo de ejecución. - Asignación de los roles de administrador de datos
roles/bigquery.dataEditory de metadatosroles/bigquery.metadataViewera la cuenta de servicio del agente interno de Pub/Sub. - Declaración de la suscripción
google_pubsub_subscriptionenlazando el bloquebigquery_configdirectamente hacia la tabla física de BigQuery. - Aplicación del despliegue mediante el comando de terminal
terraform applygarantizando el orden jerárquico de construcción de permisos y recursos.
Fase 3: Simulación e Ingesta Directa
- Publicación de un evento de tipo clic emulando la interacción de un usuario mediante el comando de CLI
gcloud pubsub topics publishcon un payload JSON estructurado. - Publicación de un segundo evento de tipo compra bajo el mismo mecanismo de envío directo.
- Ejecución de la consulta SQL de verificación directamente sobre la tabla nativa comprobando que el buffer de streaming almacena e integra los datos en milisegundos sin requerir pipelines de computación adicionales.