MQTT gestionado en la nube

Broker MQTT serverless: cómo funciona y cuándo usarlo

Un broker MQTT serverless te da un endpoint listo en un clúster compartido y multi-tenant, sin servidores que gestionar. Descubre cómo funciona, sus límites y cuándo es la opción adecuada.

Ilustración de un broker MQTT serverless con muchos grupos pequeños de dispositivos conectados a un clúster compartido en la nube con carriles aislados por cliente
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Un broker MQTT serverless te da un endpoint MQTT funcional, credenciales y un panel sin aprovisionar ni un solo servidor, porque tu broker vive en un clúster compartido y multi-tenant operado por el proveedor. En esta guía aprenderás cómo funciona el modelo serverless por dentro, qué límites de uso importan de verdad, qué cargas de trabajo encajan y cómo crear y probar paso a paso un broker serverless gratuito en ConnectMQ.

Qué significa "serverless" en un broker MQTT

Evidentemente sigue habiendo servidores. "Serverless" describe quién es su propietario y cómo los consumes. Con un broker autoalojado, como Mosquitto en una máquina virtual, eliges el tamaño de la máquina, instalas paquetes, abres puertos en el firewall, renuevas certificados TLS y parcheas el sistema operativo. Con un broker MQTT serverless, todo eso es trabajo del proveedor. Recibes un nombre de host, puertos, un usuario, una contraseña y un client ID, y empiezas a publicar.

La idea central es la multi-tenencia. Un clúster de broker bien dimensionado atiende a muchos clientes a la vez. Cada cliente obtiene un "broker" lógicamente aislado en ese clúster: sus propias credenciales, su propio espacio de topics y sus propias cuotas. Como la capacidad se comparte, el proveedor puede ofrecer un nivel pequeño gratis o muy barato, y nunca pagas por una máquina virtual inactiva al 2 % de CPU.

Si necesitas repasar el papel del broker en sí, consulta qué hace un broker MQTT antes de continuar.

Cómo funciona el aislamiento entre clientes

Un clúster compartido solo es seguro si los clientes no pueden verse ni molestarse entre sí. Un broker serverless bien diseñado aplica el aislamiento en varias capas:

  • Autenticación. Cada conexión presenta credenciales emitidas para un único cliente. Aquí, los client IDs están vinculados a las credenciales emitidas, de modo que otro cliente no puede suplantar a tus dispositivos.
  • Espacios de nombres de topics. Tus topics están acotados a tu broker, así que una suscripción a # solo devuelve tu propio tráfico.
  • Cuotas. El número de conexiones, el tamaño de mensaje y el nivel de QoS se aplican por plan, de modo que un cliente no puede agotar los recursos compartidos.
  • Protección contra abusos. La protección contra inundación y el bloqueo de IP tras inicios de sesión fallidos repetidos evitan que un cliente que se comporta mal degrade el clúster para todos.

Cuando se alcanza una cuota, un cliente MQTT 5 recibe un código de motivo significativo (por ejemplo 0x97, quota exceeded) en lugar de un descarte silencioso, lo que hace que los límites se puedan depurar en vez de resultar un misterio.

Serverless vs. dedicado vs. autoalojado

El nivel serverless es una de las varias formas de consumir un broker MQTT gestionado. La tabla compara las opciones habituales.

Aspecto Autoalojado Serverless (compartido) Dedicado (aislado)
Quién opera los servidores Tú Proveedor Proveedor
Tiempo hasta el primer mensaje De horas a días Minutos Paso de aprovisionamiento
Capacidad La que dimensiones Compartida, cuotas por plan Reservada para ti
Vecinos ruidosos Ninguno Mitigados por cuotas Ninguno
Coste en reposo Coste completo de la VM Gratis o bajo Capacidad reservada
Ideal para Control total, sitios aislados de la red Prototipos, flotas pequeñas, educación, productos en fase inicial Flotas en producción con carga estable

El compromiso honesto: serverless renuncia a la capacidad reservada y a parte de la configurabilidad a cambio de cero operaciones y un coste casi nulo a pequeña escala. Cuando necesitas aislamiento garantizado y margen predecible, el siguiente paso es un broker MQTT dedicado.

Límites que importan en un broker MQTT serverless

Todo nivel compartido publica sus cuotas. Léelas como restricciones de diseño, no como letra pequeña. Los planes serverless de ConnectMQ son así:

Límite Serverless (Free) Serverless (Paid)
Conexiones simultáneas Hasta 25 Hasta 1.000
QoS máximo 1 2
Tamaño máximo de mensaje 256 KB 1 MB
Suscripciones compartidas No Sí
Protocolos MQTT 3.1.1 y 5.0 MQTT 3.1.1 y 5.0

Qué significa esto en la práctica:

  1. Las conexiones son el recurso escaso. Cada dispositivo, cada pestaña de panel y cada worker de backend mantiene una conexión. Veinte sensores más una instancia de Node-RED más dos paneles en el navegador ya suman 23 conexiones. Cuéntalas antes de desplegar.
  2. QoS 1 cubre la mayor parte de la telemetría. La entrega al menos una vez con consumidores idempotentes resuelve casi cualquier carga de sensores. Si de verdad necesitas semántica de exactamente una vez, lee los niveles de QoS de MQTT explicados y considera el nivel de pago.
  3. El tamaño de mensaje rara vez afecta a la telemetría. Una lectura en JSON ocupa unos cientos de bytes. Las imágenes y los fragmentos de firmware son donde importan los 256 KB; publica una URL a un almacenamiento de objetos en lugar del archivo.
  4. Las suscripciones compartidas permiten consumidores horizontales. Si piensas ejecutar varios workers de backend que se repartan un mismo flujo de topics, necesitas $share/group/topic, disponible en el nivel serverless de pago.

Cargas de trabajo que encajan con serverless

Un broker MQTT serverless encaja muy bien con:

  • Prototipos y pruebas de concepto. Puedes pasar de la idea a un circuito funcional de dispositivo a panel en una tarde.
  • Flotas pequeñas en producción. Un edificio con una docena de sensores, un controlador de invernadero o un pequeño despliegue en retail caben holgadamente dentro de las cuotas de conexión.
  • Aulas y hackathons. Cada equipo obtiene un broker aislado sin que nadie tenga que operar infraestructura.
  • Productos en fase inicial. Las startups pueden validar el mercado antes de comprometerse con capacidad reservada. Nuestra guía para elegir un broker MQTT para startups cubre el camino de crecimiento.
  • Entornos de desarrollo y staging. Incluso los equipos con un broker dedicado en producción suelen mantener un broker serverless para desarrollo.

Encaja peor cuando tienes miles de dispositivos siempre conectados, presupuestos de latencia estrictos con un alto rendimiento sostenido o una política que prohíbe la infraestructura compartida.

Paso a paso: crea un broker Serverless gratuito en ConnectMQ

Paso 1: regístrate y crea el broker

Ve a ConnectMQ, abre el portal, elige el plan Serverless (Free) y crea un broker. El portal genera un usuario, una contraseña y un client ID. Cópialos en un lugar seguro; trata la contraseña como cualquier otro secreto.

Paso 2: prueba con el cliente del navegador

El portal incluye un cliente MQTT en el navegador y un explorador de topics en vivo. Suscríbete a test/#, publica en test/hello y comprueba que aparece el mensaje. Así verificas las credenciales antes de que intervenga ningún código de dispositivo.

Paso 3: conéctate desde la línea de comandos

Con los clientes de Mosquitto instalados, conéctate por TLS en el puerto 8883:

mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID -t 'sensors/#' -v

El broker usa un certificado de Let's Encrypt, así que basta con el paquete de CA del sistema; no hace falta ningún archivo de CA personalizado.

Paso 4: publica desde Python

Este script usa paho-mqtt 2.x con la API de callbacks versión 2 y publica una lectura cada cinco segundos.

import json
import random
import ssl
import time

import paho.mqtt.client as mqtt

HOST = "broker.connectmq.com"
PORT = 8883
USERNAME = "YOUR_USERNAME"
PASSWORD = "YOUR_PASSWORD"
CLIENT_ID = "YOUR_CLIENT_ID"


def on_connect(client, userdata, flags, reason_code, properties):
    print(f"Connected: {reason_code}")


def on_disconnect(client, userdata, flags, reason_code, properties):
    print(f"Disconnected: {reason_code}")


client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=CLIENT_ID,
    protocol=mqtt.MQTTv5,
)
client.username_pw_set(USERNAME, PASSWORD)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)
client.on_connect = on_connect
client.on_disconnect = on_disconnect

client.connect(HOST, PORT, keepalive=60)
client.loop_start()

try:
    while True:
        reading = {"temp_c": round(random.uniform(20, 25), 2), "ts": int(time.time())}
        info = client.publish("sensors/room1/temperature", json.dumps(reading), qos=1)
        info.wait_for_publish()
        print("Published", reading)
        time.sleep(5)
except KeyboardInterrupt:
    pass
finally:
    client.loop_stop()
    client.disconnect()

Si solo quieres experimentar sin registrarte, usa el servidor MQTT público gratuito en el puerto 1883, quita las credenciales, usa cualquier client ID único y no vacío y un prefijo de topic único como connectmq/demo/a7f3k2/.... Recuerda que el área pública puede leerla cualquiera, así que úsalo solo para pruebas y prototipos y nunca envíes datos de producción allí.

Paso 5: observa el uso en el panel

El panel del portal muestra la actividad de tu broker, y la vista de dispositivos agrupa los clientes por niveles ISA-95 cuando tus topics siguen esa estructura. También puedes definir reglas de alerta por umbral (por ejemplo, temperatura por encima de 30) y revisar las alertas disparadas en el registro de alertas.

Consejos de diseño para no salirte de las cuotas

  • Reutiliza conexiones. Un gateway que agrega diez sensores BLE en una sola conexión MQTT ocupa una plaza, no diez.
  • Cierra los paneles inactivos. Las pestañas del navegador sobre WebSocket cuentan como conexiones mientras están abiertas.
  • Usa retained messages para el estado. Publicar el último valor conocido como retenido permite que los nuevos suscriptores lean el estado actual al instante sin sondear.
  • Configura un keep alive razonable. Lo típico son de 30 a 60 segundos. Los intervalos muy cortos desperdician tráfico; los muy largos retrasan la detección de desconexiones.
  • Gestiona los códigos de motivo. Registra los códigos de motivo de CONNACK y DISCONNECT para que un rechazo por cuota aparezca claramente en tus logs.
  • Usa client IDs únicos. Dos dispositivos que comparten un mismo ID se expulsarán mutuamente sin parar; es la causa más común de "mi cliente no deja de reconectarse".

Más allá de serverless

Quedarse pequeño para el nivel gratuito es un buen problema. El camino suele ser Serverless (Free) para desarrollo, Serverless (Paid) para un producto inicial con hasta 1.000 conexiones y suscripciones compartidas, y después Dedicated cuando quieres un clúster aislado. Como todo habla MQTT 3.1.1 y 5.0 estándar, cambiar de nivel significa actualizar el nombre de host y las credenciales, no reescribir la lógica del firmware. Para una visión más amplia de las opciones de hosting, lee nuestra guía de broker MQTT en la nube, y consulta cómo elegir un broker MQTT para IoT para tener una checklist de evaluación.

Pon en marcha tu broker serverless en ConnectMQ

Puedes crear un broker Serverless gratuito en app.connectmq.com sin tarjeta de crédito. Elige el plan Serverless (Free), crea un broker, copia las credenciales generadas y ejecuta el script de Python anterior. En minutos tendrás dispositivos publicando por TLS, además de un explorador de topics, un panel y reglas de alerta para vigilarlos, mientras el proveedor se encarga del clúster.

Preguntas frecuentes

¿Es un broker MQTT serverless lo bastante seguro para producción?

Sí, para muchas cargas de trabajo. El tráfico se cifra con TLS, las credenciales son por cliente y los client IDs están vinculados a ellas; elige un despliegue dedicado o BYOC si tu política prohíbe la infraestructura compartida.

¿Qué ocurre si supero el límite de conexiones?

El broker rechaza la conexión adicional. Los clientes MQTT 5 reciben un código de motivo como quota exceeded, así que puedes registrarlo y reaccionar en lugar de adivinar.

¿Puedo usar funciones de MQTT 5 en el nivel gratuito?

Sí. Se admiten tanto MQTT 3.1.1 como 5.0, incluidos retained messages, caducidad de sesión, caducidad de mensajes y topic aliases; el QoS está limitado a 1 y las suscripciones compartidas requieren el plan serverless de pago.

¿Tengo que cambiar el código de mis dispositivos para cambiar de plan?

Normalmente no. Subir de plan cambia las cuotas, y pasar a un broker dedicado suele implicar actualizar el nombre de host y las credenciales mientras la lógica MQTT sigue igual.

¿El broker público de pruebas es lo mismo que un broker serverless?

No. El broker público en broker.connectmq.com acepta conexiones anónimas y todo puede leerlo cualquiera, mientras que un broker serverless te da credenciales privadas y autenticadas y tus propias cuotas.

Artículos relacionados

Broker MQTT BYOC: el modelo Bring Your Own Cloud explicado

Un broker MQTT BYOC se ejecuta en tu cuenta cloud, pero lo opera un proveedor. Descubre cómo funciona el modelo, cómo se reparten las responsabilidades y cómo preparar tu cuenta.

9 min de lectura

Alternativa a Google Cloud IoT Core: opciones y migración tras su cierre

Google retiró Cloud IoT Core en agosto de 2023. Esta guía compara las alternativas realistas, traduce los conceptos de IoT Core a MQTT estándar y muestra cómo mover los dispositivos a un broker MQTT gestionado sin dejar de enviar datos a Google Cloud.

9 min de lectura

Mensajes MQTT por segundo: cómo estimar y medir el rendimiento

Planificar el rendimiento de MQTT se reduce a unas pocas fórmulas y una medición honesta. Aprende a estimar los mensajes entrantes y salientes por segundo, a tener en cuenta los picos y a trasladar el resultado a un plan de broker.

8 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.