返回文章列表

平台工程与内部开发者平台:把工程复杂度做成 Golden Path

解释 DevOps、SRE 与平台工程的关系,并从服务目录、自服务门户、模板、权限、成本和治理出发设计内部开发者平台。

第 21 章:平台工程与内部开发者平台

本章的问题链

先看原始问题:当每个业务团队都自己拼 CI、监控、权限、模板、脚手架和发布规范,组织会重复建设,也会出现标准不一、风险不一、成本不可见和新人上手困难。

为了解决这个问题,本章用内部开发者平台、Golden Path、服务目录、模板、自助能力、权限治理和成本治理,把常见工程路径产品化,让团队以更低认知负担交付系统。

但这不是终点:平台把交付路径统一起来,不代表系统天然健康。新的问题是:系统出了问题时,团队能不能看见、定位、解释和验证真实因果。

所以本章会按“问题 -> 机制 -> 新问题”的顺序展开:先把眼前的工程压力说清楚,再看对应机制解决了什么,最后讨论它留下的边界和下一步。

平台工程与内部开发者平台:把工程复杂度做成 Golden Path flow 1

1. 本章解决什么问题

当组织只有几个服务时,每个团队自己写脚手架、自己搭 CI、自己申请数据库、自己配置监控,问题还不明显。服务数量变多以后,这种自由会变成系统性摩擦:

新服务创建要两周; 开发者不知道应该用哪个模板; 服务没有 owner; 告警没人接; 权限申请靠聊天记录; 每个团队的日志字段都不一样; 安全扫描、成本标签、SLO、Runbook 都靠人工提醒; 平台团队被工单淹没,开发团队觉得平台是在“挡路”。

平台工程的目标不是新建一个运维审批部门,而是为开发团队提供自助、安全、标准化、可治理的 Golden Path。CNCF 平台工程白皮书把平台描述为面向内部客户的一组集成能力,目标包括降低认知负担、提升可靠性与韧性、降低安全合规风险、改善成本使用,并强调平台应以产品方式建设,提供自服务、文档、模板和安全默认值。(tag-app-delivery.cncf.io)


2. DevOps、SRE 与平台工程的关系

这三个词经常被混用,但它们解决的问题不同。

概念核心关注典型产出
DevOps打破开发与运维割裂,提升交付协作文化、流程、自动化
SRE用工程方法管理可靠性SLO、错误预算、值班、自动化运维
Platform Engineering把共性工程能力产品化IDP、Golden Path、自服务平台

平台工程不是 DevOps 的替代品,也不是 SRE 的替代品。更准确地说,平台工程把 DevOps 和 SRE 中可复用、可产品化的部分沉淀为平台能力,让业务团队少做重复、低差异化、高风险的基础工作。

平台团队服务的对象不是机器,而是开发团队。好的平台不是“你必须按我说的做”,而是“这条路最快、最安全、最省心;你可以偏离,但要理解代价”。


3. 核心概念

3.1 Internal Developer Platform

内部开发者平台,简称 IDP,不一定是一个单一产品。它通常是一组能力的组合:

  • 服务目录。
  • 项目模板。
  • CI/CD。
  • 制品库。
  • 环境管理。
  • Kubernetes 或 Serverless 运行时。
  • 数据库、缓存、消息队列申请。
  • 权限和密钥管理。
  • 可观测性默认接入。
  • 成本标签和预算。
  • 安全扫描。
  • Runbook 和文档。
  • Scorecard。
  • On-call 归属。

Backstage 是常见的开发者门户框架,官方文档强调它通过软件目录集中跟踪服务所有权和元数据,并把基础设施工具、服务和文档统一到开发者门户中。(Backstage)

3.2 Golden Path

Golden Path 是平台为常见场景提供的推荐路径。例如“创建一个 Java HTTP 服务”:

选择模板
  -> 生成仓库
  -> 默认 CI
  -> 默认 Dockerfile
  -> 默认 Kubernetes 部署
  -> 默认日志/指标/Trace
  -> 默认安全扫描
  -> 默认 SLO 模板
  -> 默认 Runbook
  -> 一键申请测试环境
  -> 灰度上线生产

Golden Path 不是强制所有人只能走一条路,而是让 80% 常见场景走得足够顺滑。少数特殊场景可以偏离,但偏离必须承担更多设计评审和运维责任。

3.3 IaC、GitOps 与控制面

Terraform 和 Pulumi 代表了基础设施即代码的两种常见方式:前者强调声明式配置和 plan/apply 工作流,后者使用通用编程语言表达基础设施。Crossplane 则把外部云资源抽象为 Kubernetes 风格的控制面对象,用于平台团队构建自服务能力。(HashiCorp Developer)

GitOps 的核心原则包括声明式、版本化不可变、自动拉取和持续调和;Argo CD 和 Flux 是 Kubernetes 场景中常见的 GitOps 交付工具。(OpenGitOps)


4. 平台能力架构

                  +----------------------+
                  | Developer Portal     |
                  | Backstage / CLI / API|
                  +----------+-----------+
                             |
            +----------------+----------------+
            |                                 |
            v                                 v
+----------------------+          +----------------------+
| Service Catalog      |          | Golden Path Templates|
| owner/SLO/runbook    |          | service/job/consumer |
+----------+-----------+          +----------+-----------+
           |                                 |
           v                                 v
+----------------------+          +----------------------+
| CI/CD & Artifact     |          | IaC / Control Plane  |
| build/test/scan      |          | Terraform/Crossplane |
+----------+-----------+          +----------+-----------+
           |                                 |
           v                                 v
+----------------------+          +----------------------+
| Runtime Platform     |          | Data/Messaging       |
| K8s/Serverless       |          | DB/cache/queue       |
+----------+-----------+          +----------+-----------+
           |                                 |
           +----------------+----------------+
                            v
                  +----------------------+
                  | Built-in Governance  |
                  | security/cost/obs    |
                  +----------------------+

这个架构里最重要的是:平台能力应该通过门户、API、模板和自动化暴露,而不是通过工单和人工群聊暴露。


5. 从零建设内部开发者平台的路线图

阶段 0:识别痛点,而不是先买工具

先回答:

  • 开发者最痛的 5 个流程是什么?
  • 创建一个服务平均要多久?
  • 申请数据库要多久?
  • 新服务上线前最常漏掉什么?
  • 事故中最常找不到什么信息?
  • 平台团队工单最多来自哪里?

如果没有这些问题,先搭门户往往会变成“漂亮但没人用的首页”。

阶段 1:服务目录与 ownership

最小平台能力不是 Kubernetes,也不是门户,而是服务目录:

字段说明
service name服务名
owner team负责团队
pager值班入口
repository代码仓库
runtime运行环境
dependencies依赖服务
SLO服务目标
dashboard监控面板
runbook故障处理文档
cost center成本归属
data classification数据敏感级别

没有服务目录,事故中连“谁负责这个服务”都要靠猜。

阶段 2:一条 Golden Path

不要一开始覆盖所有语言、所有框架、所有部署模式。先选一个高频场景,例如:

  • Java/Spring Boot HTTP 服务。
  • Go gRPC 服务。
  • Node.js BFF。
  • Kafka Consumer。
  • 定时 Job。

把这条路径做到足够好:创建仓库、默认依赖、CI、部署、监控、日志、Trace、安全扫描、SLO、Runbook、成本标签,一次性打包。

阶段 3:自服务资源申请

把常见资源变成自服务:

  • 测试环境。
  • 数据库。
  • 缓存。
  • 消息 Topic。
  • 对象存储 Bucket。
  • Secret。
  • 权限。
  • 域名。
  • Feature Flag。
  • Dashboard。

自服务不是“没人管”,而是把策略内建进去:命名规范、配额、权限、审批条件、成本标签、审计日志。

阶段 4:内建治理

把安全、合规、成本和可观测性放进 Golden Path:

  • 镜像扫描默认开启。
  • 高危依赖阻断发布。
  • Secret 不允许明文进入 Git。
  • 所有服务必须有 owner 和 on-call。
  • 所有生产资源必须有成本标签。
  • 所有服务默认输出结构化日志、指标和 Trace。
  • 新服务必须定义最小 SLO。
  • 高风险权限申请需要审批和过期时间。

阶段 5:平台产品化

平台团队要像产品团队一样运营平台:

  • 有用户访谈。
  • 有路线图。
  • 有版本发布说明。
  • 有 SLA/SLO。
  • 有支持渠道。
  • 有文档和 onboarding。
  • 有弃用策略。
  • 有平台自身的可观测性。

平台不是一次性项目,而是一个内部产品。


6. 服务从创建到上线的 Golden Path 示例

1. 开发者进入门户
2. 选择“HTTP API 服务”模板
3. 填写服务名、团队、语言、数据等级、SLO
4. 平台生成:
   - Git 仓库
   - README
   - Dockerfile
   - CI pipeline
   - Kubernetes manifests
   - OpenTelemetry SDK 初始化
   - 日志字段规范
   - 健康检查接口
   - Runbook 模板
   - Dashboard 模板
5. 开发者申请测试数据库
6. Crossplane/Terraform 创建资源
7. CI 通过测试、扫描、构建镜像
8. GitOps 部署到测试环境
9. 契约测试和压测通过
10. 创建生产发布申请
11. 灰度 5% 流量
12. SLO 和护栏指标正常
13. 全量发布
14. 服务进入服务目录和成本看板

平台在这里并没有替开发者写业务逻辑,而是把“每个服务都应该有的工程能力”提前铺好。


7. 平台能力地图

能力域基础能力成熟能力
服务创建模板、脚手架多语言 Golden Path
服务目录owner、repo、dashboard依赖图、风险评分
CI/CD构建、测试、发布渐进式交付、自动回滚
运行时K8s/Serverless多集群、多区域
数据资源DB/cache/queue 申请配额、备份、成本归因
安全扫描、Secret 管理Policy as Code、准入控制
可观测性默认日志指标 TraceSLO、Burn Rate、因果诊断
成本标签、预算单服务/租户成本
文档README、Runbook自动校验、过期提醒
开发者体验Portal、CLI个性化推荐、反馈闭环

8. 平台团队成功指标表

指标含义风险
新服务首次上线时间从创建到生产的耗时只追速度可能牺牲质量
自服务完成率资源申请无需人工比例过度自服务可能绕过治理
Golden Path 采用率多少服务走推荐路径强制使用会引发抵触
平均发布频率团队交付能力需结合失败率看
变更失败率发布导致故障比例定义需统一
平均恢复时间故障恢复能力不能只看平台故障
服务目录完整率owner、SLO、Runbook 覆盖率信息可能过期
平台满意度开发者体验主观指标需结合行为
成本归因覆盖率资源是否能归属团队标签质量很关键
安全策略违规率违反基线次数过多阻断会降低效率

好的平台指标应该同时看效率、可靠性、安全、成本和体验。


9. 如何避免平台变成新的工单中心

平台变成工单中心通常有几个原因:

  • 平台能力没有 API。
  • 门户只是提交表单,背后仍是人工。
  • 平台规则不透明。
  • 文档过时。
  • Golden Path 不好用,团队只能绕开。
  • 平台团队只关注资源交付,不关注开发者完整旅程。
  • 平台缺少产品经理或用户反馈机制。

改进方式:

  1. 把高频请求 API 化。 例如数据库申请、Topic 创建、权限申请。

  2. 把审批变成策略。 低风险自动通过,高风险进入审批。

  3. 把文档和模板绑定。 模板生成的服务天然带有最新文档和 Runbook。

  4. 提供逃生通道。 特殊团队可以偏离 Golden Path,但需要 ADR 和评审。

  5. 平台自身有 SLO。 如果平台发布系统挂了,所有业务团队都被阻断。平台也必须被当成生产系统。


10. IDP 设计 Checklist

  • 平台要解决的前三个开发者痛点是什么?
  • 是否有服务目录和 ownership?
  • Golden Path 覆盖了哪些高频场景?
  • 平台能力是否可通过 API/CLI/Portal 自服务?
  • 是否有权限、成本、安全、审计默认策略?
  • 是否支持多环境一致性?
  • 是否能自动生成 CI/CD、监控、Runbook?
  • 是否有资源配额和成本归因?
  • 是否支持团队偏离 Golden Path 的评审流程?
  • 平台自身是否有 SLO、告警和值班?
  • 是否衡量平台采用率、满意度和交付效率?
  • 是否有弃用策略和版本兼容策略?
  • 平台团队是否定期访谈内部用户?
  • 是否避免把所有东西塞进一个“万能门户”?

11. 常见误区

误区一:平台工程就是买 Backstage。 门户只是入口。没有服务目录、模板、自服务、策略和运维能力,门户只是导航页。

误区二:平台越统一越好。 过度统一会压制业务差异。Golden Path 应该覆盖主流场景,而不是消灭所有差异。

误区三:平台团队是高级运维工单组。 平台团队应该提供产品化能力,而不是长期人工代办。

误区四:开发者体验只看界面好不好看。 真正的体验是从创建服务到上线、观测、排障、下线的完整路径。

误区五:平台只服务开发效率。 平台同时是安全、合规、成本和可靠性的落地点。


12. 本章小结

平台工程把组织中反复出现的工程能力沉淀为自服务、标准化、可治理的平台。它的价值不是工具堆叠,而是降低开发者认知负担,内建安全、成本和可观测性,让团队沿着 Golden Path 更快、更稳地交付。平台团队必须把平台当成产品运营,而不是把自己变成新的审批中心。


13. 本章最重要的 5 个判断

  1. 平台工程服务的是开发团队,不是工具清单。
  2. Golden Path 的目标是降低认知负担,而不是消灭所有技术自由。
  3. 服务目录和 ownership 是平台能力的地基。
  4. 自服务必须和策略、审计、成本、安全绑定。
  5. 平台自身也是生产系统,必须有 SLO、值班和产品路线图。