跳转到内容
use-cases / per-customer-sandboxes-fleet-scale / hero
容器 · 多租户 SaaS · 舰队规模

舰队规模的按客户隔离沙箱

三台裸金属机器上跑着八百个隔离容器,每月 147 美元。每个客户都有自己的文件系统、自己的 URL、自己的内核命名空间。诚实的架构不再是昂贵的那一种。

阅读舰队文档
use-cases / per-customer-sandboxes-fleet-scale / mechanism

一次注册如何变成 812 个沙箱中的一个

你的计费 webhook 命中一个 Hoody Exec 脚本。脚本从模板快照复制一个全新的客户容器,新租户落到自己的 URL 上,舰队仪表盘加 1。三次 HTTP 调用,无需编排器。

01 · WEBHOOK

Stripe 调用你的 exec 端点

POST /api/v1/exec/scripts/1/webhooks/signup

一个 serverless V8 隔离环境。webhook URL 就是 scripts/1/ 下的一个 TypeScript 文件。无需 Express、无需服务器配置、无需自己跑一个容器。

02 · COPY

脚本克隆客户模板

POST /api/v1/containers/$TEMPLATE/copy

BTRFS 写时复制——只对每租户的增量收磁盘费。防火墙和网络规则随快照一同克隆。容器落在余量充足的舰队服务器上。

03 · ROUTE

新 URL 交还给用户

https://$PROJECT-$CID-...containers.hoody.com

签名的 authorize 端点签发一个一小时有效的 container_claim。你的应用把客户重定向进他们自己的沙箱。注册总耗时:不到 60 秒。

整条管线就是三次 HTTP 调用。无 Kubernetes operator、无 namespace YAML、无集群管理员。舰队添加租户的方式就像哈希表添加条目——只不过每个条目都是一个真正的 Linux 容器。

use-cases / per-customer-sandboxes-fleet-scale / economics

让舰队规模隔离便宜下来的算术

按租户定价的模型按租户收费。按服务器定价的模型按服务器收费。一旦数学换形,每租户 0.18 美元就成了现实下限——而且曲线随你扩张越来越平。

舰队账本 · 812 租户
# 三台裸金属节点,市场价3 flat-rate servers · one monthly bill# 在 eu-1、us-1、ap-1 之间混合摊算812 tenants (287 + 304 + 221)# 每租户成本因此坍缩bill ÷ 812 = cost shrinks as density grows

再加一百个租户不会改变账单——只会改变除数。KSM 在容器之间去重相同的内存页;BTRFS 写时复制让基础镜像字节保持共享。每个新容器只为它和模板的差异付费,不是整个栈。

每租户 · 其他栈
  • AWS FARGATE 每租户vCPU + 内存按 task 计费,即使闲置
    $8–25
  • K8S NAMESPACE 每租户集群开销在 namespace 之间摊销
    $3–10
  • 专属租户 POD预留 RAM + CPU,冷热都得付
    $5–15
  • HOODY · 每租户一个容器$147 / 812 —— 上限是机器,不是数量
    $0.18

Hoody 服务器价格由市场驱动,因区域、规格、供应商而异。示例舰队使用三台围绕已记录的 49 美元/月起步价位的节点;竞品估算是基于公开定价对可比的每租户算力的示意区间。密度假定典型 SaaS 工作负载——大多数时间闲置的租户。重型数据库或 AI 工作负载需要更大的每容器余量。

use-cases / per-customer-sandboxes-fleet-scale / powers

这个价位下「一租户一容器」解锁了什么

一旦隔离便宜下来,架构就不再妥协。原本被你的 CFO 否决的特性变成默认。

上手

每个新客户都只是一次 `cp`

Stripe webhook → Hoody Exec → POST /containers/$TEMPLATE/copy。新租户从其他每个租户启动时所用的同一个快照启动。基线一致,未来隔离。无需贯穿 tenant_id 列,无需担心忘了某一行共享数据。

下线

GDPR 删除只需一次 HTTP 调用

DELETE /api/v1/containers/$CID。文件系统没了,SQLite 没了,cron 任务没了,审计日志没了——因为它们都住在同一处。再也不需要「DELETE … WHERE tenant_id … 加上你忘了的另外 12 张表」。

爆炸半径

一个租户的 bug 留在那一个租户内

客户的失控脚本撞上自己容器的 CPU 和 RAM 配额。舰队上其余 811 个容器毫无察觉。无需吵闹邻居审计,无共享锁表,无共享连接池——内核命名空间替你做了应用层原本伪装的隔离工作。

use-cases / per-customer-sandboxes-fleet-scale / punchline

按租户隔离过去要按租户付费。现在按服务器付。

过去$3–25 / 租户fargate、namespace 或专属 pod
现在$0.18 / 租户812 个沙箱 ÷ 3 台裸金属机器
use-cases / per-customer-sandboxes-fleet-scale / replaces

这替换了什么

「按租户隔离」过去意味着要么写一个聪明的 WHERE 子句,要么承担一份按租户的账单。舰队规模的「一客户一容器」同时取代两者:

  • AWS Fargate 每租户vCPU + RAM 按 task 计费,冷热都得付
  • Kubernetes 每 namespace集群 + 控制面开销摊到每个租户
  • 带 tenant_id 过滤的共享多租户忘了一个 WHERE 就泄漏客户数据
  • Postgres row-level security 开销每张表都要策略,每条查询都要审计
  • 专属租户 pods预留算力,无论用没用都要付
use-cases / per-customer-sandboxes-fleet-scale / cta

八百个隔离租户,跑在你笔电就能替代的同一批服务器上。诚实的架构终于也是负担得起的那一种。

阅读容器指南
use-cases / per-customer-sandboxes-fleet-scale / related

阅读其他内容