mcpField
C
capacity-and-cost-engineering

capacity-and-cost-engineering

github.com/magnus919云与 DevOps15365 次安装今天更新
代码仓库

关于 capacity-and-cost-engineering

capacity-and-cost-engineering 是面向容量规划与成本决策的技能,帮助工程团队结合需求、性能、可靠性和支出制定有证据支持的方案。它通过模型、负载测试和结构化记录明确成本与 SLO 等目标之间的权衡。

主要功能

  1. 01连接需求、性能、可靠性与支出
  2. 02建立容量模型并设定扩缩触发条件
  3. 03计算基础设施单位成本
  4. 04定义预算阈值、配额与限流后果
  5. 05要求负载及浸泡测试作为容量证据
  6. 06记录 SLO 与成本的权衡

适用场景

  1. 01根据增长预测规划容量与支出
  2. 02为发布或季节性峰值确定资源规模
  3. 03制定预算告警、软上限和硬上限
  4. 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.md
evals/
evals.json
references/
discovery-brief.md
multi-tenant-capacity-and-unit-cost.md
source-index.md
templates/
budget-quota-decision.md
capacity-model.md
load-soak-test-plan.md
slo-cost-tradeoff-record.md
tenant-capacity-model.md
unit-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%)。问题是:现有容量何时会不足,提前满足增长需求需要多少成本?

指导:

  1. 根据增长率预测未来需求,并给出置信区间。
  2. 按当前利用率目标建模容量;确定最先达到饱和的资源。
  3. 计算每一步扩容所需的增量成本。
  4. 定义扩容触发条件——必须开始配置资源时的利用率阈值(资源预置时间很重要)。
  5. 记录假设(增长率稳定、没有突变事件、当前利用率模式保持不变)和证据来源。
峰值场景

已知事件将使流量远超基线(产品发布、黑色星期五、季节性峰值)。问题是:峰值期间需要多少容量、成本是多少,以及这笔成本是否合理?

指导:

  1. 将峰值需求与基线分开建模——描述峰值形态(高度、持续时间、爬升过程),而不只是峰值数值。
  2. 按峰值而非平均值配置容量,并预留余量。
  3. 在事件发生前,按预测的峰值吞吐量运行负载测试。没有负载证据的模型并不足够。
  4. 定义峰值后的缩容计划及其触发条件——峰值过后仍保留容量会造成不必要的成本。
  5. 如果峰值容量成本超出预算,则为降级后的峰值方案建模(哪些功能会降级,用户会有何体验)。
降级场景

依赖项发生故障,或资源限制迫使系统以低于满负荷的状态运行。问题是:系统在降级模式下是什么样的,核心路径需要多少容量,以及降级运行的成本是多少?

指导原则:

  1. 对功能分级:核心功能(必须保留)与增强功能(可以舍弃)。降级路径设计请参阅 resilience-and-recovery。
  2. 为仅运行核心路径的情况建模容量——舍弃增强功能后会释放哪些资源。
  3. 计算降级运行的成本(成本可能低于满负荷运行,也可能因启用故障转移资源而更高)。
  4. 定义降级运行的最长时限——降级模式最多能持续多久才需要升级处理。
  5. 确保在演练日或混沌测试中验证降级容量模型(演练设计请参阅 resilience-and-recovery)。
成本受限场景

预算限制导致无法按理想容量或 SLO 目标配置资源。问题是:在预算范围内,能实现的最佳可靠性和性能是什么?由谁决策?

指导原则:

  1. 从预算限制开始——明确说明预算上限(按月、季度或年度)。
  2. 根据当前单位成本,对预算可购买的容量建模。
  3. 计算该容量可支持的 SLO 和性能目标。
  4. 与不受限制的理想情况进行比较:需要在 SLO、延迟和吞吐量方面作出哪些取舍。
  5. 形成一份 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查看本方法论的公开来源及原创内容边界时

评论

支持 Markdown