一台服务器上运行 60 个容器
一个裸金属服务器运行数十到数百个 Hoody 容器。KSM 和 BTRFS 去重使边际成本接近零。
停止在每个表中分散 tenant_id。当客户注册时,一个 exec 脚本复制一个新客户容器,并给他们自己的 URL、自己的文件系统、自己的 SQLite。隔离是他们之间的操作系统,而不是 WHERE 子句。
用户注册时发生的就是这件事。
每次 POST 到 /api/v1/projects/{id}/containers,都会启动一个隔离环境。一次调用、一个租户、一个 URL,直接交回你的应用。
你的 Stripe(或任意计费)webhook 命中一个 Hoody Exec 脚本。没有 Express,没有服务器配置——只是 scripts/ 里的一个文件。
新容器有自己的文件系统、自己的 SQLite、自己的 ramdisk。租户 A 根本看不到租户 B 的数据。
响应里包含一个 container URL。你的应用在同一个部署窗口内就把用户重定向进他们自己的沙箱。
容器的网络和防火墙规则从你的模板复制而来。每个新租户都从同一条安全基线起步。
停掉容器就不花一分钱。BTRFS 只保留相对模板的增量——即便规模再大,磁盘依然便宜。
一次 DELETE 调用就移除容器和他们的全部数据。GDPR 退出流程不是一段脚本,而是一次 HTTP 调用。
整套流程就是一个 webhook 处理器。不用 Kubernetes operator、不用 namespace YAML、不用集群管理员。三次 HTTP 调用:webhook 进、容器出、URL 给用户。
传统选择要么是每张表上一个列,要么是你养不起的 VM 机群。Hoody 是第三种形状:容器便宜到能给每个客户都发一个。
多租户不再是架构问题。它变成了一条 `cp` 命令。
POST /containers/$TEMPLATE/copyDELETE /containers/$CIDPATCH /containers/$CID [ env_vars ]按租户隔离历来要么意味着一条聪明的 WHERE 子句,要么意味着一个昂贵的集群。每客户一个容器替换了那些常见变通:
空闲客户不花钱。活跃客户按需扩容。在你有数百付费用户之前,整个东西跑在 49 美元的裸金属上。