Pular para o conteúdo
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaSaaS multi-tenant
ParaFundadores solo
ParaEquipes de desenvolvimento
ParaAgências
ServiçosContêineres
ServiçosSnapshots
ServiçosExec
ServiçosArquivos
Por que HoodyEconomia de contêineres
Por que HoodyIsolamento bare-metal
Por que HoodyViagem no tempo de snapshot
SetorSaaS
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaSaaS multi-tenant
ParaFundadores solo
ParaEquipes de desenvolvimento
ParaAgências
ServiçosContêineres
ServiçosSnapshots
ServiçosExec
ServiçosArquivos
Por que HoodyEconomia de contêineres
Por que HoodyIsolamento bare-metal
Por que HoodyViagem no tempo de snapshot
SetorSaaS
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaSaaS multi-tenant
ParaFundadores solo
ParaEquipes de desenvolvimento
ParaAgências
ServiçosContêineres
ServiçosSnapshots
ServiçosExec
ServiçosArquivos
Por que HoodyEconomia de contêineres
Por que HoodyIsolamento bare-metal
Por que HoodyViagem no tempo de snapshot
SetorSaaS
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaSaaS multi-tenant
ParaFundadores solo
ParaEquipes de desenvolvimento
ParaAgências
ServiçosContêineres
ServiçosSnapshots
ServiçosExec
ServiçosArquivos
Por que HoodyEconomia de contêineres
Por que HoodyIsolamento bare-metal
Por que HoodyViagem no tempo de snapshot
SetorSaaS
CONTÊINERES · SAAS MULTI-TENANT

Um sandbox por cliente, automaticamente

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.

O que essa única chamada de API provisiona

Cada POST em /api/v1/projects/{id}/containers sobe um ambiente isolado. Uma chamada, um tenant, uma URL devolvida ao seu app.

01 · WEBHOOK

O cadastro dispara o POST do contêiner

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/.

02 · ISOLATION

Namespaces do Linux, não uma cláusula WHERE

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.

03 · URL

Uma URL única de volta para o seu app

A resposta inclui uma URL de contêiner. Seu app redireciona o usuário para o sandbox dele na mesma janela de deploy.

04 · FIREWALL

Regras de rede por tenant, clonadas

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.

05 · IDLE

Custo zero quando ocioso

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.

06 · OFFBOARD

DELETE no contêiner = esquecer o tenant

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.

Multi-tenancy compartilhado vs contêiner por cliente

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.

DIMENSÃO
BANCO COMPARTILHADO · TENANT_ID
HOODY · CONTÊINER POR CLIENTE
  • ISOLAMENTOWHERE tenant_id = $1 — e você torce para que toda query lembreNamespaces Linux. O tenant A literalmente não consegue ver o filesystem do tenant B.
  • SUPERFÍCIE DE VAZAMENTOtodo JOIN, todo hook do ORM, todo script de relatórioa fronteira do contêiner. Um artefato para auditar, não 200 sites de query.
  • CONFIG POR TENANTtabela de feature flags, frágil, meio-testada em devedite o ambiente de um contêiner. Os outros 399 ficam intactos.
  • VIZINHO BARULHENTOum cliente pesado pode travar o banco compartilhadocotas de CPU e disco por contêiner; a carga de um tenant fica na caixa dele.
  • OFFBOARDINGDELETE … WHERE tenant_id … mais 12 outras tabelas que você esqueceuDELETE no contêiner. Os dados vão junto. GDPR é uma chamada HTTP.
  • CUSTO EM OCIOSIDADEcada linha custa storage mesmo com o cliente dormindopare o contêiner — zero CPU, zero RAM. O BTRFS guarda só o delta.
  • sem colunas tenant_id
  • sem auditorias de segurança em nível de linha
  • sem YAML de namespace
  • delete = esquecer

Multi-tenancy deixa de ser um problema de arquitetura. Vira um comando `cp`.

ONBOARDINGPOST /containers/$TEMPLATE/copy
OFFBOARDINGDELETE /containers/$CID
AJUSTE POR TENANTPATCH /containers/$CID [ env_vars ]
  • isolamento de nível namespace
  • delete GDPR em uma chamada
  • um contêiner por conta

O que isso substitui

Isolamento por tenant historicamente significou ou uma cláusula WHERE inteligente ou um cluster caro. Contêiner por cliente desloca os contornos usuais:

  • Multi-tenancy compartilhado (coluna tenant_id)Uma query ruim expõe todo mundo
  • Middleware customizado de isolamento de tenantGuarda artesanal que você mantém para sempre
  • Políticas de row-level security do PostgresResposta certa, custosa de auditar por tabela
  • Namespace Kubernetes por tenantOverhead em nível de cluster, time de ops obrigatório
  • Schemas / bancos por clienteMultiplicador de migration, dor no pool de conexões
  • Linhas de metering Stripe em tabela compartilhadaRastreamento de uso colado na mesma caixa compartilhada

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.

Leia os outros