
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.
Scrape de navegador a cada hora, resumo SQLite diário, arquivamento semanal de arquivos. Três ritmos cabem direitinho em um crontab — são apenas três linhas de `* * * * *` apontando para três scripts. Sem serviço de scheduler, sem fila de jobs, sem pool de workers.
um crontab · três cadências · mesmo contêiner
O serviço Hoody Cron expõe o crontab raw como um recurso REST. Faça PUT do arquivo uma vez e o kernel roda para sempre. Três linhas, três scripts — cada um um one-liner que já fala HTTP.
# Substitui o crontab inteiro em uma chamada.
PUT /users/root/crontab
Content-Type: text/plain
@hourly bash /scripts/scrape.sh
0 9 * * * bash /scripts/digest.sh
0 0 * * 0 bash /scripts/archive.sh
HTTP/1.1 204 No Content# scrape.sh — toda hora, manda um screenshot para o sqlite
curl -sS https://browser.containers.hoody.com/screenshot \
--data-urlencode "url=https://store.hoody.com/p/123" | sqlite3 /data/prices.db \
"INSERT INTO rows VALUES (?, ?, ?)"
# digest.sh — às 9h, calcula deltas e envia o resumo
sqlite3 /data/prices.db < /scripts/digest.sql \
> /tmp/digest.txt && curl -T /tmp/digest.txt \
https://pipe.hoody.com/api/v1/pipe/digest
# archive.sh — domingo à meia-noite, dump e armazenamento
sqlite3 /data/prices.db ".dump" | curl -T - \
https://files.containers.hoody.com/archives/$(date +%Y-w%V).sqlTrês scripts. Três URLs que eles já sabem chamar. Um PUT para instalar o agendamento. Não há serviço de scheduler na frente disso — o crond do kernel lê o arquivo que você escreveu e executa.
Cada cadência tem uma única expressão de 5 campos e uma única linha de shell por trás. Nenhuma precisa saber das outras duas — elas só compartilham um disco e um relógio.
hoody-browser tira screenshots de uma lista de URLs de produtos. Cada linha vai direto para uma tabela SQLite no volume do contêiner. Sem pool de workers de scrape — a linha cron é o pool de workers.
Às 9h o script de resumo lê as últimas 24 horas de linhas, calcula deltas de preço e envia o resumo via curl para uma URL de pipe. Sua caixa de entrada / dashboard lê do mesmo pipe.
Domingo à meia-noite o script de arquivamento faz `.dump` do SQLite, nomeia o arquivo pela semana ISO e faz PUT no hoody-files. Linhas antigas são podadas. O volume continua pequeno para sempre.
Três cadências em um contêiner não é gambiarra — é o formato natural do cron. A plataforma já te deu um scheduler; você só parou de pagar três vezes por ele.
O scrape horário escreve as linhas que o resumo diário lê. O resumo diário escreve os deltas que o arquivamento semanal despeja. Não há IPC entre eles — são apenas três processos no mesmo volume.
Quando você redeploya, redeploya uma imagem. Quando confere logs, segue um arquivo de log. Quando o disco enche, enche uma vez. O raio de impacto de qualquer cadência é igual ao de qualquer outra.
Lambda + EventBridge cobra por invocação. ECS Scheduled Tasks cobra o cluster always-on. O contêiner Hoody cobra o contêiner — as linhas cron são grátis. Três cadências não custam mais que uma.
O crontab é um arquivo. O arquivo tem URL. Qualquer coisa que você faria com o arquivo, dá para fazer por HTTP.
Cria uma entrada gerenciada com UUID e um comentário opcional. A API injeta a linha no crontab pra você e devolve um handle para habilitar, desabilitar ou apagar depois.
Pause uma cadência durante um incidente sem perder a definição. Religue quando o incidente fechar. A linha continua no arquivo, comentada como managed-disabled.
Pegue o crontab raw de volta a qualquer momento, incluindo todas as entradas gerenciadas. Faça diff contra seu repositório. Mande para o controle de versão. Cron é um arquivo, e agora o arquivo é uma URL.
Endpoints da Hoody Cron API: CRUD de entradas gerenciadas mais leitura/escrita do crontab raw por usuário. Expressões padrão de 5 campos e macros (@hourly, @daily, @weekly).
Três números do mecanismo real. Vêm das garantias da Hoody Cron API e do modelo de servidor de tarifa fixa — não de benchmarks inventados.
As três cadências rodam dentro do mesmo servidor de tarifa fixa. O servidor de entrada começa em $29/mês; linhas cron extras não adicionam nenhuma cobrança extra.
Uma @hourly, uma diária às 9h, uma semanal no domingo. Três linhas em /users/root/crontab. O orquestrador inteiro cabe em um PUT.
Sem Lambda, sem EventBridge, sem Sidekiq, sem scheduler Airflow, sem definição de tarefa agendada ECS. A API HTTP do cron É o scheduler.
Conforme a Hoody Cron API: entradas gerenciadas via CRUD JSON, leitura/escrita do crontab raw, expiração automática via expires_at e isolamento de crontab por usuário. Macros @hourly / @daily / @weekly aceitas junto com expressões de 5 campos.
Três cadências, três linhas cron, um contêiner em um servidor de tarifa fixa começando em $29/mês.
Três Lambdas, três GitHub Actions, três tarefas agendadas ECS — as stacks padrão para três cadências. Cada uma cobra por cadência ou invocação; Hoody cobra pelo servidor.
Pare de alugar um scheduler. Escreva o agendamento em um arquivo. O contêiner já roda cron — três linhas depois, você entregou o pipeline inteiro.