SRE、DevOps与平台工程的区别

c5c8579de04a47de4e6e2301d1487b89.jpeg

翻译自:https://thenewstack.io/platform-engineering/sre-vs-devops-vs-platform-engineering/

在过去几年中,许多技术公司一直在致力于一组共同的最佳实践——在平台上利用云技术创建和部署应用。这些最佳实践可分成三类:隔离或容器化、持续交付以及可观测建设。

云原生组织发生了巨大变化,从拥有大型部门到核心开发团队。以下两个工程为此提供支持:

  1. 1. 网站可靠性工程(Site Reliability Engineering)

  2. 2. 平台工程(Platform Engineering)

可以说,SRE 和平台工程团队是传统运维团队继承者。也可以说,SRE 为软件工程领域带来了更多的纪律。

什么是网站可靠性工程(SRE)?

网站可靠性工程是指工程师创建能够以可靠的方式运行应用程序的系统。SRE 概念的发起始于Google,这在 Google SRE 书中有很好地记录。

在SRE的帮助下,工程师可以在服务级别上定义SLO(Service Level Objective)。一旦定义了SLO,就会开发系统来实现这些目标。最后,这些系统进一步扩展为平台,解决诸如事故管理,故障缓解,甚至消除单点故障等领域。

SRE方法的一个非常关键是,每一个故障都被认为是一个失败,并进行详细的根本原因分析。此外,在系统层面上引入纠正措施,以便在可靠性方面不断进步。

什么是平台工程

平台工程师监控软件开发过程的整个生命周期,从源代码到生产环境。作为这个过程的一部分,平台工程师开发工作流程,帮助软件开发人员快速编码和部署软件。我们可以看到一个基础级别的工作流程系统,它包括一个源代码系统,并逐渐连接到集成系统中。

由于应用程序开发人员数量的增加,我们可以预期平台工程师会有相应的发展。平台工程师确实花了很多时间来指导应用开发者的各种最佳实践,以及他们如何利用平台的力量。

什么是DevOps

在过去的十年中,DevOps已经获得了显著的普及。另一个最近开始流行的术语是GitOps。从技术上讲,DevOps和GitOps都是一套松散的原则。这些原则被用来监控和管理基础设施的不同方面。

DevOps始于一个更广泛的议程,即消除存在于运维团队和开发团队之间的孤岛。因此,基础设施的自动化和应用工程化等策略得到了更广泛的接受。

SRE vs. DevOps

DevOps的主要关注点是自动化什么,而SRE更多的是在怎么自动化的部分。以下三个区别,可以帮助你更好地了解它们:

  • • 新功能:DevOps负责创建新的功能,而SRE必须确保不会因为这些新功能出现故障。

  • • 流程:DevOps团队的视角是将应用从开发到生产,所以他们知道其中的流程。而SRE团队只从生产的角度看问题。

  • • 关注点:DevOps团队主要关注产品的开发速度和连续性。然而,SRE团队关注的是可靠性、可扩展性和可用性。

SRE和平台化工程的区别

工具

在SRE角色中,最常用的工具Prometheus和Grafana主要用于收集不同的指标,如内存消耗或CPU使用率。

然而,平台工程师使用的工具,如用Crossplane管理基础设施,使用Qovery获得生产环境的预览,以及使用GitLab CI使用持续集成。

角色

为SRE和平台工程建立独立团队的一个关键因素是因为角色的不同。虽然SRE和平台工程师都需要强大的系统工程技能,而不是编程知识,但他们的角色实际上是不同的。SRE在故障管理中更有优势,在排除故障的情况下有某种肾上腺素的刺激。相反,平台工程师更像是典型的软件工程师。他们喜欢处理大型复杂问题,不喜欢被打断。

目标

虽然听起来很相似,但SRE团队的目标是为应用程序提供极其可靠的基础设施。平台工程师的目标是创建和提供纯粹用于快速应用开发的基础设施。

DevOps和SRE团队的常用工具

如果我们谈论SRE,他们中最常用的工具是Prometheus和Grafana。这两个工具是用来收集和可视化各种指标的。这些指标包括CPU使用率、内存和磁盘空间。除此之外,SRE还使用事件报告工具,如OP5、PagerDuty、xMatters,等等。

然而,如果我们看一下DevOps工程师的角色,最广泛使用的工具包括集成开发环境,用于持续集成的Jenkins,用于变更管理的JIRA,SVN,和GitHub。

网站可靠性工程、DevOps和平台工程如何协同工作

如果我们仔细观察这些团队的工作,SRE团队主要关注的是建立能够可靠运行的应用程序。平台工程师确保这些应用要运行的基础设施是无缝运行的。DevOps是一套有助于加快上述两个过程的流程。因此,当务之急是让这三者共同发挥作用,通过它们可以交付可靠的软件应用程序。

平台工程与DevOps

虽然有些人说DevOps只是平台工程的另一个花哨的名字,但有几个方面可以区分这两者。正如我们所知,DevOps是关于利用工具来简化部署过程,并通过自动化和可视化来进一步管理和监控应用程序。

平台工程消耗这些工具、最佳实践和流程来创建可重复使用的服务和工具,可供整个组织的不同团队使用。

虽然这三种技术方法有其独立的功能,组织可以选择其中任何一种;然而,在理想的情况下,最好是三者都有,以确保自动化项目在经历了一系列的流程和最佳实践后,可以快速的速度交付,并具有极大的可靠性。

往期好文推荐:

猜你喜欢

转载自blog.csdn.net/apl359/article/details/129679704