平台工程与内源:大规模构建开发者社区
Backstage 时刻:真正的工作才刚刚开始 #
你的组织做到了。你们成功实施了 Backstage。你们在技术大会上分享了平台工程转型的经验。你们展示了开发者门户如何让整个工程组织的一切都变得可见。你们完成了所有既定目标。
但这里有一个不太舒服的事实:实施 Backstage 并不意味着你已经"完成"了平台工程——这意味着你终于到达了起跑线。
平台工程不等于 Backstage,就像它也不等于任何特定的工具或解决方案。虽然每个人在理性上都明白这一点,但组织仍然不断陷入同样的陷阱:他们关注技术而忽视了文化。
共享平台的循环失败模式 #
在深入探讨平台工程真正需要什么之前,让我们先承认一个显而易见的事实:历史上大多数共享平台和通用库都失败了。这不是秘密——这是一个有据可查的模式,而平台工程正是要解决这个问题。
但它们为什么会失败?答案总是遵循以下两种可预测的模式之一:
模式1:服务台陷阱 你的平台团队变成了一个服务台,被组织中每个团队的功能请求、通用需求和依赖管理所淹没。相互冲突的需求不断涌入,迫使你要么为每个用例成为定制开发商店,要么眼睁睁看着你的平台分叉成无法维护的分支。长期维护周期加剧了这个问题——你不仅要构建功能,还要维护一个随时间变得越来越复杂的定制实现动物园。
模式2:象牙塔 当请求洪流变得不堪重负时,平台团队开始说"不"。他们拒绝用户需求,拒绝适应边缘案例,坚持要求团队按原样使用平台。结果如何?团队开始构建自己的解决方案。共享平台变得无关紧要。游戏结束。
这些失败不是结构性的——而是文化性的。拥有花哨的门户和复杂的工具并不能解决根本问题:如何在平台提供者和平台消费者之间建立协作的、可持续的关系?
缺失的文化实施 #
想想你当前的 GitHub 设置。它可能作为你组织的默认"门户"——一个可以发现仓库、通过问题协作和访问文档的单一场所。当你有100个仓库时,你不需要 Backstage。GitHub 就足够了。但当你扩展到数千个仓库时,你需要那个额外的组织和发现层。
同样的原则适用于平台工程。基础设施和工具仅仅是基础。你真正在构建的是一个开发者社区——而社区需要有意识的文化实践,而不仅仅是更好的工具。
这就是平台工程与基础设施即代码原则强有力交叉的地方。平台工程涉及模板生成、标准化部署和自动化配置——所有这些概念都与将基础设施视为软件的理念相一致。但与传统的 IaC 不同,平台工程还必须解决人的因素:开发者如何发现可用的内容?他们如何请求更改?他们如何贡献改进?
向云供应商学习:开发者社区手册 #
这里有一个改变一切的视角转变:作为一个平台团队,你本质上是在运营一个内部云供应商。你正在将 AWS、Azure 和 GCP 的复杂性——包括它们数百上千的服务——提炼成一个简化的、企业级的平台,让你的开发者可以轻松部署。
那么云供应商是如何与开发者沟通的?通过 GitHub。通过文档仓库。通过 GitHub Discussions。通过开源组件和透明的问题跟踪。通过保存和可搜索的线程对话。通过让社区反馈驱动产品决策的投票机制。
在我在微软担任云架构师期间,我亲身经历了这一点。最终,客户声音驱动一切。产品团队迫切希望了解用户痛点,验证问题是否影响众多用户,并衡量业务影响。有时这涉及手动信息收集和客户提名流程,但越来越多地,它类似于开放论坛模式,大量用户对功能进行投票,产品团队直接参与公开讨论。
这不是巧合——这是大规模开发者产品的成熟模式。
内源:文化桥梁 #
内源为平台工程成功提供了缺失的文化框架。这不是关于开放所有内部代码或期待组织中的神奇贡献。这是关于逐步转向更开放、透明、协作的环境。
内源实现了平台工程所需的协作文化。它使拉取请求和透明讨论成为常态而不是例外。最重要的是,它创造了一个工程师既可以作为贡献者又可以作为消费者茁壮成长的环境。
这对平台团队为什么重要:你的客户是内部开发者——他们说代码语言,理解 GitHub 工作流程,并且可以对平台开发做出有意义的贡献。与内部开发者社区沟通的方法从根本上不同于为终端用户产品设计的敏捷方法。
你的平台用户通过源代码管理系统进行沟通。他们具有技术背景。他们可以贡献代码、文档和有意义的改进。内源提供了利用这种能力的成熟模式。
团队拓扑和协作模式 #
《Team Topologies》这本在讨论平台工程时人人都会引用的畅销书概述了团队之间的各种协作模式。但这里有一个关键见解:并非所有团队类型都能同等受益于内源方法。
平台团队和内源:完美匹配 平台团队在大多数组织中具有最高的依赖关系。当一个库被100人使用时,协作开发使所有100个用户受益。它防止重复发明,减少审查负担,并创造规模经济。这种高依赖、高重用模式使内源对平台团队特别有价值。
流对齐团队:较少自然契合 流对齐团队按设计具有完全独立的领域知识和最小的跨团队依赖。流对齐团队之间的协作自然受限,因为它们被优化为独立性。当存在依赖关系时,它们更可能是消费者-提供者关系,而不是协作开发关系。
这种区别很重要。平台团队自然受益于内源,因为它们反映了成功开源项目的动态:高重用、多样化贡献者和共享维护收益。
AI 时代:通过更好的信息架构增强平台工程 #
随着我们进入 AI 时代,平台工程变得更加重要——内源原则也变得更加有价值。原因如下:
AI 辅助平台开发 与其让人类立即响应用户问题,平台可以将初始分类和解决方案尝试分配给 AI 系统。但这需要 AI 可以理解的信息架构:GitHub 仓库中的整合信息、清晰的文档、完整的问题历史和标准化模板。
理想的用户旅程变成:通过门户发现平台功能 → 遇到问题 → 创建 GitHub 问题 → 平台团队将问题分配给 AI 进行初始分析 → 人工审查和实施。这个流程只有在所有相关信息——文档、对话历史、相关工单——都以 AI 可访问的格式存在时才能工作。
信息整合挑战 我理解这些限制。不是每个人都有 GitHub Enterprise 许可证。源代码可能托管在内部博客或 AWS CodeCommit 上。相关文档可能存在于 Google Docs 中。各种通信渠道可能分散在 Slack、Discord 和其他平台上。
但这里有一个关键见解:为适应这些限制而实施的每一个变通方案都会增加平台团队的运营负担。多个通信渠道创造了碎片化的对话。分散的信息降低了可追溯性。不一致的工作流程导致重复和混乱。
虽然 AI 并没有从根本上改变平台团队需要做什么,但它使你的信息架构质量变得比以往任何时候都更加重要。AI 可以显著减少解决常见平台问题所需的努力——但前提是你已经为 AI 消费构建了信息结构。
实际实施:平台团队的四个内源原则 #
1. 开放性:使项目可发现和可贡献 #
你的平台组件需要的不仅仅是可用——它们需要可访问以供贡献。仅仅在 Backstage 中注册仓库是不够的。每个仓库都需要清晰的文档,说明谁在维护它、如何贡献、在哪里报告错误以及如何请求功能。
没有这种透明度,团队就无法与你的平台组件进行有意义的互动。他们变成了消费者而不是协作者,重现了不可持续的服务台动态。
2. 透明度:可见的决策制定 #
透明度意味着不仅要记录你的平台提供什么,还要记录为什么做出设计决策。当你提供 GitHub Actions 模板或部署管道时,用户需要理解其设计背后的原因、它是否适合他们的用例,以及他们是应该贡献改进还是创建定制版本。
封闭的决策制定会导致不明智的分叉、重复解决方案和平台生态系统的混乱。
3. 优先的指导:规模化的开发者入职 #
平台团队服务于开发者社区。你的"客户"需要入职流程、贡献指南和明确的参与途径。这不是关于管理外部贡献者——而是关于创建可持续的方式让内部团队参与并改进你的平台。
4. 自愿的代码贡献:社区驱动的平台演进 #
目标不是让平台团队处理每个请求。而是创造条件,让用户可以将改进贡献回平台。这需要文化变革:平台组件需要设计为可外部贡献,而不仅仅是消费。
超越工具:创建可持续的开发者社区 #
使用 GitHub 不会自动创建内源。共享代码不会自动创建社区。重要的是双向贡献和协作文化。
没有社区的平台工程只是向开发者提供解决方案的另一种方式,而不是与他们一起构建。最成功的平台团队创建的生态系统具有以下特点:
- 用户将模板和工具贡献回平台
- 功能请求成为协作开发机会
- 知识共享通过透明流程自然发生
- 平台演进由实际用户需求驱动,而不是平台团队的假设
前进的道路:从小处着手,构建社区 #
你不需要一夜之间转变整个组织。从一个平台组件开始。使其真正开放以供贡献。不仅要记录如何使用它,还要记录如何改进它。为用户反馈和贡献创建清晰的途径。
建立你的核心粉丝基础——那些成为你的平台方法真正倡导者的开发者。使他们能够对平台演进做出有意义的贡献。
大规模平台工程不是关于构建更好的工具——而是关于在这些工具周围构建更好的社区。内源提供了在企业约束内创建这些社区的成熟模式。
最成功的平台团队明白他们不仅仅是基础设施提供者——他们是社区建设者,促进具有共同需求并可以为共同解决方案做出贡献的开发者之间的协作。
你的平台工程之旅不会在部署 Backstage 时结束。它始于你开始构建将随时间持续和发展你的平台的协作文化时。