name: fifteen-factor-app description: 十五要素应用方法论,用于现代云原生SaaS应用程序。此技能应在规划SaaS工具、产品软件架构、微服务设计、PRPs/PRDs或云原生应用开发时自动调用。扩展了原始的十二要素应用原则,新增了三个额外要素(API优先、遥测、安全)。触发关键词包括“十五要素”、“十二要素”、“SaaS架构”、“云原生设计”、“应用架构”、“微服务最佳实践”,或在规划/架构会议中。 user-invocable: false
十五要素应用方法论
概述
十五要素应用方法论扩展了原始的十二要素应用原则(由Heroku于2012年创建),新增了三个对现代云原生应用至关重要的要素:API优先、遥测和安全。
此方法论提供了构建软件即服务应用程序的架构原则和指南,这些应用程序具有以下特点:
- 高性能 - 优化速度和效率
- 可扩展 - 设计用于水平扩展而无需重大更改
- 易管理 - 易于部署、监控和维护
- 弹性 - 稳健应对故障,具备优雅降级
何时应用此方法论
在以下情况应用十五要素原则:
- 架构规划 - 设计新应用程序或微服务时
- PRP/PRD创建 - 记录技术需求和规范时
- 代码审查 - 评估实现是否遵循最佳实践时
- 迁移规划 - 将遗留应用程序现代化以用于云部署时
- 技术债务评估 - 识别架构改进时
十五要素一览
| 要素 | 原则 | 关键概念 |
|---|---|---|
| I. 代码库 | 一个代码库,多个部署 | 每个应用单一仓库,版本控制 |
| II. 依赖项 | 明确声明和隔离 | 无隐式系统级包 |
| III. 配置 | 存储在环境中 | 永不硬编码配置 |
| IV. 后端服务 | 视为附加资源 | 数据库、缓存是可交换资源 |
| V. 构建、发布、运行 | 严格分离 | 不可变发布,无运行时更改 |
| VI. 进程 | 无状态且无共享 | 水平扩展,无粘性会话 |
| VII. 端口绑定 | 通过端口导出 | 自包含,无运行时注入 |
| VIII. 并发性 | 通过进程模型扩展 | 水平扩展优于垂直扩展 |
| IX. 可处置性 | 快速启动,优雅关闭 | 最大化稳健性 |
| X. 开发/生产一致性 | 保持环境相似 | 持续部署 |
| XI. 日志 | 视为事件流 | 将生成与处理分离 |
| XII. 管理进程 | 作为一次性进程运行 | 与应用相同环境 |
| XIII. API优先 | 先设计合同 | 启用并行开发 |
| XIV. 遥测 | 监控一切 | APM、健康检查、领域指标 |
| XV. 安全 | 认证与授权 | RBAC、每请求身份 |
架构检查清单
创建PRP、PRD或架构计划时,针对每个要素评估设计。使用此检查清单进行快速验证:
□ 单一代码库在版本控制中
□ 所有依赖项明确声明
□ 配置外部化到环境
□ 后端服务抽象化并可交换
□ 构建、发布、运行阶段分离
□ 无状态进程(无粘性会话)
□ 服务自包含,具备端口绑定
□ 设计用于水平扩展
□ 快速启动和优雅关闭
□ 开发/测试/生产环境对齐
□ 日志流式传输到外部聚合器
□ 管理任务自动化且可重复
□ API合同在实现前定义
□ 遥测:APM、健康检查、指标
□ 安全:认证和授权
资源
每个要素的详细文档可在参考资料目录中找到:
references/overview.md- 完整要素摘要和图表references/original-factors.md- 要素I-XII及实现示例references/modern-extensions.md- 要素XIII-XV(API优先、遥测、安全)references/setup-and-tools.md- 工具推荐和快速启动
阅读相应的参考资料文件以获取特定要素的详细指导。