(OSS)Holding the Load: evitando a VPS barata que está rodando a aplicação, agente de AI ou automação do N8N pare quando recebe um alto volume ou spike de webhooks requests.
Arquiteturas baseadas em webhooks estão em todo lugar.
De provedores de pagamento a plataformas de automação e integrações SaaS, os webhooks geralmente são a principal forma de os sistemas se comunicarem de maneira assíncrona. Eles funcionam bem até que picos de tráfego atinjam um ambiente auto-hospedado.
Este post explica o Holding the Load, um projeto que eu criei para resolver um problema muito específico, porém comum:
como absorver picos de webhooks sem escalar verticalmente uma VPS.
O Problema: Webhooks São Bursty por Natureza
Se você auto-hospeda aplicações ou ferramentas de automação, provavelmente já viu este padrão:
- Uma VPS lida bem com o tráfego normal
- Webhooks chegam em rajadas curtas
- Um pico acontece (campanhas, eventos em lote, retries, problemas do provedor)
- Uso de CPU e memória explode
- Requisições falham ou expiram
A maioria dos provedores de webhook não se importa com os limites da sua infraestrutura. Eles irão:
- Retentar agressivamente
- Enviar grandes volumes em um curto intervalo de tempo
- Assumir que você consegue lidar com isso
A resposta mais comum é escalar a VPS:
- Mais CPU
- Mais memória
- Custo mensal mais alto
Mas aqui está o problema:
Essa capacidade extra geralmente é necessária apenas por minutos ou horas, não 24/7.
A Ideia Central por Trás do Holding the Load
O Holding the Load introduz uma camada de desacoplamento entre a ingestão de webhooks e o processamento.
Em vez de permitir que os webhooks atinjam sua VPS diretamente, você coloca o Holding the Load na frente dela.
Em alto nível:
Provedor de Webhook
|
v
Holding the Load (buffer + controle)
|
v
Sua VPS (consumidor)
Essa separação é a chave para a estabilidade.
O Que é o Holding the Load?
O Holding the Load é uma aplicação leve projetada para:
- Receber altos volumes de requisições de webhook
- Armazená-las temporariamente
- Expor um mecanismo de consumo controlado para serviços downstream
Sua VPS deixa de reagir a picos de tráfego.
Em vez disso, ela consome mensagens em uma taxa que consegue lidar com segurança.
Como Funciona (Tecnicamente)
1. Ingestão de Webhooks
- Requisições de webhook são recebidas pelo Holding the Load
- As requisições são reconhecidas imediatamente
- Os payloads são persistidos (ordenação FIFO)
Isso protege os provedores de webhook contra timeouts enquanto isola o seu backend.
2. Armazenamento como Buffer
O Holding the Load atua como um buffer semelhante a uma fila:
- Webhooks recebidos são armazenados em Durable Object (serviço do Cloudflare) usando armazenamento sqlite, evitando a perda de dados dos webhooks
- A ordem é preservada
- Nenhum processamento acontece no momento da ingestão
Isso é crítico: ingestão e processamento são completamente desacoplados.
3. Consumo Controlado pela Sua VPS
Sua aplicação:
-
Busca mensagens do Holding the Load
-
Define:
- Tamanho do lote
- Intervalo de pull
Exemplo:
- Buscar 10 mensagens a cada 5 segundos
- Ou 50 mensagens a cada minuto
- Ou qualquer estratégia que se ajuste à capacidade da sua VPS
O primeiro webhook recebido é sempre o primeiro a ser consumido (FIFO).
Por Que Essa Arquitetura Importa
Essa abordagem resolve vários problemas de uma só vez:
✅ Absorção de Picos de Tráfego
Picos de webhooks são tratados upstream sem afetar sua VPS.
✅ Uso Previsível de Recursos
A carga de trabalho da sua VPS se torna estável e previsível.
✅ Sem Overprovisioning
Você não precisa pagar por capacidade de pico o mês inteiro.
✅ Isolamento de Falhas
Mesmo que sua VPS fique indisponível temporariamente, os webhooks não são perdidos.
Modelo de Custo Serverless
O Holding the Load segue uma filosofia no estilo serverless:
- Os recursos escalam conforme a demanda
- Você paga apenas pelo uso real
- Tempo ocioso custa quase nada
Isso é particularmente útil quando:
- Picos são raros, mas intensos
- Padrões de tráfego são imprevisíveis
- Você quer eficiência de custo sem sacrificar confiabilidade
Casos de Uso Típicos
O Holding the Load funciona especialmente bem para:
- Plataformas de automação como N8N
- Engines de workflow auto-hospedadas
- APIs
- Agentes de IA onde eventos de webhook baseados em React
Por Que Eu Construí Isso
Eu construí o Holding the Load após notar um padrão recorrente em sistemas auto-hospedados:
Escalamos a infraestrutura para lidar com picos raros, não com cargas reais.
O Holding the Load inverte essa lógica:
- Mantém a VPS pequena e barata
- Escala apenas a camada de ingestão
- Permite que o processamento aconteça em um ritmo controlado
Considerações Finais
O Holding the Load não é um substituto para filas, workers ou job schedulers.
Ele é uma camada de proteção.
Um buffer que:
- Protege sua VPS
- Controla a carga
- Reduz custos
- Melhora a confiabilidade
Se você depende de webhooks e auto-hospeda sua infraestrutura, essa ferramenta pode simplificar sua estratégia de escalabilidade.
Aqui está o final atualizado com o link do projeto adicionado de forma limpa e natural para um blog técnico:
Considerações Finais
O Holding the Load não é um substituto para filas, workers ou job schedulers.
Ele é uma camada de proteção.
Um buffer que:
- Protege sua VPS
- Controla a carga
- Reduz custos
- Melhora a confiabilidade
Se você depende de webhooks e auto-hospeda sua infraestrutura, esse padrão pode simplificar drasticamente sua estratégia de escalabilidade.
Repositório do Projeto
Você pode encontrar todo o código-fonte, documentação e exemplos aqui:
https://github.com/tiago123456789/holding-the-load
Technologies used
- Cloudflare Workers
- Cloudflare Durable Objects
- SQLite (Durable Object storage)
- Node.js(v21.0.0)
- Typescript
Feedback, issues e contribuições são bem-vindos.