Skip to main content

Command Palette

Search for a command to run...

这叫平台工程吗

Updated
1 min read

本文主要内容来自于 2023 年大连 Kubernete Community Day 的演讲《集群多还是多集群?——云原生平台工程探索》

第一页——听说 DevOps 死了

2022 年底,InfoQ 发了一篇爆款文,《DevOps 已死,平台工程才是未来》,这里总结了一个太长不看版:

  • 开发者并不想做运维,工程师不仅编写代码,还要运行他们编写的代码;

  • 反模式:高级工程师现在要负责环境配置,并需要处理比较初级的同事的请求;

  • 除了 CICD 之外,还有很多复杂的运维场景:配置管理、依赖管理、跨环境部署、统一的安全管控..

  • 虽然对于像谷歌、亚马逊、Airbnb 这些比较先进的组织来说,上述方法很有效,但对于其他大多数团队而言,要在实践中复制真正的 DevOps 并不简单。

还提到 Gartner 的炒作周期图,将平台工程定义为正在上升期的技术,并且会在 2-5 年达到平台期。

其实这部分回答了我一直以来的一个小迷惑——所谓大一统的运维平台/工具,到底有没有存在的意义?是不是说假设 DevOps 团队成长起来了,就不需要这种集中产出的工具和规范了?

首先,我们来看看 DevOps,DevOps 是一种文化,而非一种角色。在 DevOps 文化中,开发和运维团队需要更紧密地协作,共同为业务提供更好的服务。但这并不意味着所有开发人员都需要成为运维专家,或者所有运维人员都需要成为开发专家。

在实践中,即使是 DevOps 团队,也需要有明确的职责划分和专业分工。大一统的运维平台/工具的存在意义就在于它可以提供一种标准化和自动化的方式,使得 DevOps 团队能更高效地进行日常工作,而不需要过度关注具体的运维细节。这并不是说 DevOps 团队成长起来就不需要这种工具了,相反,随着团队的成熟,这种工具的价值会更加明显。

再来看看高级工程师组成的 DevOps 梦之队。虽然有一些高级工程师在多个技术领域都有深厚的造诣,但是他们的存在并不能解决所有问题。专家本身的技术一定是有所侧重和偏爱的,而且在多个不同种类的工作之间进行频繁切换会严重影响效率。而且,聘用多个领域的专家组成全职能 DevOps 团队的成本非常高,这对于大多数公司来说是不切实际的。

最后,我们来看看平台工程。平台工程将复杂的运维任务抽象为平台服务,由专门的平台工程团队提供支持。这样,开发团队就可以将更多的精力投入到业务开发上,而不是被运维问题所困扰。平台工程团队一般由具有深厚运维经验和开发能力的高级工程师组成,他们可以为开发团队提供高质量的平台服务,从而提高整个组织的开发效率。因此,平台工程才是未来的趋势。

关于平台工程的文章中一般还会提到一本书:《Team Topologies》,这本书中,详细描述了通常被称为成本中心的平台团队的服务范围、交付模式、运营内容等做了一番阐述,建议 SRE 工具建设领域的朋友们阅读本书增强自信。根据本书描述,有四种基本的拓扑结构,团队应该围绕这些拓扑结构进行:

  • 业务导向团队:与业务领域某个部分的工作流相匹配,处理核心业务逻辑。

  • 赋能团队:帮助业务导向团队克服障碍并检测缺失的功能。

  • 复杂子系统团队:在严重依赖数学/技术方面的专业知识时组建。

  • 平台团队:提供一个令人信服的内部平台,提高业务导向团队的交付速度。

各自为政有什么问题

下面说点常见的场景。

第三方软件选型和采用

首先说的是云原生,很多人都领略过 Cloudscope Landscape 的宏伟壮观。选型时无从下手,尤其是面对同类项目(例如 ELK 栈和 Loki 栈,Docker 和 Podman 等)时,社交网络定选型是个常态。

然而大家心里应该都清楚,引入一个“看上去不错”开源软件进入企业系统,是有很多需要考虑的内容的,例如:

  • 项目健康度如何?例如社区活跃程度、Issue 响应速度、社区多样性等。

  • 是否有商业公司提供支持?

  • 软件本身是否满足其 License 要求?软件的 License 是否能够满足企业内使用的场景需求?

  • 软件及其依赖项合法合规吗?

  • 除了功能之外,稳定性、可靠性、安全性等非功能特性是否满足企业需要?

  • 运维特性,例如倒换、扩缩容、升级、备份恢复等是否完善方案,用于支撑长期运行?

  • ...

软件选定之后还面临世界对接的问题,常见的问题包括认证、可观测性、存储等的对接,这些还是一些点状的功能,在云原生体系里,还有一个更严重的体系冲突问题。

我常用这张图来把“普通”开源软件和云原生软件的采用过程进行对比:

一个有一定规模的企业的 IT 体系,条条框框是相对固定的,软件规模不管大小,都可以服服帖帖、按部就班的落到代表体系规则的鱼骨图里,而以 Kubernetes 为代表的云原生生态则不同,其中自带了各种条条框框,不光是改了改你的部署运行方式,还对你的运维方式产生深远影响,甚至对你的应用架构指指点点。如果不照章办事,就可能和生态不兼容。因此云原生进入企业,通常会跟 IT 系统的现存规则交缠在一起,形成一种相互影响和制约的新体系。

用户又乱搞了

以我熟悉的 Kubernetes 为例,一些用户的操作,可能造成各种奇怪的不良后果,例如:

  • 滥用节点反亲和导致无法调度

  • 引入网络恶意镜像损失算力甚至被盗取机密

  • 误用本地存储,Pod 漂移后数据损失

  • 错误配置引发集群异常

Kubernetes 对象的易用性,随手可得的各种技巧,都给误操作和危险行为以可乘之机,然而实际情况是,如果是多个团队自行进行运维,可能就会产生五花八门的不同风格的集群,如下图所示:

很明显,不同团队因为各自的业务目标、技能水平等,会产生各种不同风格的集群,自然而然,不同的集群,有机会进行不同的“乱搞”,也会出现不同的问题。

我说平台工程

根据流行定义:平台工程是一门设计和构建工具链和工作流的学科,在云原生时代为软件工程组织提供自助服务能力。平台工程师提供一个集成的产品,通常被称为 “内部开发者平台",涵盖了应用程序整个生命周期的操作需要。

以我所见,平台工程面在三个方面为组织提供支持基础设施、规范和工具:

基础设施

现代软件运行需要大量的基础设施,除了传统的 网络、计算、存储之外,还包括大量的服务化的中间件等能力,OpenStack、Kubernetes 等资源编排工具也属于是传统管控难题。平台团队可以综合基础设施自有的管控运维能力,使用 Terraform、Kubernetes CRD、等资源抽象和自动化手段,为开发团队及其产品,规划、搭建、自动化和优化可靠、安全、高性能的基础设施,以支持业务的运行和发展。

规范

企业 IT 环境通常会有一系列的规范,例如设施命名、账号管理、IP 分配等等;另外操作系统、容器集群等具有极大灵活性的基础设施,也通常是需要有一定的规范化管理的,这里提到的规范至少包括:

  • 安全规范:平台团队负责制定和实施安全规范,以确保平台和应用程序的安全性。这可能包括访问控制、身份验证、数据加密、漏洞管理等方面的规范。

  • 部署和发布规范:平台团队可以制定规范,定义部署和发布流程,并确保它们得到正确执行。这些规范可以包括环境分离、版本控制、持续集成和持续交付等。

  • 最佳实践:各种最佳实践可以通过规范的形式进行推行和实施。将最佳实践转化为规范的形式可以确保团队成员共享相同的理解,并提供具体的指导和标准,以便在组织中广泛应用,例如访问控制规范、文档发布规范、接口管理规范等等。

  • 资源规范:例如资源申请和分配、生命周期管理、成本控制、审计和监控等的规范,有助于组织资源的有效利用、成本控制和性能优化。

工具

平台工程的主要产出就是一个被称为 idp(内部开发平台)的工具,以此工具为开发团队提供支持,在实际工作中,工具部分的工作内容至少包括:

  • 外部(开源/商业)软件的导入:除了前面提到的采用开源软件的层层关卡之外,平台工程团队还应负责补齐第三方软件的运维能力、外部软件和内部平台的配套对接、开发并实施明确、有效并且成本合理的生命周期管理过程。

  • 基础设施的供给、隔离:在基础设施自身服务接口和运维能力基础之上,为各个开发组织以及产品,规划并供给基础设施资源,尽可能让产品团队关注资源本身,并提供成本监测、优化等技术支持能力,用隔离手段防止租户和租户、租户和管理之间的不必要的资源访问。

  • Dev(Sec)Ops:包含供应链安全、代码质量、环境管理等的复杂 CI/CD 生命周期相关能力。

  • 规范实施:平台或者工具,除了是业务的加速器,同时也是管理意志的执行者。纯文本的规范举步维艰,只有靠策略保障、工具辅助等方式,才能保障规范背后的管理意图的达成。

More from this blog

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

僭越了,有人在用 Rust 写 Kubernetes

一个新语言问世,最爱做的事情之一,就是重写存量软件了。 云原生喝酒 SIG 重点扶持项目——rk8s(https://github.com/rk8s-dev/rk8s) 也可以归在这个范畴里,只不过这个项目重写的东西比较大,是 Kubernetes。 从 2025 年 1 月第一个 Commit 开始,到现在有了 200 多次 Commit,十几万行代码。当然距离 Kubernetes 的几百万行代码还差得远——老马就是喜欢整这种大无畏项目。 另外该项目也是国内第一个脱离 Cargo 转向使用 ...

Sep 27, 20253 min read

【伪】架构师

342 posts