文章摘要随着 devops 理念的演变,围绕 devops、站点可靠性工程师 (sre)、云工程师和平台工程师等相关角色职责的模糊性日益增加。尽管这些角色存在重叠,但它们在关注点和技能上有细微差别。devops 强调开发与运维团队之间的协作,而 sre 将软件工程实践应用于运营,专注于系统可靠性。云工程师专注于云基础设施的管理,而平台工程师则创建内部开发人员平台,为开发人员提供自助式运维功能。由于 devops 实践的差异性和组织的抵制,角色规范仍然不清晰。因此,在招聘时明确角色期望和组织环境至关重要。确保所有运营需求都能得到满足对于支持开发人员和实现 devops 的全部潜力至关重要。
正如最初设想的那样,DevOps 更多的是一种哲学,而不是一组实践,它当然不是一个职位名称或角色规范。然而如今,DevOps 工程师、站点可靠性工程师、云工程师和平台工程师的需求量都很大——他们的技能相互重叠,招聘人员在角色描述中随意散布一些松散相关的关键词,例如“ CI/CD 管道”、“部署工程” ”、“云配置”和“Kubernetes”。
当我共同创立 Kubiya.ai 时,我的投资者敦促我更好地定义我的目标市场。例如,仅仅是 DevOps 还是 SRE、云和平台工程师以及其他最终用户?
最近,我发现求职者和招聘人员对定义这些角色很感兴趣。从Reddit 帖子到网络研讨会,这是一个备受争议的话题。
在这篇文章中,我提出了我的想法,但也认识到还有很大的解释空间。对于许多人来说,这是一个煽动性的话题——所以冒着引发大火的风险,让我们继续吧!
首先,我们快速总结一下这些不同的角色。
DevOps、SRE、云和平台角色的高级视图
开发运营
DevOps 角色都是关于团队合作和使用工具更聪明地工作,而不是更辛苦。它们将开发人员和运营人员聚集在一起,以加快发布速度,提高系统稳定性,并使每个人都保持一致。
SRE(站点可靠性工程师)
SRE 角色专注于使系统可靠且可扩展。他们就像工程师一样,确保一切在幕后顺利运行,与开发人员密切合作,实现流程自动化并快速响应任何问题。
云工程师
云工程师的角色就像云的架构师。他们专注于设置和管理云基础设施,确保其高效、安全且经济高效。他们使用 AWS 或 Azure 等工具来创建应用程序可以蓬勃发展的环境。
平台工程师
平台工程师的角色就像开发人员友好的平台的构建者。他们设计和维护系统,使开发人员能够轻松管理他们的应用程序,从设置工作流程到监控性能。这一切都是为了为每个参与者创造流畅的体验。
DevOps的演变 和新的工作规范
DevOps 实践在 2000 年代发展起来,以满足提高发布速度和缩短产品上市时间同时保持系统稳定性的需求。此外,面向服务的架构允许单独的开发团队独立处理各个服务和应用程序,从而实现比以往更快的原型设计和迭代。
专注于软件发布的开发团队与专注于系统稳定性和安全性的独立、独特的运营团队之间的传统紧张关系日益加剧。这阻碍了许多企业所渴望的步伐。此外,开发人员并不总是正确理解操作需求,而操作人员无法在性能问题出现之前阻止它们。
正如最初设想的那样,DevOps 更多的是一种哲学,而不是一组规定性的实践——以至于对于这些实践的数量和性质甚至没有达成共识。有些人引用“DevOps 的四大支柱”,有些人引用“五个支柱”,有些人引用六个、七个、八个或九个支柱。你可以选择。
不同的组织以不同的方式实施 DevOps(许多组织根本没有)。在这里,我们可以预见自己所处的工作规范困境。正如DevOpsDays 创始人 Patrick Debois 指出的那样,“没有定义是好是坏。人们……现在确实在为 DevOps 的含义而苦苦挣扎。但是,另一方面,不把一切都写下来意味着它会向多个方向发展。”
DevOps 的答案是打破孤岛并鼓励通过工具、文化变革和共享指标促进更广泛的协作。开发人员将拥有他们所构建的东西——他们将能够端到端地部署、监控和解决问题。运营部门将更好地了解开发人员的需求;尽早参与产品生命周期;并提供教育、工具和护栏以促进开发人员自助服务。
DevOps 没有的一件事是角色规范。快进到今天,许多组织都在积极招募“DevOps 工程师”。更糟糕的是,人们对一个职位的定义知之甚少——从一个职位到下一个职位所寻求的技能组合差异很大。 “站点可靠性工程师”、“平台工程师”和“云工程师”等相关和重叠的角色正在使本已暗淡的水域变得更加混乱。
我们是如何走到这一步的?这些角色之间的真正区别是什么(如果有的话)?
新 IT 角色的出现
随着 DevOps 受到关注,DevOps 生态系统中的角色和职责变得越来越模糊。这种模糊性导致了站点可靠性工程师(SRE)、云工程师和平台工程师等相关角色的出现。每个角色都有自己独特的关注点和技能。
SRE 受到 Google 管理大型系统方法的启发,将软件工程实践与运营相结合,以确保服务的可靠性和性能。云工程师专注于部署和管理云基础设施,利用 AWS、Azure 或 Google Cloud 等平台来优化可扩展性和效率。另一方面,平台工程师专注于设计和维护内部开发人员平台,为开发人员提供自助服务功能来管理应用程序生命周期的操作方面。
虽然这些角色之间存在重叠,但它们各自都有不同的专业领域和重点。 SRE 优先考虑可靠性和弹性,云工程师专注于云基础设施管理,平台工程师专注于创建以开发人员为中心的平台。了解这些角色的细微差别对于组织有效构建团队并充分利用 DevOps 原则在软件交付管道中的潜力至关重要。
DevOps 的阻力和困惑
根据我的经验,实现 DevOps 的最初构想(即在专业化与协作和共享之间实现最佳平衡)对许多组织来说一直是一个挑战。
Puppet 的 2021 年 DevOps 状况报告发现,只有 18% 的受访者认为自己是“高度发展”的 DevOps 从业者。正如DevOps Topologies 团队所描述的,其中一些好处来自特殊情况。例如,Netflix 和 Facebook 等组织可以说拥有单一的基于网络的产品,这减少了产品流之间的差异,从而迫使开发人员和运营人员进一步分离。
其他人则施加了严格的协作条件和标准,例如 Google 的 SRE 团队(稍后会详细介绍!),他们还有权拒绝危及系统性能的软件。
由于组织对变革的抵制、技能短缺、缺乏自动化或遗留架构,许多处于 DevOps 发展水平较低的人员都在努力充分实现 DevOps 的承诺。因此,该小组将采用各种不同的 DevOps 实施方法,包括 DevOps 拓扑中描述的一些 DevOps“反类型”。
对于许多人来说,开发和运维仍然是孤立的。对于其他人来说,DevOps 将是一个工具团队,位于开发中,负责部署管道、配置管理等,但仍然与运维隔离。对于其他人来说,DevOps 将是 SysAdmin 的简单重塑,DevOps 工程师被聘用到运营团队中,他们对技能的期望有所扩大,但没有发生真正的文化变革。
公共云使用的快速采用也增强了人们对自助服务 DevOps 方法前景的信心。但能够按需配置和配置基础设施与使开发人员能够端到端部署和运行应用程序和服务相去甚远。不幸的是,并非所有组织都明白这一点,因此许多组织的自动化在基础设施自动化和配置管理层面上停滞不前。
DevOps 有如此多不同的体现,毫无疑问 DevOps 角色规范没有明确的定义。对于一个组织来说,它可能只是最狭隘的部署工程的同义词——也许只是创建 CI/CD 管道——而在另一方面,它可能本质上是运维的重塑,并具有将基础设施编写为代码的额外技能、部署自动化和内部工具。对于其他人来说,它可以是介于两者之间的任何灰色阴影,因此我们这里有一系列令人眼花缭乱的 DevOps 职位列表。
SRE、云工程师和平台工程师角色
因此,根据招聘组织的不同,DevOps 工程师可以是完全以部署为中心的工程师,也可以是更现代的系统管理员。
其他相关角色:SRE、云工程师和平台工程师呢?以下是我对每个问题的看法:
站点可靠性工程师
SRE 的概念是由 Ben Traynor 在 Google 提出的,他将其描述为“当你将操作视为软件问题并配备软件工程师时你会得到什么”。这个想法是让人们结合操作技能和软件开发技能来设计和运行生产系统。
站点可靠性工程师 (SRE)将软件工程实践与运营职责相结合,以确保系统和服务的可靠性、可扩展性和性能。他们专注于设计和实施自动化解决方案来管理和监控基础设施、部署软件并主动响应事件。 SRE 与开发团队密切合作,建立和执行可靠性标准,定义服务级别目标 (SLO),并实施错误预算等实践,以平衡创新与系统稳定性。他们的目标是通过持续改进和迭代来保持生产环境的高可用性和弹性。
服务可靠性服务级别协议 (SLA) 的定义至关重要,可确保开发团队在接受部署之前预先提供证据,证明软件满足严格的操作标准。此外,SRE 努力使基础设施系统更具可扩展性和可维护性,包括为此目的设计和运行标准化 CI/CD 管道和云基础设施平台以供开发人员使用。
正如您所看到的,这与某些人对 DevOps 工程师的定义有很大的重叠。因此,也许思考差异的一种方式是这样的。相比之下,DevOps 最初的目的是提高发布速度,而SRE 的目标是在系统规模和产品复杂性不断增长的背景下构建更可靠的系统。所以从某种程度上来说,两人是在中间相遇的。
云工程师
随着云功能的不断增长,一些组织为云工程师创建了专门的角色。同样,尽管没有硬性规定,但云工程师通常专注于部署和管理云基础设施,并知道如何为云原生应用程序构建环境。他们将成为 AWS/Azure/Google 云平台方面的专家。根据与 DevOps 工程师职责的重叠程度,他们也可能精通 Terraform、Kubernetes 等。
此外,云工程师利用他们在云技术方面的专业知识来设计、实施和维护可扩展和弹性的云架构,确保应用程序和系统在云环境中高效、安全地运行。云工程师还可以致力于自动化、监控和成本优化策略,以最大限度地发挥云计算为其组织带来的优势。
随着云采用的不断推进,云工程师的角色正在涵盖以前所谓的基础设施工程师,其最初的重点是云和本地基础设施管理。
平台工程师
内部开发人员平台(IDP) 已成为一种最新的解决方案,可解决平衡开发人员生产力与系统控制和稳定性的难题。平台工程师设计和维护IDP,旨在为开发人员提供自助服务功能,以独立管理整个应用程序生命周期的操作方面——从CI/CD工作流程;基础设施配置和容器编排;监控、警报和可观察性。
许多开发人员根本不想进行运维——至少不是传统意义上的运维。作为一名创意艺术家,开发人员不想担心基础设施如何运作。因此,至关重要的是,该平台被视为一种产品,通过创建引人注目的自助开发人员体验来实现控制,而不是通过强制执行标准和流程。
消除歧义:澄清角色期望
那么,所有这些不同角色的候选人都在哪里呢?可能就目前而言(至少在 DevOps 实施方法具有更大的通用性之前),唯一现实的答案是确保您在面试期间询问所需的一切,明确角色期望和您将被雇用的组织环境。
对于招聘人员来说,您可能会出于各种原因决定广泛撒网,在招聘启事中塞满热门关键词。但最终,有关候选人的经验和能力的细节必须在面试过程和与推荐人的对话中体现出来。
在我看来,无论您是 DevOps、平台工程师、云工程师,甚至是 SRE,确保支持开发人员的所有运营需求都将有助于帮助他们专注于创造下一个最好的产品。
以上就是DevOps、SRE、平台工程师、云角色解释的详细内容,更多请关注其它相关文章!