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

一名男子使用计算机工作的鸟瞰图

作者

Camilo Quiroz-Vázquez

IBM Staff Writer

Michael Goodwin

Staff Editor, Automation & ITOps

IBM Think

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

站点可靠性工程 (SRE) 是一种软件工程实践,它将开发运维 (DevOps) 与传统 IT 运营相结合,以解决客户问题、实现 IT 运营任务自动化、加快软件交付并最大限度降低 IT 风险。

SRE 支持 DevOps 开发运维周期中的弹性、冗余和可靠性,并处理软件程序的日常实施。站点可靠性工程师通常遵循五五开规则:他们将一半的时间用于解决客户问题(例如管理升级和响应事件),另一半时间用于自动执行 IT 运营。这些运营包括生产系统管理、变革管理事件响应和应急响应。

SRE 团队弥合了软件开发人员希望程序如何运行与程序在实际情况下如何运行之间的差距。站点可靠性工程师直接与客户合作,解决问题并收集有关用户体验的数据。SRE 团队将该数据反馈给开发团队,使其能够更深入地洞察分析软件的运行状况以及需要进行哪些更新。

SRE 明白失败是不可避免的。他们的工作是识别(通过根本原因分析等过程)当前问题的根本原因,并使用监控和记录数据来预测未来潜在的故障。然后,他们设置自动化来解决这些问题,在系统中建立弹性和冗余。

这种对大型软件系统的自动监督减少了系统管理员手动完成 IT 运营任务的需要。消除手动功能有助于 IT 团队节省时间,更准确地执行运营任务,并专注于维持应用程序性能。

站点可靠性工程如何运作?

站点可靠性工程师是一个技术岗位,需要软件开发和 IT 运营方面的经验。了解这些岗位有助于 SRE 团队履行其在支持软件开发生命周期方面的职责。SRE 的核心战略是通过流程的持续自动化实现系统弹性。

传统上,站点可靠性工程实践的重点是执行 IT 运营和系统管理任务。这些任务包括分析日志、性能调整、应用补丁、测试生产环境、事件管理和事后分析。这些任务最初是手动完成的,非常耗时且容易出现人为错误。站点可靠性工程的现代化涉及这些手动任务的自动化。

监控和记录在 SRE 中发挥着关键作用。SRE 团队使用监控工具来实时跟踪软件系统中发生的事件。监控可即时修复技术问题,并帮助团队预测未来的问题并在其发生之前加以解决。

日志可用作存档并对其进行分析,以深入洞察分析系统的运行情况并提高系统的可观测性。记录可创建路线图,帮助 SRE 团队了解导致意外错误的一系列事件。工程师可自动修复错误并防止其再次发生。监控和记录都有助于工程师识别故障点,并通过自动化编程解决问题,而无需进行手动修复。

SRE 团队还通过一种称为混沌工程的流程来寻找系统缺陷。混沌工程是站点可靠性工程师实施的战略,旨在故意在生产和预生产环境中造成故障。混沌工程的目的是了解生产故障对软件系统的影响,并制定更稳妥的计划来减少未来的故障。

SRE 还专注于容量规划,该流程可确定运行基本业务功能、扩展此类业务功能以及开发新应用程序和功能所需的资源。此外,SRE 团队还建立了指标,用于评估更新交付和新功能实施的情况。

高速公路鸟瞰图

在云端保持清醒头脑 


获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。

站点可靠性工程指标

站点可靠性工程师使用各种指标来跟踪服务交付的一致性和软件系统的可靠性,包括:

服务级别协议 (SLA)

SLA 制定了服务提供商和客户之间的条款和条件。这些协议规定了性能水平、衡量性能的商定指标以及未能提供服务的影响。SLA 中概述的一项常见服务是运行时间,或服务可用的时间。

错误预算

错误预算是 SRE 团队使用的工具,用于自动协调公司的服务可靠性与软件开发和创新的速度。错误预算根据服务水平协议确定错误风险级别。

运行时间目标为 99.999%(又称“五个九可用性”),是常见的 SLA 阈值。这意味着每月错误预算(指定月份允许的停机时间总量,不产生合同后果)约为 4 分 23 秒。如果开发团队想要对系统实施新功能或改进,则系统不得超过错误预算。

错误预算可帮助开发团队和运营团队提高服务的稳定性和性能。它们还有助于做出有关部署新功能或应用程序的数据驱动决策,并通过在可接受的范围内承担风险来最大限度地提高创新能力。

服务级别目标 (SLO)

SRE 团队还可设定服务级别目标 (SLO),即在指定期限内针对特定服务的商定性能目标。SLO 定义了服务的预期状态,可帮助利益相关者管理特定服务的健康状况,并满足 SLA 的要求。

服务级别指标 (SLI)

SLO 使用服务级别指标 (SLI) 衡量。SLI 是定量测量值,以百分比、平均值或比率表示。它们包括服务的实际测量,例如正常运行时间、延迟、吞吐量和错误率。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

SRE 和 DevOps 开发运维

DevOps 是一种软件开发方法,通过将软件开发和 IT 运营团队的工作相结合并实现自动化,加速交付更高质量的应用程序和服务。DevOps 有助于实现软件开发生命周期 (SDLC) 自动化,促使开发和运营团队共同分担责任,并确保所有利益相关者都能参与 SDLC。

SRE 和 DevOps 是软件工程中的互补战略,可打破孤岛实现更高效、更可靠的软件交付。

而 DevOps 开发运维团队专注于解决问题:“这个软件应该做什么”。SRE 团队致力于回答问题:“如何部署和维护此软件,使其能够按照需要工作?”SRE 团队为 DevOps 开发运维团队提供有关软件性能数据的真实数据,从而为软件开发的理论世界带入实践数据使之平衡。

与 SRE 一样,DevOps 开发运维通过平衡更快地交付应用程序和更改的需求与避免“破坏”生产环境的需求,使企业更加敏捷。SRE 和 DevOps 开发运维都旨在通过建立可接受的错误风险来实现这种平衡。DevOps 开发运维团队专注于进行更新和部署新功能,而 SRE 实践则致力于在系统扩展时保护系统的可靠性。

DevOps 开发运维和 SRE 团队简化了沟通方法,并建立了持续的反馈循环。这样的循环可能像这样工作:当 SRE 团队发现错误的根本原因时,它会将其发现发送给 DevOps 开发运维团队,后者可以为软件的下一个版本开发更新。在此期间,SRE 会建立自动化来解决问题,并跟踪监控和记录数据,以确保问题得到解决。

SRE 的优点

除了支持 DevOps 开发运维的成功外,站点可靠性工程还可以帮助组织:

  • 通过跟踪所有组织服务的指标、日志和轨迹,提高服务健康的可见性,并加强根本原因分析能力。

  • 通过与客户的日常互动,以及与 DevOps 开发运维团队协作共享用户数据,提高软件系统的可靠性。

  • 通过自动化人工流程,消除劳累的工作、减少错误并更精确地解决问题,从而扩展软件系统。

  • 通过帮助开发和运营团队了解违反 SLA 的成本,并帮助管理层量化系统可靠性对生产、销售、营销、客户服务和其他业务职能的影响来量化停机和中断成本。

  • 通过建立高效的值班流程和简化警报工作流来优化事件响应。

  • 要建立一个现代化的网络运营中心,可将对 IT 运营的深入了解与机器学习和自动化相结合,将警报直接发送给负责解决问题的人员。

SRE、云和云原生开发

当组织从传统 IT 和本地数据中心迁移混合云时,通常会生成更多的运营数据。SRE 在利用这些数据实现系统管理、运营和事件响应自动化,提高企业可靠性方面发挥着关键作用,尤其是当 IT 环境变得更加复杂时。

云原生开发方法(具体而言,将应用程序构建为微服务并将其部署在容器中)可以简化应用程序开发、部署和可扩展性。但云原生开发也创建了日益分散的环境,使行政、IT 运营和管理变得复杂。

SRE 团队可以支持云原生方法带来的快速创新,并提高系统可靠性,而不会给 DevOps 开发运维团队带来更大的运营压力。

相关解决方案
IBM Instana Observability 新一代应用性能管理平台

利用 AI 和自动化的强大功能,主动解决应用堆栈中的问题。

深入了解 IBM Instana Observability
自动化咨询服务

不仅能实现简单任务的自动化,还能凭借内置的采用和扩展机制,自动处理备受关注且面向客户的创收流程。

深入了解自动化咨询服务
AIOps 解决方案

了解 AI 如何为 IT 运营提供所需的洞察分析,帮助推动卓越的业务绩效。

深入了解 AIOps 解决方案
采取下一步行动

了解 AI 如何为 IT 运营提供所需的洞察分析,帮助推动卓越的业务绩效。

深入了解 Instana Observability 体验 Instana