Pub/Sub: Filtro de Mensajes (Eficiencia y Ahorro)
Autor: Eduardo Martínez Agrelo
En arquitecturas de gran escala, procesar cada mensaje que fluye por el sistema puede resultar ineficiente y costoso. En este laboratorio, aprenderemos a utilizar el Filtrado de Mensajes de Pub/Sub para que nuestras suscripciones actúen como "porteros", dejando pasar únicamente los datos que cumplen con criterios específicos.
El poder de los Atributos
Un mensaje en Pub/Sub no es solo un cuerpo de datos (payload). También puede transportar Atributos, que son pares clave-valor de metadatos. Estos atributos permiten clasificar la información sin necesidad de abrir y analizar el contenido del mensaje:
- Metadatos: Información como el tipo de evento, la severidad del log o la región de origen.
- Desacoplamiento Lógico: La suscripción decide qué recibir basándose en estos metadatos, no en el contenido binario.
Filtrado en el Lado del Servidor
A diferencia del filtrado manual en nuestro código Python, el filtrado de Pub/Sub ocurre en la infraestructura de Google Cloud. Esto significa que si un mensaje no cumple el filtro, nunca llega a nuestro suscriptor, lo que se traduce en:
- Ahorro de Costes: No pagamos por el tráfico de red ni por la computación de mensajes irrelevantes.
- Simplicidad de Código: Nuestro suscriptor solo recibe datos "limpios" y listos para procesar.
Implementación con Terraform
Declarar filtros es extremadamente sencillo gracias a la sintaxis declarativa de Terraform. Utilizaremos el
argumento filter para definir reglas basadas en atributos:
filter = "attributes.severity = \"ERROR\""
Esta instrucción asegura que la suscripción ignore todos los mensajes informativos o de advertencia, centrando los recursos del sistema exclusivamente en la gestión de incidentes críticos.
Conclusión: Arquitecturas más inteligentes
Has aprendido que enviar datos no es lo mismo que procesarlos. Al dominar el filtrado, has dado un paso hacia el rol de arquitecto, optimizando recursos y costes. Pero, ¿qué sucede cuando un mensaje que sí queremos procesar genera un error? En el próximo laboratorio descubriremos cómo gestionar fallos mediante las Dead Letter Queues.