平台到底是什么概念

一般定义

平台能为产品团队提供可复用能力支撑(赋能),它是一个操作环境,可以让产品团队在其上把产品特性快速交付到客户手中。ThoughtWorks开发出一个五维模型来描述平台的重要特征:

  • 支持端到端交付的基础设施
  • API和架构自愈
  • 提供自助服务
  • 支持实验的基础设施
  • 提供用户触点技术

先来看看什么不是一个平台

按技术领域划分团队

有的企业花大力气构建自动化能力,但是往往会根据技术划分团队。比如,负责中间件管理的团队,负责操作系统管理的团队,负责DB管理的团队,负责LB管理的团队,另外还会有一个专门负责自动化的效能团队,往往能力上只是负责编排。

这些团队,每个都在自己的管理架构下有独立的工作方式,每个团队都在各自的技术领域范围内实现高效率管理,集中专业化,外包非差异化功能,应用治理,并降低成本。但就是没人去衡量客户需求端到端的交付效率。

一个客户需求的交付往往穿越多个团队,端到端交付效率极差。

时间长了,产品和基础设施的质量逐渐下降。环境和配置上会出现很多细微的不一致。产品团队不得不降低交付速度,减少一次交付包含的特性。甚至不敢去做任何改动较大的提升动作或重构动作,而这些动作本来是用来改善问题的。

彼此依赖的待办事项

一个特性的交付往往在一个团队内无法独立完成,于是一个团队的待办事项会依赖其他团队的待办事项,彼此耦合。而往往不同团队有不同的目标,各自的待办事项优先级不同。于是一个团队的待办事项无法落地的原因往往就是依赖另一个团队的待办事项,而另一个团队迟迟不能完成。这就造成了团队之间的隔阂和互相之间的不信任,甚至扯皮、推诿,丧失责任感和创造力。最终使端到端交付的效率变得极低。

显然,一个好的平台的一个重要特征是,他必须能减少待办事项耦合。该平台必须能够支持自助服务。

什么是一个平台

AWS就是一个平台。

如何构建一个平台

  1. 调整组织架构,给每个产品团队增加5%的运维职责,节省平台团队200%的运维职责。"you build it, you run it."
  2. 平台自己也要承担从开发到运行的所有责任,避免平台自身的开发团队只管开发,运维团队管运行。同样要坚守:"you build it, you run it."
  3. 划清平台和产品团队的职责边界,产品团队负责自己产品的构建,部署,监控等;平台团队负责平台的构建,部署,监控等;设计抽象,对外暴露自助服务;平台不应该关心它上面跑的是什么业务,产品不应该关心平台使用的技术。
  4. 除了提供API之外,还要提供文档,guideline, template code, on call, 布道等。
  5. 最初落地时不知道需要提供哪些能力,可以从产品团队了解需求,从解决最迫切的需求开始。