Sesenta contenedores en un servidor
Un servidor bare-metal ejecuta decenas a cientos de contenedores Hoody. KSM y dedup BTRFS hacen que el costo marginal sea casi cero.
Deja de dispersar tenant_id por todas las tablas. Cuando un cliente se registra, un script exec copia un contenedor nuevo y le entrega su propia URL, su propio sistema de archivos, su propio SQLite. El aislamiento es el sistema operativo entre ellos, no una cláusula WHERE.
Cuando un usuario se registra, esto es lo que ocurre.
Cada POST a /api/v1/projects/{id}/containers levanta un entorno aislado. Una llamada, un tenant, una URL devuelta a tu app.
Tu webhook de Stripe (o de cualquier facturación) llega a un script de Hoody Exec. Sin Express, sin configurar servidores — solo un archivo en scripts/.
El nuevo contenedor tiene su propio filesystem, su propio SQLite, su propio ramdisk. El tenant A literalmente no puede ver los datos del tenant B.
La respuesta incluye una URL de contenedor. Tu app redirige al usuario a su propio sandbox dentro de la misma ventana de despliegue.
Las reglas de red y firewall del contenedor se copian de tu plantilla. Cada nuevo tenant arranca desde la misma línea base de seguridad.
Detén el contenedor y no cuesta nada. BTRFS guarda solo el delta de tu plantilla — el disco sigue siendo barato incluso a escala.
Una sola llamada DELETE elimina el contenedor y todos sus datos. El offboarding por GDPR no es un script, es una única llamada HTTP.
Todo el flujo es un webhook handler. Sin operadores de Kubernetes, sin YAML de namespaces, sin admin de cluster. Tres llamadas HTTP: webhook in, container out, URL al usuario.
Las opciones tradicionales eran una columna en cada tabla o una flota de VMs que no podías permitirte. Hoody es una tercera forma: contenedores lo bastante baratos como para dar uno a cada cliente.
La multi-tenancy deja de ser un problema de arquitectura. Se convierte en un comando `cp`.
POST /containers/$TEMPLATE/copyDELETE /containers/$CIDPATCH /containers/$CID [ env_vars ]El aislamiento por tenant ha significado históricamente o una cláusula WHERE ingeniosa o un cluster caro. Container-per-customer desplaza los parches habituales:
Los clientes ociosos no cuestan nada. Los activos escalan bajo demanda. Toda la cosa corre sobre $49 de bare metal hasta que tienes cientos de usuarios de pago.