SRE 与 DevOps:有什么区别?



随着应用程序开发的复杂性不断增加,组织越来越多地采用支持可靠、可扩展软件的方法。
DevOps 和站点可靠性工程 (SRE) 是通过增强协作、自动化和监控来增强产品发布周期的两种方法。这两种方法都利用自动化和协作来帮助团队构建有弹性且可靠的软件,但这些方法提供的内容和操作方式存在根本差异。
因此,本文深入探讨了 DevOps 和 SRE 的目的。我们将研究这两种方法,包括优点、差异和关键要素。


开发运营基础知识
DevOps 是一个总体概念和文化,旨在确保快速发布稳定、安全的软件。 DevOps 存在于敏捷开发企业系统管理 (ESM)实践的交叉点。
早期的开发方法涉及开发和运营团队在孤岛中工作,这导致开发速度较慢且部署环境不稳定。为了解决这个问题,DevOps 方法将应用程序中的所有利益相关者集成到一个高效的工作流程中,从而能够快速交付高质量的软件
通过允许跨职能团队之间的沟通和协作,DevOps 还可以:

  • 可靠的服务交付

  • 提高客户满意度


DevOps 实践基于自动化支持的持续、增量改进。虽然完全成熟的自动化几乎不可能实现,但对于全面的自动化,DevOps 方法侧重于以下要素:
持续交付和集成 (CI/CD)
DevOps 旨在快速、频繁地向客户交付应用程序和更新。通过使用 CI/CD 管道无缝连接流程和实践,DevOps 可自动更新代码并将其发布到生产中。
CI/CD还涉及持续监控和部署,以确保不同软件版本和部署环境之间的代码一致性。

基础设施即代码
DevOps强调IT基础设施的抽象,以便可以使用软件工程方法对其进行管理并自动配置。这将形成一个高效的系统,使您的团队能够高效地:

  • 跟踪变化

  • 监控基础设施配置

  • 回滚具有不良/意外影响的更改

自动化测试
代码在编写或更新时会自动持续进行测试。通过消除与预发布测试相关的瓶颈,持续机制可以加快部署速度。
DevOps 与...
除了帮助 DevOps 实践实现全面自动化的元素之外,DevOps 还依赖于本质上实现更快交付、高效自动化和增强协作的各种方法。 DevOps 使用或以其他方式很好搭配的一些方法包括:

  • Scrum。该框架描述了协作加速质量保证和代码开发的团队的组成和角色。 Scrum 框架定义了项目中的指定角色以及软件开发生命周期 (SDLC) 所有阶段的关键工作流程。

  • 看板。一种关键的工作流程管理机制,使团队能够定义、管理和改进可提供业务价值的服务。

  • 敏捷。敏捷框架定义了通过实现快速、频繁和迭代更新来提高软件团队对不断变化的市场需求的响应能力的流程。敏捷可以缩短开发周期,从而可以更清晰地了解业务和开发目标,从而提高客户满意度。


DevOps 的好处
DevOps 通过协作和自动化降低了管理软件工程项目的复杂性。采用 DevOps 的一些好处包括:

  • 确保更快、更频繁地交付应用程序功能,从而提高客户满意度

  • 创建平衡的方法来管理 SDLC,以提高软件团队的生产力

  • 通过自动化重复任务加快创新速度

  • 更快、更有效地修复问题

  • 通过减少维护和基础设施管理中的错误来最大限度地降低生产成本

站点可靠性工程 (SRE) 基础知识
SRE 通过将软件开发的各个方面整合到 IT 运营中,提供了一种独特的应用程序生命周期和服务管理方法。
SRE 于 2003 年首次开发,旨在创建满足企业规模系统需求的 IT 基础设施架构。通过 SRE,IT 基础设施被分解为基本的抽象组件,可以通过软件开发最佳实践来配置这些组件。这使得团队能够使用自动化来解决与管理生产中的应用程序相关的大多数问题。
SRE 使用三个服务级别承诺来衡量系统的性能:

SRE 的主要原则包括:



站点可靠性工程师的角色
SRE 本质上创造了一个新角色:站点可靠性工程师。 SRE 的任务是通过日常流程的增强和自动化来确保 IT 运营和开发团队之间的无缝协作。 SRE 的一些核心职责包括:

  • 开发、配置和部署供运营团队使用的软件

  • 处理支持升级问题

  • 进行事件审查并报告

  • 开发系统文档

  • 更换管理层

  • 确定并验证新功能和更新

SRE工具
SRE 团队依靠日常流程的自动化,使用工具和技术来标准化整个软件生命周期的操作。支持站点可靠性工程的一些工具和技术包括:

  • 容器将应用程序打包在跨多个部署平台的统一环境中,从而实现云原生开发

  • Kubernetes是一种流行的容器编排器,可以有效管理在多个环境中运行的容器化应用程序。

  • 云平台允许您在高度分布式环境中配置可扩展、灵活且可靠的应用程序。流行的平台包括 Microsoft Azure、Amazon AWS 和 Google Cloud。

  • 项目规划和管理工具允许您跨分布式团队管理 IT 运营。一些流行的工具包括 JIRA 和 Pivotal Tracker。

  • Subversion 和 GitHub 等源代码控制工具消除了开发人员和操作人员之间的界限,从而实现无缝协作和应用程序交付的发布。源代码控制工具包括 Subversion 和 GitHub。

SRE 与 DevOps
这两种方法都强制开发和运营团队之间的最小分离。但我们可以总结出关键的区别:DevOps 更注重文化和哲学的转变,而 SRE 更务实和实用。
这凸显了概念运作方式上的各种差异,包括:

  • 本质。 SRE 的开发重点很窄:创建一组可以改进协作和服务交付的实践和指标。另一方面,DevOps 是哲学的集合,它支持孤立团队之间的文化和协作思维。

  • 目标。 SRE 和 DevOps 都旨在弥合开发和运营之间的差距,尽管 SRE 涉及实现可靠性的规范性方法,而 DevOps 则充当指导协作的模板。

  • 重点。站点可靠性工程主要侧重于增强系统可用性和可靠性,而 DevOps 则侧重于开发和交付的速度,同时加强连续性。

  • 团队结构。 SRE 团队由具有运营和开发背景的站点可靠性工程师组成。 DevOps 团队包括各种角色,包括 QA 专家、开发人员、工程师、SRE 等。


SRE 如何支持 DevOps 原则和理念
SRE 和 DevOps 不是相互竞争的方法。这是因为 SRE 提供了解决大多数 DevOps 问题的实用方法。
在本节中,我们将探讨团队如何使用 SRE 来实现 DevOps 的原则和理念:
减少组织孤岛
DevOps 致力于确保不同部门/软件团队不会彼此孤立,确保他们都朝着共同的目标努力。
SRE 通过强制团队之间的项目所有权来实现这一点。通过 SRE,每个团队都使用相同的工具、技术和代码库来支持:

  • 均匀度

  • 无缝协作

实施渐进变革
DevOps 拥抱缓慢、渐进的变化,以实现持续改进。 SRE 通过允许团队执行小型、频繁的更新来支持这一点,从而减少更改对应用程序可用性和稳定性的影响。
此外,SRE 团队使用 CI/CD 工具来执行变更管理和持续测试,以确保代码变更的成功部署。
接受失败是正常的
SRE 和 DevOps 概念都将错误和失败视为不可避免的发生。 DevOps 的目标是处理运行时错误并允许团队从中学习,而 SRE 通过服务级别承诺 (SLx) 强制执行错误管理,以确保处理所有故障。
SRE 还允许风险预算,使团队能够测试失败的极限以进行重新评估和创新。
利用工具和自动化
DevOps 和 SRE 都使用自动化来改进工作流程和服务交付。 SRE 使团队能够通过灵活的应用程序编程接口 (API) 使用相同的工具和服务。 DevOps 促进自动化工具的采用,而 SRE 确保每个团队成员都可以访问更新的自动化工具和技术。
测量一切
由于 DevOps 和 SRE 都支持自动化,因此您需要持续监控开发的系统,以确保每个流程按计划运行。
DevOps 通过反馈循环收集指标。另一方面,SRE 通过提供 SLI、SLO 和 SLA 来执行测量来强制测量。由于运维是软件定义的,SRE 会监控工作量和可靠性,确保一致的服务交付。
总结 DevOps 和 SRE
SRE 和 DevOps 通常被称为同一枚硬币的两面,SRE 工具和技术补充了 DevOps 理念和实践。 SRE 涉及应用软件工程原理来自动化和增强 IOps 功能,例如:

  • 灾难应对

  • 容量规划

  • 监控

另一方面,DevOps 模型可以通过开发和运营团队之间的协作来快速交付软件产品。
多年来,在所有已经利用 DevOps 的组织中,50% 的公司已经采用 SRE 来增强可靠性。原因之一是 SRE 原则可以增强对依赖自动化的动态应用程序的可观察性和控制。
最后,这两种方法的目标都是增强 IT 生态系统的端到端周期——通过 DevOps 的应用程序生命周期和通过 SRE 的运营生命周期管理。
“深入了解吸引顶级 SRE 人才所需的能力,并通过人工智能运营 (AIOps) 和人工智能服务管理 (AISM) 功能让他们在您的组织中取得成功。”

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容