SuperAPI AI 工具集

system-design

编程与开发

查看项目

更新于 10-16 06:02

技能介绍

用途

System Design 技能用于定义系统的高层结构:组件、职责、通信方式以及运行位置。它把需求与领域知识转化为技术蓝图,在编写代码之前完成架构决策。在规格驱动的工作中,系统设计通常从已评审的规格包开始;在敏捷和遗留系统改造中,可能从已评审但仍有未决问题的需求文档开始。该技能强调不要静默“修复”需求歧义,而应将未解决的范围、兼容性和质量边界问题保留为设计约束或架构开放问题。

主要能力

该技能提供一套结构化的架构设计流程,包括:

  1. 识别架构驱动因素:提取 5-7 个影响架构的质量属性,按重要性排序,并用表格记录刺激、响应、度量、排名和来源/假设。
  2. 选择架构风格:根据驱动因素选择单体、微服务、无服务器、事件驱动或混合风格,并评估每种候选风格的可逆性与退出成本。
  3. 定义组件边界:使用 C4 模型自上而下工作,包括上下文级、容器级、组件级,代码级推迟到实现阶段。对遗留系统改造,明确标识必须保留的遗留组件、需要共存或路由接缝的位置,以及因迁移规则未定而有意推迟的边界。
  4. 设计通信模式:为每个组件间交互决定同步或异步、请求/响应或发布/订阅或命令/查询、数据格式与契约、失败处理方式。
  5. 记录部署拓扑:定义每个容器的运行位置,包括云提供商与区域策略、容器编排或无服务器平台、网络边界、数据驻留与合规约束。
  6. 创建架构决策记录(ADR):为每个重要决策编写 ADR,包含标题、状态、上下文、考虑过的选项、决策、后果和适应度函数。
  7. 进行权衡分析:记录每个重大决策的收益、牺牲、团队运营能力、生态或集成风险、退出成本以及重新考虑该决策的触发条件。
  8. 定义架构适应度函数:为每个高排名质量属性和难以逆转的决策定义至少一个可度量的适应度函数,并指定检查内容、阈值或通过/失败规则、运行时机和证据负责人。

使用方式

该技能以技能包形式分发,公共安装面为 skills/.curated,规范编写源为 skills/02-architecture/system-design/SKILL.md,通过 npx skills add/update 兼容方式导出。输入包括:

  • requirements-doc(最低必需输入):带优先级排序的功能与非功能需求、范围边界和未决问题。
  • spec-doc(可选增强输入):规格驱动或瀑布式工作产生的详细规格。
  • domain-model(可选增强输入):当领域复杂度足以让实体边界或通用语言影响组件边界时使用。

输出包括:

  • architecture-doc:涵盖排序后的质量属性表、架构风格、组件边界、通信模式、部署拓扑、重要 ADR 以及验证最重要决策的适应度函数的书面文档,必须能被任何新加入团队的开发者理解。
  • component-diagram:上下文、容器和组件级别的 C4 图,使用支持版本控制的工具(Structurizr DSL、Mermaid、PlantUML)。

适用场景

适用于已评审的需求或规格就绪,团队需要决定高层架构、组件边界、集成接缝或部署拓扑的场景。也适用于规格驱动、敏捷和遗留系统改造等不同工作方式。该技能与 spec-writing、domain-modeling、api-design、data-modeling、security-design、tech-selection、task-breakdown 等相关技能配合使用。

限制

该技能包含质量门禁,要求架构评审至少由两名评审人完成、存在带刺激/响应/度量/来源字段的排序质量属性表、所有重要决策记录为 ADR、组件边界与领域限界上下文对齐、明确记录质量属性权衡、难以逆转的决策包含可逆性或退出成本讨论、顶级驱动因素存在适应度函数或缺失证据已分配负责人、部署拓扑考虑失败模式、存在上下文/容器/组件级 C4 图、组件间无循环依赖。

该技能还列出反模式,包括:简历驱动架构、大设计前置、分布式单体、忽视“-ilities”、架构航天学、意外关闭开放问题、没有退出故事的不逆转赌注。

包装稳定性为 beta,能力就绪度为 beta。参考材料 decision-examples 提供架构风格比较和 ADR 示例。