Um broker MQTT serverless entrega um endpoint MQTT funcionando, credenciais e um dashboard sem que você provisione um único servidor, porque o seu broker vive em um cluster compartilhado e multi-tenant operado pelo provedor. Neste guia você vai entender como o modelo serverless funciona por baixo dos panos, quais limites de uso realmente importam, a que cargas de trabalho ele se adapta e como criar e testar, passo a passo, um broker serverless gratuito na ConnectMQ.
O Que "Serverless" Significa para um Broker MQTT
Obviamente ainda existem servidores envolvidos. "Serverless" descreve quem é dono deles e como você os consome. Com um broker auto-hospedado, como o Mosquitto em uma máquina virtual, você escolhe o tamanho da máquina, instala pacotes, abre portas no firewall, renova certificados TLS e aplica patches no sistema operacional. Com um broker MQTT serverless, tudo isso é tarefa do provedor. Você recebe um hostname, portas, um username, uma senha e um client ID, e começa a publicar.
A ideia central é o multi-tenancy. Um cluster de broker bem dimensionado atende muitos clientes ao mesmo tempo. Cada cliente recebe um "broker" logicamente isolado nesse cluster: suas próprias credenciais, seu próprio espaço de topics e suas próprias cotas. Como a capacidade é compartilhada, o provedor pode oferecer um nível pequeno de graça ou por um valor muito baixo, e você nunca paga por uma máquina virtual ociosa com 2% de CPU.
Se precisar relembrar o papel do broker em si, veja o que um broker MQTT faz antes de continuar.
Como Funciona o Isolamento entre Tenants
Um cluster compartilhado só é seguro se os tenants não puderem ver nem atrapalhar uns aos outros. Um broker serverless bem projetado aplica o isolamento em várias camadas:
- Autenticação. Toda conexão apresenta credenciais emitidas para um único tenant. Aqui, os client IDs ficam vinculados às credenciais emitidas, então outro tenant não consegue se passar pelos seus dispositivos.
- Namespacing de topics. Seus topics ficam restritos ao seu broker, então uma assinatura em
#só retorna o seu próprio tráfego. - Cotas. Número de conexões, tamanho de mensagem e nível de QoS são aplicados por plano, para que um tenant não esgote os recursos compartilhados.
- Proteção contra abuso. Proteção contra flood e bloqueio de IP após repetidas falhas de login impedem que um cliente mal-comportado degrade o cluster para todos.
Quando uma cota é atingida, um cliente MQTT 5 recebe um reason code significativo (por exemplo 0x97, quota exceeded) em vez de um descarte silencioso, o que torna os limites depuráveis em vez de misteriosos.
Serverless vs Dedicated vs Auto-hospedado
O nível serverless é uma das várias formas de consumir um broker MQTT gerenciado. A tabela compara as opções mais comuns.
| Aspecto | Auto-hospedado | Serverless (compartilhado) | Dedicated (isolado) |
|---|---|---|---|
| Quem opera os servidores | Você | Provedor | Provedor |
| Tempo até a primeira mensagem | De horas a dias | Minutos | Etapa de provisionamento |
| Capacidade | O que você dimensionar | Compartilhada, cotas por plano | Reservada para você |
| Vizinhos barulhentos | Nenhum | Mitigados por cotas | Nenhum |
| Custo ocioso | Custo integral da VM | Gratuito ou baixo | Capacidade reservada |
| Melhor para | Controle total, sites isolados da internet | Protótipos, frotas pequenas, educação, produtos iniciais | Frotas em produção com carga constante |
O trade-off honesto: o serverless abre mão de capacidade reservada e de parte da configurabilidade em troca de zero operação e custo quase zero em pequena escala. Quando você precisa de isolamento garantido e folga previsível, um broker MQTT dedicado é o próximo passo.
Limites Que Importam em um Broker MQTT Serverless
Todo nível compartilhado publica cotas. Leia-as como restrições de design, não como letras miúdas. Os planos serverless da ConnectMQ são assim:
| Limite | Serverless (Free) | Serverless (Paid) |
|---|---|---|
| Conexões simultâneas | Até 25 | Até 1.000 |
| QoS máximo | 1 | 2 |
| Tamanho máximo da mensagem | 256 KB | 1 MB |
| Shared subscriptions | Não | Sim |
| Protocolos | MQTT 3.1.1 e 5.0 | MQTT 3.1.1 e 5.0 |
O que isso significa na prática:
- Conexões são o recurso escasso. Cada dispositivo, cada aba de dashboard e cada worker de backend ocupa uma conexão. Vinte sensores mais uma instância de Node-RED mais dois dashboards no navegador já somam 23 conexões. Conte-as antes de implantar.
- QoS 1 cobre a maior parte da telemetria. Entrega pelo menos uma vez, com consumidores idempotentes, atende quase toda carga de sensores. Se você realmente precisa de semântica exatamente uma vez, leia níveis de QoS no MQTT explicados e considere o nível pago.
- O tamanho de mensagem raramente afeta a telemetria. Uma leitura em JSON tem algumas centenas de bytes. Imagens e blocos de firmware são onde 256 KB fazem diferença; publique uma URL para um object storage em vez do próprio arquivo.
- Shared subscriptions permitem consumidores horizontais. Se você planeja executar vários workers de backend que dividem um mesmo fluxo de topic, precisa de
$share/group/topic, disponível no nível serverless pago.
Cargas de Trabalho Que Combinam com Serverless
Um broker MQTT serverless é uma excelente escolha para:
- Protótipos e provas de conceito. Você vai da ideia a um ciclo funcional de dispositivo a dashboard em uma tarde.
- Frotas pequenas em produção. Um prédio com uma dúzia de sensores, um controlador de estufa em uma fazenda, uma pequena estação de saneamento ou uma implantação de varejo cabem com folga nas cotas de conexão.
- Salas de aula e hackathons. Cada equipe recebe um broker isolado sem que ninguém precise operar infraestrutura.
- Produtos em estágio inicial. Startups podem validar o mercado antes de se comprometer com capacidade reservada. Nosso guia para escolher um broker MQTT para startups cobre o caminho de crescimento.
- Ambientes de desenvolvimento e staging. Mesmo equipes com um broker dedicado em produção costumam manter um broker serverless para desenvolvimento.
Ele é uma escolha mais fraca quando você tem milhares de dispositivos sempre ativos, orçamentos de latência rígidos sob alta vazão contínua ou uma política que proíbe infraestrutura compartilhada.
Passo a Passo: Crie um Broker Serverless Gratuito na ConnectMQ
Passo 1: Cadastre-se e Crie o Broker
Acesse a ConnectMQ, abra o portal, escolha o plano Serverless (Free) e crie um broker. O portal gera um username, uma senha e um client ID. Copie-os para um lugar seguro; trate a senha como qualquer outro segredo.
Passo 2: Teste com o Cliente no Navegador
O portal inclui um cliente MQTT no navegador e um explorador de topics em tempo real. Assine test/#, publique em test/hello e confirme que a mensagem aparece. Isso valida as credenciais antes de envolver qualquer código de dispositivo.
Passo 3: Conecte pela Linha de Comando
Com os clientes do Mosquitto instalados, conecte via TLS na porta 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
O broker usa um certificado Let's Encrypt, então o pacote de CAs do sistema é suficiente; nenhum arquivo de CA personalizado é necessário.
Passo 4: Publique a Partir do Python
Este script usa paho-mqtt 2.x com a API de callbacks versão 2 e publica uma leitura a 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()
Se quiser apenas experimentar sem se cadastrar, troque pelo servidor MQTT público na porta 1883, remova as credenciais, use qualquer client ID único e não vazio e um prefixo de topic exclusivo, como connectmq/demo/a7f3k2/.... Lembre-se de que ele serve apenas para testes e de que a área pública pode ser lida por todos, então nunca envie dados reais para lá.
Passo 5: Acompanhe o Uso no Dashboard
O dashboard do portal mostra a atividade do seu broker, e a visão de dispositivos agrupa os clientes por níveis ISA-95 quando seus topics seguem essa estrutura. Você também pode definir regras de alerta por limite (por exemplo, temperatura acima de 30) e revisar os alertas disparados no log de alertas.
Dicas de Design para Ficar Dentro das Cotas
- Reutilize conexões. Um gateway que agrega dez sensores BLE em uma única conexão MQTT ocupa um slot, não dez.
- Feche dashboards ociosos. Abas do navegador via WebSocket contam como conexões enquanto estão abertas.
- Use retained messages para estado. Publicar o último valor conhecido como retido permite que novos assinantes leiam o estado atual na hora, sem polling.
- Defina um keep alive sensato. De 30 a 60 segundos é o típico. Intervalos muito curtos desperdiçam tráfego; muito longos atrasam a detecção de desconexões.
- Trate os reason codes. Registre os reason codes de CONNACK e DISCONNECT para que uma recusa por cota apareça claramente nos seus logs.
- Use client IDs únicos. Dois dispositivos com o mesmo ID vão derrubar um ao outro continuamente; essa é a causa mais comum de "meu cliente fica reconectando".
Indo Além do Serverless
Superar o nível gratuito é um bom problema. O caminho normalmente é Serverless (Free) para desenvolvimento, Serverless (Paid) para um produto inicial com até 1.000 conexões e shared subscriptions, e depois Dedicated quando você quer um cluster isolado. Como tudo fala MQTT 3.1.1 e 5.0 padrão, mudar de nível significa atualizar hostname e credenciais, não reescrever a lógica do firmware dos dispositivos. Para o panorama completo das opções de hospedagem, leia nosso guia de broker MQTT na nuvem e veja como escolher um broker MQTT para IoT para um checklist de avaliação.
Comece Seu Broker Serverless na ConnectMQ
Você pode criar um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito. Escolha o plano Serverless (Free), crie um broker, copie as credenciais geradas e execute o script Python acima. Em minutos você terá dispositivos publicando via TLS, além de um explorador de topics, um dashboard e regras de alerta para acompanhá-los, enquanto o provedor cuida do cluster.
Perguntas frequentes
Um broker MQTT serverless é seguro o suficiente para produção?
Sim, para muitas cargas de trabalho. O tráfego é criptografado com TLS, as credenciais são por tenant e os client IDs ficam vinculados a elas; escolha uma implantação dedicated ou BYOC se a sua política proibir infraestrutura compartilhada.
O que acontece quando ultrapasso o limite de conexões?
O broker recusa a conexão excedente. Clientes MQTT 5 recebem um reason code como quota exceeded, para que você possa registrá-lo e reagir em vez de adivinhar.
Posso usar recursos do MQTT 5 no nível gratuito?
Sim. MQTT 3.1.1 e 5.0 são suportados, incluindo retained messages, session expiry, message expiry e topic aliases; o QoS é limitado a 1 e as shared subscriptions exigem o plano serverless pago.
Preciso mudar o código dos meus dispositivos para trocar de plano?
Normalmente não. Fazer upgrade muda as cotas, e migrar para um broker dedicado normalmente significa atualizar hostname e credenciais, enquanto a lógica MQTT continua a mesma.
O servidor MQTT público é igual a um broker serverless?
Não. O servidor MQTT público em broker.connectmq.com aceita conexões anônimas e tudo nele pode ser lido por qualquer pessoa, enquanto um broker serverless fornece credenciais privadas e autenticadas e cotas próprias.



