Pub/Sub: Hello Cloud Messaging (El Inicio de la Mensajería)
Autor: Eduardo Martínez Agrelo
Bienvenidos al punto de partida de las arquitecturas orientadas a eventos. Si estás acostumbrado a que los sistemas se hablen de forma directa (síncrona), Google Cloud Pub/Sub cambiará tu forma de diseñar software. En este primer laboratorio, romperemos las dependencias directas entre servicios mediante el desacoplamiento.
¿Qué es el modelo Publicador-Suscriptor?
En Pub/Sub, no enviamos datos directamente a un servidor. Utilizamos una abstracción de mensajería masiva distribuida:
- Topic (Tema): Es el canal o "tablón de anuncios" donde los emisores dejan sus mensajes sin saber quién los leerá.
- Subscription (Suscripción): Es el mecanismo que permite a los interesados recibir los mensajes que se publican en un tema específico.
Infraestructura como Código con Terraform
Para garantizar que nuestro entorno sea profesional y replicable, no utilizaremos la consola web de GCP. Definiremos nuestra infraestructura mediante archivos de configuración:
resource "google_pubsub_topic" "lab1" { ... }
Esta metodología nos permite versionar nuestra infraestructura, permitiendo que cualquier miembro del equipo despliegue exactamente el mismo entorno con un simple comando.
El Ciclo de Vida del Mensaje
Es fundamental comprender que Pub/Sub garantiza la entrega del mensaje, pero requiere una confirmación de nuestra parte:
- Push/Pull: El mensaje viaja desde el publicador hasta la suscripción donde queda almacenado.
- Acknowledge (ACK): Nuestro suscriptor debe confirmar que ha procesado el mensaje correctamente. Si no lo hace, Pub/Sub volverá a enviarlo para evitar la pérdida de datos.
Implementación práctica
En este laboratorio, configuraremos un flujo básico de "Hola Mundo". Crearemos un publisher.py que
enviará cadenas de texto codificadas en bytes y un subscriber.py que escuchará de forma asíncrona.
Utilizaremos el SDK oficial de Google Cloud para Python, aprendiendo a gestionar las credenciales y las rutas de
los recursos creados previamente con Terraform.
Conclusión: Tu primer sistema desacoplado
Has dado el paso más importante: entender que los sistemas escalables no deben depender los unos de los otros. Ya tienes una tubería de comunicación funcional y segura en la nube. El siguiente nivel será aprovechar este desacoplamiento para multiplicar el impacto de un solo mensaje mediante el patrón Fan-Out.