站点可靠性工程 (SRE) 是一种软件工程实践,它将开发运维 (DevOps) 与传统 IT 运营相结合,以解决客户问题、实现 IT 运营任务自动化、加快软件交付并最大限度降低 IT 风险。
SRE 支持 DevOps 开发运维周期中的弹性、冗余和可靠性,并处理软件程序的日常实施。站点可靠性工程师通常遵循五五开规则:他们将一半的时间用于解决客户问题(例如管理升级和响应事件),另一半时间用于自动执行 IT 运营。这些运营包括生产系统管理、变革管理、事件响应和应急响应。
SRE 团队弥合了软件开发人员希望程序如何运行与程序在实际情况下如何运行之间的差距。站点可靠性工程师直接与客户合作,解决问题并收集有关用户体验的数据。SRE 团队将该数据反馈给开发团队,使其能够更深入地洞察分析软件的运行状况以及需要进行哪些更新。
SRE 明白失败是不可避免的。他们的工作是识别(通过根本原因分析等过程)当前问题的根本原因,并使用监控和记录数据来预测未来潜在的故障。然后,他们设置自动化来解决这些问题,在系统中建立弹性和冗余。
这种对大型软件系统的自动监督减少了系统管理员手动完成 IT 运营任务的需要。消除手动功能有助于 IT 团队节省时间,更准确地执行运营任务,并专注于维持应用程序性能。
站点可靠性工程师是一个技术岗位,需要软件开发和 IT 运营方面的经验。了解这些岗位有助于 SRE 团队履行其在支持软件开发生命周期方面的职责。SRE 的核心战略是通过流程的持续自动化实现系统弹性。
传统上,站点可靠性工程实践的重点是执行 IT 运营和系统管理任务。这些任务包括分析日志、性能调整、应用补丁、测试生产环境、事件管理和事后分析。这些任务最初是手动完成的,非常耗时且容易出现人为错误。站点可靠性工程的现代化涉及这些手动任务的自动化。
监控和记录在 SRE 中发挥着关键作用。SRE 团队使用监控工具来实时跟踪软件系统中发生的事件。监控可即时修复技术问题,并帮助团队预测未来的问题并在其发生之前加以解决。
日志可用作存档并对其进行分析,以深入洞察分析系统的运行情况并提高系统的可观测性。记录可创建路线图,帮助 SRE 团队了解导致意外错误的一系列事件。工程师可自动修复错误并防止其再次发生。监控和记录都有助于工程师识别故障点,并通过自动化编程解决问题,而无需进行手动修复。
SRE 团队还通过一种称为混沌工程的流程来寻找系统缺陷。混沌工程是站点可靠性工程师实施的战略,旨在故意在生产和预生产环境中造成故障。混沌工程的目的是了解生产故障对软件系统的影响,并制定更稳妥的计划来减少未来的故障。
SRE 还专注于容量规划,该流程可确定运行基本业务功能、扩展此类业务功能以及开发新应用程序和功能所需的资源。此外,SRE 团队还建立了指标,用于评估更新交付和新功能实施的情况。
站点可靠性工程师使用各种指标来跟踪服务交付的一致性和软件系统的可靠性,包括:
SLA 制定了服务提供商和客户之间的条款和条件。这些协议规定了性能水平、衡量性能的商定指标以及未能提供服务的影响。SLA 中概述的一项常见服务是运行时间,或服务可用的时间。
错误预算是 SRE 团队使用的工具,用于自动协调公司的服务可靠性与软件开发和创新的速度。错误预算根据服务水平协议确定错误风险级别。
运行时间目标为 99.999%(又称“五个九可用性”),是常见的 SLA 阈值。这意味着每月错误预算(指定月份允许的停机时间总量,不产生合同后果)约为 4 分 23 秒。如果开发团队想要对系统实施新功能或改进,则系统不得超过错误预算。
错误预算可帮助开发团队和运营团队提高服务的稳定性和性能。它们还有助于做出有关部署新功能或应用程序的数据驱动决策,并通过在可接受的范围内承担风险来最大限度地提高创新能力。
SRE 团队还可设定服务级别目标 (SLO),即在指定期限内针对特定服务的商定性能目标。SLO 定义了服务的预期状态,可帮助利益相关者管理特定服务的健康状况,并满足 SLA 的要求。
SLO 使用服务级别指标 (SLI) 衡量。SLI 是定量测量值,以百分比、平均值或比率表示。它们包括服务的实际测量,例如正常运行时间、延迟、吞吐量和错误率。
DevOps 是一种软件开发方法,通过将软件开发和 IT 运营团队的工作相结合并实现自动化,加速交付更高质量的应用程序和服务。DevOps 有助于实现软件开发生命周期 (SDLC) 自动化,促使开发和运营团队共同分担责任,并确保所有利益相关者都能参与 SDLC。
SRE 和 DevOps 是软件工程中的互补战略,可打破孤岛实现更高效、更可靠的软件交付。
而 DevOps 开发运维团队专注于解决问题:“这个软件应该做什么”。SRE 团队致力于回答问题:“如何部署和维护此软件,使其能够按照需要工作?”SRE 团队为 DevOps 开发运维团队提供有关软件性能数据的真实数据,从而为软件开发的理论世界带入实践数据使之平衡。
与 SRE 一样,DevOps 开发运维通过平衡更快地交付应用程序和更改的需求与避免“破坏”生产环境的需求,使企业更加敏捷。SRE 和 DevOps 开发运维都旨在通过建立可接受的错误风险来实现这种平衡。DevOps 开发运维团队专注于进行更新和部署新功能,而 SRE 实践则致力于在系统扩展时保护系统的可靠性。
DevOps 开发运维和 SRE 团队简化了沟通方法,并建立了持续的反馈循环。这样的循环可能像这样工作:当 SRE 团队发现错误的根本原因时,它会将其发现发送给 DevOps 开发运维团队,后者可以为软件的下一个版本开发更新。在此期间,SRE 会建立自动化来解决问题,并跟踪监控和记录数据,以确保问题得到解决。
除了支持 DevOps 开发运维的成功外,站点可靠性工程还可以帮助组织:
利用 AI 和自动化的强大功能,主动解决应用堆栈中的问题。
不仅能实现简单任务的自动化,还能凭借内置的采用和扩展机制,自动处理备受关注且面向客户的创收流程。
了解 AI 如何为 IT 运营提供所需的洞察分析,帮助推动卓越的业务绩效。