站点可靠性工程SRE与平台工程比较


在过去的十年中,工程和技术组织已经融合了一套通用的最佳实践来构建和部署云原生应用程序。这些最佳实践包括持续交付、容器化和构建可观察系统。
与此同时,云原生组织已经从根本上改变了他们的组织方式,从大型部门(开发、质量保证、运营、发布)转移到较小的独立开发团队。这些应用程序开发团队由两个新功能支持:站点可靠性工程和平台工程。SRE和平台工程是传统运维团队的精神继承者,将软件工程的学科带入运维的各个方面。
 
站点可靠性工程与平台工程
平台工程团队将软件工程原理应用于加速软件交付. 平台工程师确保应用程序开发团队在软件交付生命周期的各个方面保持高效。
站点可靠性工程团队应用软件工程原理来提高可靠性。站点可靠性工程师将可能影响云应用程序整体可靠性的故障的频率和影响降至最低。
这两个团队经常混淆,这些术语有时可以互换使用。事实上,一些组织将 SRE 和平台工程整合到同一个功能中。发生这种情况是因为两个角色都应用了一组共同​​的原则:

  • 平台即产品。这些团队应该花时间了解他们的内部客户、构建路线图、制定计划的发布节奏、编写文档以及完成软件产品中的所有工作。
  • 自助服务平台。这些团队构建他们的平台供内部使用。在这些平台中,对最佳实践进行了编码,因此这些平台的用户无需担心——他们只需按下按钮。在Puppet Labs 2020 年 DevOps 状态报告中,Puppet Labs 发现高功能 DevOps 组织比低 DevOps 进化组织拥有更多的自助服务基础设施。
  • 持续关注消除劳累。正如 Google SRE 书中定义的那样,辛勤工作是手动的、重复的、可自动化的、战术性的工作。最好的 SRE 和平台团队会发现工作量,并努力消除它。

 
平台工程
平台工程师不断检查从源头到生产的整个软件开发生命周期。从这个自省的过程中,他们建立了一个工作流程,使应用程序开发人员能够快速编码和运送软件。一个基本的工作流程通常包括一个与持续集成系统相连的源码控制系统,以及一个将工件部署到生产中的方法。
随着使用工作流程的应用开发者数量的增加,平台的需求也在不断变化。不同的应用开发者团队需要类似但不同的工作流程,所以自助服务基础设施变得很重要。自助服务的常见平台工程目标包括CI/CD、警报和部署工作流程。
除了自助服务外,教育和协作也成为挑战。平台工程师发现他们越来越多地花费时间来教育应用开发者最佳实践和如何最好地使用平台。应用开发者也发现他们依赖于其他的应用开发者团队,并期待平台工程团队给他们提供与不同团队进行有效协作的工具。
 
网站可靠性工程
网站可靠性工程师创建和发展系统,以自动、可靠地运行应用程序。网站可靠性工程的概念起源于谷歌,并在谷歌SRE书中有详细记载。谷歌负责技术运营的高级副总裁Ben Treynor Sloss将SRE描述为 "当你要求一个软件工程师来设计一个运营团队时会发生什么"。
SRE定义服务水平目标并建立系统以帮助服务实现这些目标。这些系统演变成一个平台和工作流程,包括监控、事件管理、消除单点故障、故障缓解等等。
SRE文化的一个关键部分是把每一个故障当作可靠性系统的故障。严格的事后检验对于确定故障的根本原因至关重要,并将纠正措施引入自动系统以继续提高可靠性。
 
New Relic公司的SRE和平台工程
我们中的一个人(Bjorn Freeman-Benson)在2015年之前一直管理着New Relic的工程组织,因为它从少数几个客户发展到数万个客户,都在向云端发送每秒数百万的请求。New Relic有独立的SRE和平台工程团队,遵循上述的一般原则。
这些团队被分开建立的原因之一是,在这些角色中茁壮成长的人是不同的。虽然SRE和平台工程师除了经典的编程技能外,还需要强大的系统工程技能,但这些角色决定了他们的性格类型非常不同。SRE倾向于享受危机管理,并从排除故障中获得肾上腺素的刺激。SRE经理在强大的压力下茁壮成长,并善于招募和管理有类似想法的人。另一方面,平台工程师是更典型的软件工程师,他们更喜欢不受干扰地工作在大的、复杂的问题上。
平台工程经理喜欢在一个稳定的节奏下工作。
 
DevOps和GitOps
在过去的十年中,DevOps已经成为一个流行的术语,用来描述许多这些实践。最近,GitOps也作为一个流行术语出现。DevOps和GitOps与平台和SRE团队有什么关系?
DevOps和GitOps都是一套松散的原则,即如何管理基础设施的不同方面。这两种理念的核心原则--自动化、基础设施即代码、软件工程的应用--都非常相似。
DevOps是一个广泛的运动,开始时专注于消除开发和运营之间的传统孤岛。随着时间的推移,诸如基础设施自动化和以运营为中心的工程应用等策略已被广泛接受,成为更好地建立高可靠性应用的方法。
GitOps是一种应用交付的方法。在GitOps中,声明性的配置被用来编纂应用程序在任何时候的理想状态。这种配置在一个版本化的源码控制系统中被管理,作为唯一的真理来源。这确保了配置的可审计性、可复制性和一致性。
 
释放应用开发的生产力
网站可靠性工程和平台工程是优化工程组织以构建云原生应用程序的两个功能,是至关重要的。SRE团队致力于为高度可靠的应用提供基础设施,而平台工程团队则致力于为快速应用开发提供基础设施。这两个团队一起释放了应用开发团队的生产力。