跳转到内容
use-cases / kill-the-staging-tax / hero
CONTAINERS · SNAPSHOTS · COST

干掉预发布服务器税

大多数团队为生产付费,然后再为一套大致像生产的预发布栈付一次费。在 Hoody,预发布是生产容器的一份快照——有人需要时在同一台裸金属上分叉出来,没人需要时再冻结回磁盘。

阅读快照文档
use-cases / kill-the-staging-tax / mechanism

三个调用。一份快照。没有重复堆栈。

Hoody 上的快照很便宜,因为存储层是写时复制的。基础镜像被引用,而不是复制。预发布与生产共享页,直到出现差异——然后只为增量付费。

01
步骤 01

给生产拍快照

POST /containers/$PROD/snapshots 并附上一个别名。基础镜像保持被引用;只有元数据是新的。这次调用会在一秒内返回快照名。

02
步骤 02

从快照分叉预发布

POST /containers/$PROD/copy,带 source_snapshot=prod-baseline。一个新容器在同一台硬件上启动,与生产共享页。写入进入增量——预发布只为它改变的部分计费。

03
步骤 03

闲置时冻结

QA 完成时停止预发布容器。磁盘保留,RAM 和 CPU 降到零。下一个工单到来时在 5–15 秒内恢复。偏离不可能发生,因为每个分支都从一个已知的生产状态开始。

shell · 调用 Hoody Containers API
POST · 快照 + 复制
# 1. 给生产拍快照——加个别名让人能找到curl -X POST https://api.hoody.com/api/v1/containers/$PROD/snapshots \ -H 'Authorization: Bearer $TOKEN' \ -d '{"alias":"prod-baseline","expiry":30}'# 2. 从那一份准确的快照分叉出预发布curl -X POST https://api.hoody.com/api/v1/containers/$PROD/copy \ -d '{"target_project_id":"$STAGING","source_snapshot":"prod-baseline"}'→ 200 OK · 预发布容器在 5–15 秒内启动,只为增量付费

快照可以带一个以天为单位的过期时间;清理是自动的。复制可以选择不同的 target_project_id 和 target_server_id,所以 QA 可以跑在不同的区域或子账号上,而无需更改流程。

use-cases / kill-the-staging-tax / powers

去掉重复堆栈解锁了什么

当预发布是分支而不是平行租赁时,几个反复出现的烦扰不复存在。账单只是其中最显眼的一个。

预算

一个堆栈,而不是三个

生产、预发布和 QA 过去是三份分开计费的租赁。现在它们是一个容器加两个按需唤醒的便宜分支。新增一个环境的成本是一个增量,不是一份副本。

保真度

偏离不可能发生

每个预发布分支都从一份真实的生产快照开始——同一个 OS 镜像、同样的包、同样的数据形态、同样的环境变量。「在预发布能跑、在生产挂掉」这一类 bug 在结构上就被消灭了。

速度

几秒恢复,不是几小时

PATCH 容器到一个旧快照来回滚一次坏部署,或者从昨晚的备份分叉出一份全新的 QA 副本。无 rsync,无数据库 dump,无 90 分钟的配置工作——只要一个快照名。

use-cases / kill-the-staging-tax / ledger

去掉重复后的月度账本

同一份工作负载——生产、预发布、QA——按两种方式计算。一次按三份完整租赁,一次按一个容器加两个快照分支。

之前 · 重复堆栈$702 / 月

两台 EC2 m5.large,每小时 0.096 美元(730 小时),加上两台 db.t3.medium Multi-AZ RDS,每小时 0.380 美元。预发布大部分时间闲置;计价表不在乎。

差额 · 真正付费的部分仅增量

预发布从一份生产快照分叉。共享的页是被引用的,不是被复制的。只有 QA 实际写入的字节才计费——通常是几百 MB,而不是 100 GB。

之后 · 一个容器$49 / 月

一个 Hoody 容器 24×7 处理生产。预发布和 QA 在需要时从快照唤醒,不需要时再冻结回磁盘。一张账单,三套环境,无偏离。

AWS 价格采用 us-east-1 EC2 m5.large 和 RDS db.t3.medium Multi-AZ 在 2026 年初的公开按需价格。Hoody 裸金属入场价格起价 $29/月,根据规格、区域和租期变化;快照和存储包含在服务器价格里。所示数字是一个代表性对比,不是报价。

use-cases / kill-the-staging-tax / punchline

预发布过去是生产的副本。现在只是它的一份快照。

之前 · 两份租赁,一个目的租生产、租预发布,再手工同步两者两台 EC2 · 两套 RDS · 两份监控 · 一份漂移的副本
之后 · 一个容器,多个视角snapshot $PROD → copy with source_snapshot共享基础 · 仅增量分支 · 结构上无偏离
阅读写时复制说明
use-cases / kill-the-staging-tax / replaces

本方案替代了什么

团队缴预发布税的几种标准方式。每一种都让你为一个大部分时间闲置或在你需要它时已经偏离生产的环境付费。

  • AWS EC2 预发布副本第二台 VM 每月按 730 小时计费,实际只用了 12 小时
  • 并行的 Heroku 预发布 dyno按 dyno + 按附加组件计费,大部分日子闲置
  • 为各环境层准备的多台 VPS成本随环境数线性增加——三台机器,三张账单
  • 自研的偏离检测工具为找出预发布与生产之间差距而做的工具链
  • 「我们没有预发布」的风险因为从生产分叉太贵,bug 直接发上线了
  • RDS 预发布副本第二个数据库要保持同步,24×7 都在计价表上
use-cases / kill-the-staging-tax / cta

别再为一个会偏离的环境付租金。分叉一个不会偏离的。

阅读快照文档
use-cases / kill-the-staging-tax / related

阅读其他内容