关于 capacity-and-cost-engineering
capacity-and-cost-engineering 是面向容量规划与成本决策的技能,帮助工程团队结合需求、性能、可靠性和支出制定有证据支持的方案。它通过模型、负载测试和结构化记录明确成本与 SLO 等目标之间的权衡。
主要功能
- 01连接需求、性能、可靠性与支出
- 02建立容量模型并设定扩缩触发条件
- 03计算基础设施单位成本
- 04定义预算阈值、配额与限流后果
- 05要求负载及浸泡测试作为容量证据
- 06记录 SLO 与成本的权衡
适用场景
- 01根据增长预测规划容量与支出
- 02为发布或季节性峰值确定资源规模
- 03制定预算告警、软上限和硬上限
- 04评估预算约束下的 SLO 选择
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill capacity-and-cost-engineering安装后在 Claude Code 中输入/capacity-and-cost-engineering确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdevals/evals.jsonreferences/discovery-brief.mdmulti-tenant-capacity-and-unit-cost.mdsource-index.mdtemplates/budget-quota-decision.mdcapacity-model.mdload-soak-test-plan.mdslo-cost-tradeoff-record.mdtenant-capacity-model.mdunit-economics-record.md详细介绍
容量与成本工程
将需求、性能、可靠性和支出联系起来,制定有据可依的容量和成本决策。本技能对技术容量建模,在基础设施层面计算单位成本,定义预算和配额控制,要求提供负载/浸泡测试证据来支撑容量声明,并明确权衡成本与性能——产出的证据将用于支持 production-readiness 的发布决策,并约束或支持 site-reliability-engineering 的 SLO 选择。
关联维度
需求(流量和增长)、性能(延迟和吞吐量)、可靠性(SLO 和错误预算)以及支出(成本)被视为关联维度——任何一个维度发生变化都会影响其他维度。本技能的核心方法是追踪这些联系:
| 维度 | 对容量的影响 | 对成本的影响 |
|---|---|---|
| 需求(流量、增长率) | 决定计算、存储和网络需求 | 决定基准支出和预测支出 |
| 性能(延迟、吞吐量目标) | 限制每个请求的资源余量 | 更严格的目标会提高单位成本 |
| 可靠性(SLO、错误预算) | 需要冗余、超额配置或隔离 | 更高的 SLO 会以非线性方式增加成本 |
| 支出(预算、成本限制) | 限制容量;可能迫使系统以降级模式运行 | 限制可实现的 SLO/性能目标 |
如果容量决策改变了一个维度,却未对其他维度建模,则该决策并不完整。本技能中的每项容量模型、单位成本计算和预算决策,都必须至少指出一个与其他维度之间的联系,并提供证据或明确的假设。
加载指南
当任务涉及以下任一事项时,加载本技能:
| 触发条件 | 加载内容 |
|---|---|
| 根据增长预测规划项目容量 | SKILL.md + templates/capacity-model.md |
| 为峰值活动(发布、黑色星期五、季节性活动)规划容量 | SKILL.md + templates/capacity-model.md + templates/load-soak-test-plan.md |
| 计算单位成本,并将其与 SLO 或需求决策关联 | SKILL.md + templates/unit-economics-record.md |
| 定义预算阈值、支出警报或硬性上限 | SKILL.md + templates/budget-quota-decision.md |
| 在运维场景中设计配额或速率限制机制 | SKILL.md + templates/budget-quota-decision.md |
| 将负载/浸泡测试作为容量证据进行规划或评审 | SKILL.md + templates/load-soak-test-plan.md |
| 解决 SLO 与成本之间的权衡,或受成本约束的可靠性决策 | SKILL.md + templates/slo-cost-tradeoff-record.md |
| 评审成本异常,或将成本归属到服务/团队 | SKILL.md + templates/unit-economics-record.md |
| 对多租户需求、偏斜、公平性或因租户而异的单位成本建模 | SKILL.md + references/multi-tenant-capacity-and-unit-cost.md + templates/tenant-capacity-model.md |
| 了解与相邻技能之间的职责边界 | SKILL.md + references/discovery-brief.md |
工作方法
1. 模型需求与容量
从需求信号入手:当前流量、增长率以及已知的峰值事件。使用容量模型将需求转换为容量要求,该模型应关联:
- 需求单位(请求数/秒、并发用户数、摄取量 GB、消息数/秒)与
- 容量单位(vCPU、内存 GB、存储 GB、IOPS、网络吞吐量、预置吞吐量单位),并通过
- 利用率目标(每种资源可持续达到的最大利用率,并说明理由——绝不能在缺乏背景信息的情况下采用通用百分比)。
如果没有注明利用率目标、支持该目标的依据(为什么是 70% 而不是 85%?),以及利用率接近目标时触发的扩缩容机制,容量模型就不完整。
使用容量模型模板(templates/capacity-model.md),记录需求假设、容量单位映射、含理由的利用率目标、扩缩容触发条件,以及相关周期内的预测。模板要求填写假设、证据来源、负责人和权衡。
2. 计算单位成本
单位成本是指服务一个需求单位的成本——每个请求的成本、每位用户每月的成本、每 GB 存储的成本,或每个预置容量单位的成本。单位成本将基础设施支出与产品和可靠性决策关联起来。
按以下方式计算单位成本:
unit cost = total cost of capacity / number of demand units served
分子和分母必须在同一时间段内、采用相同范围(服务、团队或平台)进行衡量,并注明相同的分摊方法(直接资源成本、分摊后的共享成本,或包含管理费用的完全成本)。
单位经济性记录模板(templates/unit-economics-record.md)要求填写:单位定义、注明分摊方法的成本分子、注明衡量来源的需求分母、计算得出的单位成本、单位成本与 SLO 的比较(SLO 为 99.9% 和 99.99% 时单位成本有何变化?),以及假设/证据/负责人/权衡部分。模板还包含用于填写单位成本计算公式的结构化字段。
对于多租户服务,不要只使用整个集群的平均值作为单位。加载
references/multi-tenant-capacity-and-unit-cost.md,区分平台基线成本和租户可变成本,然后报告租户成本或资源消耗的分布。租户的可变单位成本可能取决于请求组合、存储、后台工作、突发流量形态、部署位置和套餐权益。共享成本分摊是一种明确的建模选择,并不意味着所有租户都消耗相同份额。
3. 定义预算与配额控制
预算控制是会带来运维后果的支出限制——达到阈值时发出支出警报、阻止进一步支出的硬性上限,以及触及上限时的运维行为(降级、限流或停止)。配额和速率限制机制用于在请求或资源层面实施预算控制。
预算控制分为三个层级:
| 层级 | 机制 | 运维后果 |
|---|---|---|
| 警报 | 支出阈值通知 | 不采取自动操作;触发审核 |
| 软上限 | 限流、降级模式、减少资源预配 | 服务以降低后的容量继续运行 |
| 硬上限 | 速率限制、配额执行、拒绝分配资源 | 超出上限的请求将被拒绝 |
预算控制必须说明每个阈值触发时的情况——运维行为、对用户的影响,以及负责响应的负责人。未定义运维后果的预算阈值是不完整的。
预算/配额决策模板(templates/budget-quota-decision.md)记录:预算负责人、周期、阈值(警报/软上限/硬上限)、配额或速率限制配置、执行机制、每个阈值对应的运维行为、成本归属方法、异常检测触发条件,以及审批记录。
4. 要求提供负载/浸泡测试证据
容量决策必须有负载和浸泡测试证据。 仅有容量模型,而没有系统在有代表性的负载下运行时的实测表现,不足以支持容量声明或扩缩容策略。
- 负载测试是在规定时长内,以目标吞吐量(例如,预期峰值加上 20% 的余量)运行系统,并测量延迟、错误率和资源利用率。
- 浸泡测试是在较长时间内(数小时至数天)以持续负载运行系统,以检测短时负载测试无法发现的缓慢泄漏(内存、文件描述符、连接池、磁盘增长)。
负载/浸泡测试计划模板(templates/load-soak-test-plan.md)记录:测试目标、附有理由说明的目标吞吐量、时长、环境(必须具有代表性——仅在开发环境中测试并不足够)、成功标准(延迟百分位数、错误率、资源利用率)、数据收集计划以及证据记录。模板区分组件级基准测试和端到端测试;容量决策必须说明测试覆盖了哪个边界。
只有建模而没有测试证据,或只有测试而没有模型,都是不完整的。两者都不可或缺。
对于多租户声明,证据必须同时覆盖有代表性的租户配置,包括普通租户、高需求租户、突发型租户,以及相关的层级或部署位置变体。单租户基准测试或全体平均测试无法证明系统能够防范热点租户、分区倾斜或公平性问题。
5. 权衡 SLO 与成本
当满足 SLO 的成本在预测需求下超出预算,或预算限制迫使团队采用低于原定目标的 SLO 时,就会出现 SLO 与成本之间的权衡。这是一项有流程的决策,而非默认接受。
SLO 与成本权衡记录模板(templates/slo-cost-tradeoff-record.md)记录:正在讨论的 SLO、当前达成该 SLO 的成本、需求预测下的预计成本、备选 SLO 及成本对比、选择较低 SLO 时的降级路径、错误预算影响、负责的所有者以及审批记录。模板要求以证据(成本预测、负载测试数据)和明确责任人(谁来决策、谁负责)呈现这项权衡。
场景
增长场景
需求可预测地增长(例如,每月增长 15%)。问题是:现有容量何时会不足,提前满足增长需求需要多少成本?
指导:
- 根据增长率预测未来需求,并给出置信区间。
- 按当前利用率目标建模容量;确定最先达到饱和的资源。
- 计算每一步扩容所需的增量成本。
- 定义扩容触发条件——必须开始配置资源时的利用率阈值(资源预置时间很重要)。
- 记录假设(增长率稳定、没有突变事件、当前利用率模式保持不变)和证据来源。
峰值场景
已知事件将使流量远超基线(产品发布、黑色星期五、季节性峰值)。问题是:峰值期间需要多少容量、成本是多少,以及这笔成本是否合理?
指导:
- 将峰值需求与基线分开建模——描述峰值形态(高度、持续时间、爬升过程),而不只是峰值数值。
- 按峰值而非平均值配置容量,并预留余量。
- 在事件发生前,按预测的峰值吞吐量运行负载测试。没有负载证据的模型并不足够。
- 定义峰值后的缩容计划及其触发条件——峰值过后仍保留容量会造成不必要的成本。
- 如果峰值容量成本超出预算,则为降级后的峰值方案建模(哪些功能会降级,用户会有何体验)。
降级场景
依赖项发生故障,或资源限制迫使系统以低于满负荷的状态运行。问题是:系统在降级模式下是什么样的,核心路径需要多少容量,以及降级运行的成本是多少?
指导原则:
- 对功能分级:核心功能(必须保留)与增强功能(可以舍弃)。降级路径设计请参阅 resilience-and-recovery。
- 为仅运行核心路径的情况建模容量——舍弃增强功能后会释放哪些资源。
- 计算降级运行的成本(成本可能低于满负荷运行,也可能因启用故障转移资源而更高)。
- 定义降级运行的最长时限——降级模式最多能持续多久才需要升级处理。
- 确保在演练日或混沌测试中验证降级容量模型(演练设计请参阅 resilience-and-recovery)。
成本受限场景
预算限制导致无法按理想容量或 SLO 目标配置资源。问题是:在预算范围内,能实现的最佳可靠性和性能是什么?由谁决策?
指导原则:
- 从预算限制开始——明确说明预算上限(按月、季度或年度)。
- 根据当前单位成本,对预算可购买的容量建模。
- 计算该容量可支持的 SLO 和性能目标。
- 与不受限制的理想情况进行比较:需要在 SLO、延迟和吞吐量方面作出哪些取舍。
- 形成一份 SLO 与成本权衡记录,并指定负有责任的负责人。成本优化不得损害可靠性、隐私或用户体验——如果预算无法支持可接受的 SLO,应升级决策,而不是默默接受。
成本优化不能成为损害可靠性、隐私或用户体验的理由。 如果成本限制迫使团队在预算与这些不可妥协的要求之间作出选择,必须连同证据一起将权衡提交给负有责任的负责人;绝不能将其默默接受为一项优化措施。
何时不使用
此技能不提供通用的云成本建议(预留实例、竞价实例、“关闭未使用的资源”、“调整资源规格”、节省计划)。这些属于特定平台的实施策略,应归入 platform-engineering 参考资料或云服务商文档,而不是容量与成本方法论技能。此技能负责的是容量与成本的决策框架和证据标准,而不是一份削减成本的建议清单。
此技能不规定通用的利用率目标。对于流量突发且对延迟敏感的服务,70% 的利用率目标与负载可预测的批处理流水线的 85% 目标并不相同。每个利用率目标都必须说明背景、理由及其依据。没有背景说明的“目标利用率为 70%”并非容量决策,而是猜测。
此技能不允许以成本优化为由损害可靠性、隐私或用户体验。这些要求不可妥协。任何可能违反这些要求的成本受限场景都必须升级处理,而不是绕过限制进行优化。
路由表
| 任务涉及…… | 路由至…… |
|---|---|
| 损益表、融资、SaaS 指标(ARR/流失率/NDR)、定价策略 | financial-modeling |
| 基础设施实现、自动扩缩容、云资源配置、成本分摊标签 | platform-engineering |
| SLO 定义、错误预算策略、事件指挥、值班运维 | site-reliability-engineering |
| 需求测量、流量预测埋点、跟踪计划 | product-analytics-and-measurement |
| 发布决策、跨领域证据整合、上线/不上线/延期/例外 | production-readiness |
| 产品组合容量分配、投注顺序、路线图权衡 | product-roadmapping-and-portfolio |
| 降级路径设计、恢复验证、RTO/RPO 决策、故障演练日 | resilience-and-recovery |
| 需求统计建模、时间序列预测、增长驱动因素的因果推断 | data-scientist |
| 成本数据管道实现、支出数据 ETL、成本仪表板数据模型 | data-engineering |
| 端到端租户语义、控制平面/应用平面、租户模式选择、生命周期或计费交接 | multi-tenant-saas-architecture |
| 租户隔离威胁、授权、特权支持或安全控制 | secure-software-engineering |
| 通用架构边界、拓扑或分解决策 | software-architecture |
文件索引
| 路径 | 加载时机 |
|---|---|
| references/discovery-brief.md | 了解所有权边界以及与相邻技能之间的路由规则时 |
| templates/capacity-model.md | 构建需求到容量的预测模型,并设定利用率目标和扩缩容触发条件时 |
| templates/unit-economics-record.md | 计算单位成本,并将其与 SLO 或需求决策关联时 |
| templates/budget-quota-decision.md | 定义预算阈值、配额限制、速率限制执行方式及运维后果时 |
| templates/load-soak-test-plan.md | 将负载测试或长时间稳定性测试设计或审查为容量证据时 |
| templates/slo-cost-tradeoff-record.md | 利用证据、问责机制和审批流程解决 SLO 与成本之间的权衡时 |
| references/multi-tenant-capacity-and-unit-cost.md | 对租户分布、偏斜、共享/隔离预留容量、层级承诺、准入、公平性证据和成本分配进行建模时 |
| templates/tenant-capacity-model.md | 记录租户配置文件、分区行为、预留容量、配额/准入证据和随租户变化的单位成本时 |
| references/source-index.md | 查看本方法论的公开来源及原创内容边界时 |