
Soixante conteneurs sur un seul serveur
Une machine bare-metal exécute des dizaines à des centaines de conteneurs Hoody. La dédupplication KSM et BTRFS rend le coût marginal quasi nul.
Arrêtez de disperser tenant_id à travers chaque table. Quand un client s'inscrit, un script exec copie un conteneur fresh-customer et leur remet leur propre URL, leur propre système de fichiers, leur propre SQLite. L'isolation est le système d'exploitation entre eux, pas une clause WHERE.
When a user signs up, this is what happens.
Each POST to /api/v1/projects/{id}/containers spins up an isolated environment. One call, one tenant, one URL handed back to your app.
Your Stripe (or any billing) webhook hits a Hoody Exec script. No Express, no server config — just a file in scripts/.
The new container has its own filesystem, its own SQLite, its own ramdisk. Tenant A literally cannot see tenant B's data.
The response includes a container URL. Your app redirects the user into their own sandbox in the same deploy window.
Container network and firewall rules are copied from your template. Every new tenant starts from the same security baseline.
Stop the container and it costs nothing. BTRFS keeps only the delta from your template — disk stays cheap even at scale.
One DELETE call removes the container and all their data. GDPR offboarding is not a script, it is a single HTTP call.
The whole flow is one webhook handler. No Kubernetes operator, no namespace YAML, no cluster admin. Three HTTP calls: webhook in, container out, URL to user.
Les choix traditionnels étaient une colonne sur chaque table ou une flotte de VMs que vous ne pouviez pas vous permettre. Hoody est une troisième forme : des conteneurs assez bon marché pour en donner un à chaque client.
La multi-tenancy cesse d'être un problème d'architecture. Elle devient une commande `cp`.
POST /containers/$TEMPLATE/copyDELETE /containers/$CIDPATCH /containers/$CID [ env_vars ]L'isolation par locataire a historiquement signifié soit une clause WHERE astucieuse, soit un cluster coûteux. Le conteneur-par-client déplace les contournements habituels :
Les clients inactifs ne coûtent rien. Les actifs scalent à la demande. Tout tourne sur 49 $ de bare metal jusqu'à des centaines d'utilisateurs payants.