
一台服务器上运行 60 个容器
一个裸金属服务器运行数十到数百个 Hoody 容器。KSM 和 BTRFS 去重使边际成本接近零。
你出货的是一组产品组合。两个赚钱,十个安静。在按应用计费的云上你得为全部 12 个付钱。在 Hoody,50 个容器堆在一台 49 美元的服务器上——而那 10 个安静的产品在你已经付的租金之外几乎不再产生成本。
twelve apps · one server · one line item on the card
一款产品不是一台服务器,而是大约 4 个容器——前端、后端、数据库、worker。12 款产品就是 50 个容器。内核会把无聊的部分去重,机器自己几乎察觉不到。
每个应用是一个小型技术栈:一个 Next.js 前端、一个小型 API、一个 Postgres 或 SQLite、一个 worker。POST 4 个容器到 /api/v1/projects/[id]/containers,给它们一个匹配产品的 project_alias,完成。12 款产品是 50 个容器加几个备用。
Hoody 在 LXC 上运行容器,而不是 VM。Kernel Samepage Merging 找出运行同一 Debian 基础镜像的容器之间相同的 RAM 页——50 份 glibc 变成 1 份。BTRFS 写时复制对磁盘做同样的事。闲置容器只占基础镜像之上的增量,而不是整台机器。
从服务器市场挑一台 Hetzner AX52 或同等机型——一台真正的裸金属机器,64 GB RAM,1 TB NVMe,大约每月 49 美元。账单就是这些。第 51 个容器不再花一分钱。
根据 Containers API:每个容器在 /api/v1/containers/[id]/stats 上报告自己的 CPU、内存、磁盘和网络。营销层面的事实是,50 个这种 stats 端点可以在一台主机上稳定运行,而主机本身毫无怨言。
三件事只有在闲置产品真正免费时才说得通。
已停止的容器消耗零 CPU 和零 RAM——它们的文件系统就以增量成本待在 BTRFS 上。那个有 12 个用户的水族箱日志应用没在烧任何东西。你不必为了心安理得而把它干掉。
容器是 Linux 命名空间,不是控制平面里的共享租户。mortgage-calc-pro 里的 bug 看不到 chord-finder 的数据库。没有 tenant_id 列,没有共享 schema,不会出现「那个租户失控了」的事故。隔离由内核保证。
当第 11 款产品起飞时,你不必重新平台化。PATCH 容器的资源,给它更多核,通过 /copy 加一个副本。它本来就跑在流量进来的地方——你只是把旋钮拧大了。
计费单位是服务器——不是容器,不是产品。加上第 12 款产品后,发票纹丝不动。这张图显示的是容器间的相对资源足迹;成本列对所有容器都是同一个数字,因为服务器才是成本。
数字仅作参考,基于 Hetzner AX52 级主机。服务器是计费单位——再加容器不会产生账目项。升级到更大的盒子成本更高;在盒子内加容器则不会。
产品组合模式过去是一张账单清单。现在只是一行账。
下面这些产品都把单款产品当作单个生意来定价。12 款产品组合就要把每个按应用收的费用乘以 12。裸金属模式只收你一次。
当闲置免费时,下一个点子就不再是预算讨论——只是一个 POST。