Sessenta contêineres em um servidor
Um servidor bare-metal roda dezenas a centenas de contêineres Hoody. KSM e dedup do BTRFS deixam o custo marginal perto de zero.
Pare de espalhar tenant_id por cada tabela. Quando um cliente se cadastra, um script exec copia um contêiner novo-cliente e lhe entrega sua própria URL, seu próprio sistema de arquivos, seu próprio SQLite. Isolamento é o sistema operacional entre eles, não uma cláusula WHERE.
Quando um usuário se cadastra, é isso que acontece.
Cada POST em /api/v1/projects/{id}/containers sobe um ambiente isolado. Uma chamada, um tenant, uma URL devolvida ao seu app.
Seu webhook do Stripe (ou de qualquer cobrança) chama um script do Hoody Exec. Sem Express, sem config de servidor — só um arquivo em scripts/.
O novo contêiner tem seu próprio sistema de arquivos, seu próprio SQLite, seu próprio ramdisk. O tenant A literalmente não consegue ver os dados do tenant B.
A resposta inclui uma URL de contêiner. Seu app redireciona o usuário para o sandbox dele na mesma janela de deploy.
As regras de rede e de firewall do contêiner são copiadas do seu template. Todo novo tenant começa da mesma linha de base de segurança.
Pare o contêiner e ele não custa nada. O BTRFS guarda só o delta em relação ao seu template — o disco continua barato mesmo em escala.
Uma única chamada DELETE remove o contêiner e todos os dados dele. Offboarding de GDPR não é um script, é uma única chamada HTTP.
O fluxo inteiro é um handler de webhook. Sem operador Kubernetes, sem YAML de namespace, sem cluster admin. Três chamadas HTTP: webhook entra, contêiner sai, URL para o usuário.
As escolhas tradicionais eram uma coluna em toda tabela ou uma frota de VMs que você não conseguia bancar. O Hoody é uma terceira forma: contêineres baratos o bastante para dar um a cada cliente.
Multi-tenancy deixa de ser um problema de arquitetura. Vira um comando `cp`.
POST /containers/$TEMPLATE/copyDELETE /containers/$CIDPATCH /containers/$CID [ env_vars ]Isolamento por tenant historicamente significou ou uma cláusula WHERE inteligente ou um cluster caro. Contêiner por cliente desloca os contornos usuais:
Clientes ociosos não custam nada. Os ativos escalam sob demanda. A coisa toda roda em $49 de bare metal até você ter centenas de pagantes.