这份指南汇集了领域专家和数据支持,旨在帮助有志于成为平台工程师的人了解所需知识。
译自 What Makes the Ideal Platform Engineer?,作者 Sooraj Shah。
星巴克、AWS和华纳兄弟等公司都在寻找平台工程师,而且平台工程师的收入远高于DevOps等相关职位,平台工程运动正在蓬勃发展。
许多渴望成为平台工程师的人都渴望了解在这个职位上获得录用所需的技能和工作经验。以下是来自该领域专家的指导以及支持它的数据。
DevOps的引入是为了提供最佳实践和工具,鼓励那些开发软件系统的人员也维护它。“你构建它,你运行它”。
因此,DevOps工程师选择他们自己的工具,并且必须花时间充分了解如何使用它们。DevOps团队专注于交付应用程序的功能,并触及整个软件开发生命周期,从规划到监控。
虽然由于DevOps,开发周期缩短,部署频率增加感谢DevOps,但也产生了连锁反应:开发人员的认知负荷增加了,因为他们必须成为诸如功能交付、事件管理和与云交互等方面的专家。另一个连锁反应是形成了更多跨职能的全栈团队,这导致了专业知识的重复,增加了复杂性,并进一步模糊了所有权界限。
平台工程的出现是为了改变这种情况。平台工程师决定一个平台——由许多不同的工具、工作流程和功能组成——DevOps、开发人员和业务中的其他人可以使用它来开发和监控软件的开发。他们根据最适合这些用户的因素做出这些决定。
平台工程团队的目标是通过为其他团队提供以下内容来增强他们的能力:
对于那些已经拥抱平台工程世界的人来说,回报是巨大的;Glassdoor报告显示,平台工程师的平均总薪酬约为175,763美元,而2024年平台工程现状报告显示,美国平台工程师的平均年薪为219,078美元,远高于DevOps等相关职位,DevOps的平均年薪为153,639美元。
古老的格言“每个企业都是独一无二的”在这里适用;平台工程在每个组织中的样子都不一样,使用的平台或门户网站也不一样。但是,平台工程师通常会承担一些关键职责,并需要一些技能。
一位应用安全公司Checkmarx的DevOps团队负责人,该公司已经采用了平台工程。他认为平台工程师应该专注于提高开发人员的卓越性。
他说:“完美的平台工程师通过构建消除瓶颈并增加协作的系统来帮助开发人员。”
平台工程师:
- 设计、构建和维护内部开发人员平台 - 管理云资源并自动化流程
- 使用监控和可观察性工具来帮助他们确保性能、安全性和可靠性 - 与开发团队密切合作,引入自助服务工具、标准化工作流程和自动化来增强性能和可扩展性
- 改善事件管理流程
- 持续改进基础设施以避免技术债务
- 保持详细的文档和知识共享实践
Guy Menahem,Platformers 社区联合创始人,认为虽然很难描述理想的平台工程师的特征,但他们必须具备四个核心能力。
他说:“平台工程师需要以客户为中心,拥有深厚的技术知识和好奇心,但最重要的是,他们不应该将工程视为个体工作,而应视为团队工作。”
让我们更深入地了解其中一些技能。
Port 公司(一家提供开放式内部开发者门户的提供商)的首席执行官 Zohar Einy 解释说:“平台工程师需要深入了解所有组件的连接方式以及平台背后的构建方式。”
他强调了了解公司技术栈结构和使用的开发工具的重要性。
平台工程师所需的技术技能可能包括:
- 精通低级编程语言
- 云计算专业知识
- Kubernetes 和容器化专业知识
- 使用 Terraform 等基础设施即代码 (IaC) 工具的经验
- 掌握网络协议和 Linux 管理
- 使用 GitHub Actions、Argo Workflows 和 Jenkins 等 CI/CD 工具的经验
- 使用 Datadog 和 Grafana 等监控和日志记录工具的经验
- 理解和使用微服务和分布式系统
数据自动化提供商 Xceptor 的平台工程主管 James Daniels 解释说,理想的平台工程师在本质上应该是一位软件工程师,拥有深厚的 Kubernetes 知识和 Go(开源编程语言)专业知识。
Daniels 提到了 Gregor Hohpe 的著作《平台战略:通过协调实现创新》中概述的平台关键原则。他强调平台服务应该是开放和可扩展的,而不是强制性和封闭的,并指出平台工程师应该能够有效地实施这些原则。
平台工程师应该将平台用户视为他们的客户。要完全体现以客户为中心的方法,需要成为产品负责人。
这实际上是 Pavel Pikat 在业务管理软件提供商 AMCS Group 担任的角色。在组织采用平台工程之前,他是首席 DevOps 工程师,之后转型为技术产品负责人。Pikat 认为平台工程师应该拥抱产品思维,因为他们创建的平台不仅仅是工具,而是塑造开发者工作流程和生产力的体验。
他说:“将平台视为产品意味着了解用户的(开发者的)需求,收集反馈,根据实际用例进行迭代,并通过开发者满意度和效率来衡量成功,而不仅仅是技术指标。”
他补充道:“通过采用以产品为中心的方法,平台工程师可以构建与团队目标更贴合的内部开发者门户和工具,使开发者更容易访问资源,保持与标准的一致性,并减少认知负担。”
Einy 强调,反馈是持续与平台用户保持一致的关键部分。他说:“团队需要加入调查问卷,提出正确的问题,为回复设定明确的目标,并彻底分析结果。”
Xceptor 的 Daniels 解释说,他面临的最大挑战之一是阐明平台工程计划的价值。他说:“将‘我们在做什么’转化为‘我的 CEO 为什么会在乎’非常困难,因为你实际上处于直接为客户创造价值的工程团队之下。”
Daniels 说,人们的假设是,平台工程师交付的唯一价值是为他们自己的内部客户服务的,但通过改进平台及其用户的体验,最终用户也会从中受益匪浅。
为了积极消除这种假设,Daniels 和他的团队每月都会发送一份新闻通讯,解释他们所做的工作以及这项工作的影响,并每两个月举行一次团队会议,以便他们可以直接与人们互动并了解他们的挑战。 “这帮助我们成长为一个赋能部门,并让我们能够采用团队拓扑框架。这帮助我们被定义为提供服务,而不是解决工单的IT部门,”Daniels说。
由于平台工程师与许多不同的角色打交道,例如开发人员、站点可靠性工程师(SRE)、DevOps和安全人员,因此他们还需要强大的沟通和协作能力。
同时,对细节的关注对于平台工程师至关重要,因为他们必须确保稳定性、彻底的测试和正确的文档。
Abby Bangser, Syntasso的创始首席工程师,开源平台工程框架Kratix的创建者解释说,工程团队总是存在仅仅是将现有理念重新包装的风险。
“区分平台工程师与DevOps、云工程师或SRE角色的一种方法是将重点放在赋能而不是能力支持上。因此,平台工程师并不是所有平台能力的主题专家,而是构建支持和使用这些能力的机制,”她说。
Bangser举例说明了一个组织想要首次开始启用GraphQL数据库的使用。
“这不应该落入平台积压工作中,而是平台能力应该使公司中的数据库主题专家能够提供GraphQL作为一项服务,理想情况下无需太多平台工程支持。这使得平台工程师能够专注于支持这种轻松扩展的工具,例如可发现性、升级支持和可观察性,”Bangser说。
许多现有角色可以很好地过渡到平台工程,特别是DevOps工程师、技术产品经理和SRE。
例如,今天的平台工程职责最初是DevOps角色的一部分。
“专注于面向用户的流程和工作流的DevOps工程师因此可以自然地过渡到平台工程,”Einy说。
由于SRE专注于质量、减少平均恢复时间(MTTR)和提高组织弹性,因此他们也非常适合平台工程角色。
“同时,所有技术产品经理都对他们管理的产品拥有深入的技术知识,因此作为平台工程师采用平台即产品的方法对他们来说也很有意义,”他补充道。
无论工程师之前的经验如何,平台工程师都应该具备某些特质。
理想的平台工程师将深厚的技术专长与以客户为中心、以产品为导向的思维方式相结合。他们必须能够阐明他们对内部和外部用户的影响。他们设计平台,使其他主题专家能够无缝地提供和使用服务,而无需额外的支持。平台工程师乐于与其他部门和团队合作,并能够弥合开发和业务目标之间的差距。
加入数千名其他平台工程师和开发人员加入Port社区。如果您仍在确定平台工程对您的组织意味着什么,请查看我们的现场演示,了解内部开发者门户可以如何帮助您前进。