
Sessenta contêineres em um servidor
Uma caixa bare-metal executa dezenas a centenas de contêineres Hoody. KSM e BTRFS dedup fazem o custo marginal próximo a zero.
Toda segunda às 9h, uma entrada de cron acorda um único contêiner. O script renderiza o digest uma vez e o escreve numa URL de pipe com ?n=200. Duzentos loops curl — um por assinante — puxam os mesmos bytes em paralelo e os entregam ao SMTP. O fan-out vive no substrato, não no seu código.
Seu digest de segunda — 4 coisas que valem a pena abrir esta semana
Bonds subiram em payrolls mais fracos; a curva des-inverteu na ponta curta. Marcamos dois nomes com earnings que o mercado está precificando errado.
Dois gráficos: fluxos líquidos semanais para ETFs de infra de IA e um breakdown de CPI que discorda do número manchete.
Lista de leitura: um texto longo sobre crédito privado e uma nota afiada sobre por que o ciclo de juros é mais curto que o de 2008.
→ Abrir o digest completo
0 9 * * 1 bash /scripts/digest.shUM ACORDAR · UM RENDER · DUZENTOS PULLS PARALELOS
A Hoody Cron API solta uma linha de crontab de 5 campos numa entrada gerenciada. A linha roda um script exec que renderiza o digest uma vez e o empurra num caminho de pipe com n=200. Duzentos loops de assinante puxam o mesmo caminho em paralelo — o servidor não segura nada, e um leitor lento não pode bloquear o resto.
O cron não ficou mais complexo. O fan-out foi movido para o substrato — o pipe não segura nada, o script renderiza uma vez, e o loop é só SMTP na borda. Sem fila, sem tabela de retentativas, sem assento de ferramenta de campanha.
O design ingênuo faz loop em 200 envios SMTP em série, leva 11 minutos, e entrega em duplicidade quando crasha no meio. O formato de pipe te dá paralelismo, idempotência e um contêiner menor — de graça.
O digest é construído exatamente uma vez. Duzentos loops curl puxam os mesmos bytes simultaneamente. Uma rodada de 4 segundos substitui um loop serial de 11 minutos — o pipe aplica backpressure aos leitores lentos sem bloquear o resto.
Não há tabela de estado de campanha para consultar. Se a rodada morre antes dos 200 conectarem, o TTL do pipe expulsa a metade inacabada e o próximo tick do cron re-renderiza. Sem entrega dupla, sem batch meio-enviado para reconciliar.
O script acorda uma vez por semana, roda quatro segundos, e o contêiner volta a ficar idle. Você paga pelos quatro segundos — não por um serviço de campanha sempre-ativo, não por uma fatura SES por destinatário, não por um assento Mailchimp.
Mesmos 200 destinatários, mesmo body de digest. O formato da rodada é o que se move — de minutos-de-SMTP-serial para segundos-de-HTTP-paralelo.
Tempo de relógio do tick do cron até a última entrega. O pipe faz streaming para todos os 200 receivers em paralelo; o gargalo vira o SMTP do assinante mais lento, não o loop.
O body do digest é computado uma vez. O pipe encaminha os mesmos bytes a cada receiver — sem re-render de template por destinatário, sem cobrança por destinatário, sem cache por destinatário.
A Hoody Pipe API limita n a 256. Um digest semanal em 200 cabe confortavelmente abaixo do teto — e um leitor lento aplica backpressure mas não bloqueia os outros.
Limites pela Hoody Pipe API: contagem de receivers 1–256, TTL de 5 minutos esperando conexões, 1000 transferências ativas no servidor inteiro. A entrada de cron em si é uma linha em /users/root/entries com schedule, command e um expires_at opcional.
Quatro momentos. Cada um é uma única chamada HTTP que você faria à mão. Cron é o despertador; exec é o renderizador; pipe é o fio; o loop é a única coisa que o agente escreve.
A entrada gerenciada em /users/root/entries dispara. Schedule: 0 9 * * 1. Command: bash /scripts/digest.sh. O crontab em si é um único registro JSON — não é um DAG do Airflow, não é um serviço de workflow.
O script exec puxa os dados da semana, renderiza o markdown, converte para HTML e escreve o body no stdout. Um render, um payload — sem loop de mail-merge por destinatário.
O script joga o stdout no curl -T - contra pipe/digest-monday?n=200. O pipe segura o upload até 200 receivers conectarem, depois faz streaming do body para todos eles em paralelo.
Duzentos loops fazem curl no mesmo caminho e entregam o body para o SMTP do seu assinante. Os lentos pegam backpressure. Os rápidos terminam em milissegundos. A rodada inteira acaba em segundos.
Uma entrada de cron, um contêiner, duzentos destinatários.
As ferramentas padrão para quando você quer mandar o mesmo email para uma lista. Cada uma te cobra um tier de serviço pelo que é, no fim, um render e um loop HTTP de fan-out.
Segunda às 9 costumava significar um worker triturando SMTP. Agora significa um tick de cron, um contêiner, e um pipe que faz o resto.