Comparativos

Baileys na prática: o que aprendemos operando um cluster não oficial

Operamos um cluster de instâncias não oficiais por anos antes de migrar os clientes para a Cloud API. O que quebrou, como quebrou e por que a falha mais cara não foi o banimento — foi o silêncio.

Baileys na prática: o que aprendemos operando um cluster não oficial
Equipe Joinotify

Escrito por

Equipe Joinotify

Publicado em

Leitura

9 min de leitura

Baileys é uma biblioteca que automatiza o WhatsApp Web: ela abre uma sessão como se fosse um navegador pareado e envia mensagens por ela. É gratuita, sobe em minutos e não pede aprovação de nada. Também viola os termos do WhatsApp, e a sessão que ela mantém é o ponto único de falha de qualquer operação construída em cima.

Este texto não é uma resenha: é o que aprendemos operando um cluster dessas instâncias em produção, com clientes pagantes, antes de migrá-los para a Cloud API.

O que funciona bem

Vale começar pelo que é verdade e costuma ser omitido por quem vende a alternativa:

  • Sobe em minutos. Instala, lê o QR code, envia.
  • Não cobra por mensagem. Para volume alto de notificação, a diferença de custo é de ordens de grandeza.
  • Não exige aprovação de template. Você escreve e manda.
  • Faz coisas que a API oficial não faz — grupos, principalmente.

Para um protótipo, um uso interno ou um volume baixo em número descartável, é difícil justificar outra coisa.

A falha que não aparece no monitoramento

A sessão do WhatsApp Web não sobrevive a um reboot. Isso está na documentação de qualquer projeto do tipo e todo mundo sabe — em tese.

No nosso cluster, dois servidores reiniciaram no mesmo dia. Naquele dia, 41 instâncias entraram em estado de reconexão e nunca mais voltaram sozinhas. A data da última atualização das 41 era idêntica. Descobrimos semanas depois, quando fomos medir o cluster para planejar a migração.

O serviço continuou de pé, respondendo às requisições de status, consumindo recursos e reportando saúde. Só não tinha sessão. Falha silenciosa é pior que queda: queda alguém percebe.

É o tipo de problema que não se resolve com mais monitoramento genérico. "O processo está rodando" e "o endpoint responde 200" continuavam verdadeiros. A pergunta certa — "esta instância tem sessão válida agora?" — precisa ser feita explicitamente, instância por instância.

O que quebra, em ordem de frequência

  1. Reboot do servidor. A sessão morre e não volta sem reconexão manual ou automação específica para isso.
  2. Atualização do aplicativo. A biblioteca corre atrás do protocolo, e existe uma janela em que ela simplesmente não funciona.
  3. Pareamento expirado. Sessões envelhecem e caem sem evento claro.
  4. Bloqueio do número. Sem aviso, sem prazo e sem recurso previsível.

Os três primeiros são operacionais e se mitigam com trabalho. O quarto não se mitiga: ele é consequência de automatizar o WhatsApp Web, que é o que a biblioteca faz por definição.

O custo que não estava na planilha

A conta que costuma justificar a escolha compara a tarifa da Meta por mensagem com zero. Ela ignora três linhas:

  • Operação — servidores, reconexões, plantão para religar sessão, monitoramento específico.
  • Perda por falha silenciosa — mensagens que a loja acredita ter enviado e não enviou.
  • Substituição de número — quando o número que cai é o mesmo do atendimento, o custo não é o número: é o cliente que não consegue falar com você.

Foi a soma dessas três, e não o valor da tarifa, que nos levou a desligar o cluster e levar os clientes para a Cloud API.

Quando ainda faz sentido

Não é uma condenação. A biblioteca continua sendo a escolha certa em alguns casos:

  • Prova de conceito que vai durar duas semanas.
  • Automação interna, em número que não é o do negócio.
  • Operação que depende de grupo, que a API oficial não atende de jeito nenhum.
  • Volume alto de notificação em que a conta da API oficial comprovadamente não fecha.

O que muda a resposta é uma pergunta: se este número parar de funcionar amanhã, o que acontece com a empresa?

Se a decisão for migrar

A migração mantém o número, desde que ele não esteja bloqueado e a sessão antiga seja encerrada antes. O que não migra são os textos: na API oficial, mensagem que parte de você é template aprovado.

O passo a passo está em migrar para a API oficial sem perder o número, e a comparação critério a critério em API oficial x API não oficial.

Perguntas frequentes

Baileys é seguro?

O código é maduro e mantido. O risco não está nele: está no método, porque automatizar o WhatsApp Web viola os termos e expõe o número a bloqueio.

Dá para usar Baileys sem ser banido?

Dá para reduzir a probabilidade — volume baixo, opt-in, sem disparo em massa. Não dá para eliminar, porque a violação é o uso, não o conteúdo.

Qual a diferença entre Baileys e a Cloud API?

Baileys automatiza o WhatsApp Web por engenharia reversa; a Cloud API é a interface oficial da Meta, hospedada por ela, em que automatizar é o uso previsto e cada template iniciado é cobrado.

A sessão do Baileys pode ser persistida?

As credenciais podem ser salvas e recarregadas, o que ajuda. Não elimina o problema: a sessão ainda expira, ainda quebra em atualização e ainda precisa de reconexão vigiada.

Comece agora

Pare de perder venda por mensagem não enviada.

Conecte seu número à API oficial e automatize o que você acabou de ler.

  • Sem cartão de crédito
  • Cloud API oficial da Meta
  • Suporte por WhatsApp