什么是站点可靠性工程?
站点可靠性工程 (SRE) 是指使用软件工具自动执行 IT 基础架构任务(如系统管理和应用程序监控)的做法。组织使用 SRE 来确保其软件应用程序在开发团队频繁更新时保持可靠。SRE 特别提高了可扩展软件系统的可靠性,因为使用软件管理大型系统比手动管理数百台计算机更具可持续性。
为什么站点可靠性工程很重要?
站点可靠性描述了应用程序提供给最终用户后的稳定性和服务质量。如果未发现技术问题,软件维护有时会影响软件的可靠性。例如,当开发人员进行新的更改时,可能会无意中影响现有应用程序,并导致软件在某些使用案例中崩溃。
以下是站点可靠性工程 (SRE) 实践的一些好处。
改善了
SRE 改善了开发和运营团队之间的协作。开发人员通常必须对应用程序进行快速更改,以发布新功能或修复关键错误。另一方面,运营团队必须确保服务无缝交付。因此,运营团队需要使用 SRE 实践来密切监控每一次更新,并及时响应因变更而出现的任何问题。
客户体验增强
组织使用 SRE 模型来确保软件错误不会影响客户体验。例如,软件团队使用 SRE 工具来实现软件开发生命周期自动化。这样可以减少错误,意味着团队可以将新功能开发优先于漏洞修复。
操作规划得到改进
SRE 团队接受软件失败的现实可能性。因此,团队需要计划适当的事故响应,以尽量减少停机时间对业务和最终用户的影响。其还可以更好地估计停机成本,并了解此类事故对业务运营的影响。
站点可靠性工程的关键原则有哪些?
以下是站点可靠性工程 (SRE) 的一些关键原则。
应用程序监控
SRE 团队认同软件部署过程中错误在所难免。该团队不会努力寻找完美的解决方案,而是根据服务水平协议 (SLA)、服务水平指标 (SLI) 和服务水平目标 (SLO) 来监控软件性能。在生产环境中部署应用程序后,会继续观察并监控性能指标。
逐步实施更改
SRE 实践鼓励频繁发布较小的更改,以保持系统可靠性。SRE 自动化工具使用一致但可重复的流程来执行以下操作:
- 减少变更带来的风险
- 提供反馈回路以测量系统性能
- 提高变更实施的速度和效率
通过自动化提高可靠性
SRE 使用的策略和流程将可靠性原则嵌入到交付管道的每个步骤中。自动解决问题的一些策略包括:
- 基于服务水平目标制定质量门槛,以便及早发现问题
- 使用服务水平指标自动执行构建测试
- 在软件开发之初做出确保系统弹性的架构决策
什么是站点可靠性工程中的可观察性?
可观察性过程是指当软件为最终用户投入使用时,软件团队为不确定性所做的准备。站点可靠性工程 (SRE) 团队使用工具来检测软件中的异常行为,更重要的是,收集有助于开发人员了解问题原因的信息。可观察性涉及使用 SRE 工具收集以下信息。
指标
指标是指反映应用程序性能或系统运行状况的可量化值。SRE 团队使用指标来确定软件是否消耗过多资源或行为异常。
日志
SRE 软件会生成详细的、带有时间戳的信息,称为日志,以响应特定事件。软件工程师使用日志来了解导致特定问题的事件链。
轨迹
轨迹是对分布式系统中特定函数的代码路径的观察。例如,订单在购物车结账可能涉及以下步骤:
- 与数据库核对价格
- 使用支付网关进行身份验证
- 向供应商提交订单
轨迹由 ID、名称和时间组成。可以帮助软件开发人员检测延迟问题并提高软件性能。
什么是站点可靠性工程中的监控?
监控是指在应用程序中观察预定义指标的过程。开发人员决定哪些参数对于确定应用程序运行状况至关重要,并在监控工具中进行设置。站点可靠性工程 (SRE) 团队收集反映系统性能的关键信息,并在图表中进行可视化。
在 SRE 中,软件团队监控这些指标,以深入了解系统可靠性。
延迟
延迟描述了应用程序响应请求时的延时。例如,网站上提交表单需要 3 秒钟才能将用户引导到确认网页。
流量
流量测量的是同时访问您的服务的用户数。有助于软件团队相应地预算计算资源,为所有用户保持满意的服务水平。
错误
错误是指应用程序未能按照预期执行或交付的情况。例如,当网页无法加载或交易未通过时,SRE 团队会使用软件工具自动跟踪和响应应用程序中的错误。
饱和
饱和表示应用程序的实时容量。高饱和通常会导致性能下降。站点可靠性工程师会监控饱和水平,并确保其低于特定阈值。
站点可靠性工程的关键指标有哪些?
站点可靠性工程 (SRE) 团队使用以下指标衡量服务交付质量和可靠性。
服务水平目标
服务水平目标 (SLO) 是具体的、可量化的目标,您确信软件能够以与其他指标相比合理的成本实现这些目标,例如:
- 正常运行时间或系统运行的时间
- 系统吞吐量
- 系统输出
- 下载速率或应用程序加载的速度
SLO 承诺通过软件向客户交付。例如,您为公司的食品配送应用程序设置了 99.95% 的正常运行时间 SLO。
服务水平指标
服务水平指标 (SLI) 是 SLO 定义的指标的实际度量。在现实生活中,您可能会得到与 SLO 匹配或不同的值。例如,您的应用程序 99.92% 的时间处于启动和运行状态,低于承诺的 SLO。
服务水平协议
服务水平协议 (SLA) 是法律文件,说明当一个或多个 SLO 未满足时会发生什么。例如,SLA 规定,技术团队将在收到报告后的 24 小时内解决客户的问题。如果您的团队无法在指定期限内解决问题,您可能有义务向客户退款。
错误预算
误差预算是指 SLO 的不合规公差。例如,SLO 中 99.95% 的正常运行时间意味着允许的停机时间为 0.05%。如果软件停机时间超过错误预算,软件团队将投入所有资源和精力来稳定应用程序。
站点可靠性工程如何工作?
站点可靠性工程 (SRE) 涉及软件团队中站点可靠性工程师的参与。SRE 团队为 SRE 设置关键指标,并根据系统风险容忍度水平创建错误预算。如果错误数量较少,开发团队可以发布新功能。但是,如果错误超过了允许范围内的错误预算,团队将暂停新的更改并解决现有问题。
例如,站点可靠性工程师会使用服务来监控性能指标并检测异常应用程序行为。如果应用程序存在问题,SRE 团队将向软件工程团队提交报告。开发人员会修复报告的案例并发布更新的应用程序。
开发运维
DevOps 是一种软件文化,打破了开发和运营团队的传统界限。有了 DevOps,开发人员和运营工程师不再孤立地工作。相反,他们可以使用软件工具来改进协作,跟上软件快速更新发布。
SRE 与 DevOps 的对比
SRE 是 DevOps 的实际实现。DevOps 为在日益缩短的开发时间中保持软件质量提供了哲学基础。站点可靠性工程为如何成功实现 DevOps 提供了答案。SRE 确保了 DevOps 团队在速度和稳定性之间取得适当的平衡。
站点可靠性工程师的职责有哪些?
站点可靠性工程师是指使用自动化工具监控和观察生产环境中的软件可靠性的 IT 专家。站点可靠性工程师在发现软件中的问题和编写代码来解决这些问题方面也很有经验。其通常是具有良好编码技能的前系统管理员或操作工程师。以下是一些站点可靠性职责。
运维
站点可靠性工程师将多达一半的时间用于运维工作。这其中包括多个任务,例如:
- 紧急事故响应
- 变更管理
- IT 基础设施管理
工程师使用 SRE 工具自动执行多项运营任务并提高团队效率。
系统支持
站点可靠性工程师与开发团队密切合作,以创建新功能并稳定生产系统。站点可靠性工程师为整个软件团队创建一个 SRE 流程,并随时支持升级问题。更重要的是,站点可靠性团队会向客户支持部门提供成文的程序,以帮助其有效处理投诉。
流程改进
站点可靠性工程师通过举行事故后评审来改进软件开发生命周期。SRE 团队在共享的知识库中记录所有软件问题和相应的解决方案。这有助于软件团队在未来有效地应对类似问题。
常见的站点可靠性工程工具有哪些?
站点可靠性工程 (SRE) 团队使用不同类型的工具来促进监控、观察和事故响应。
容器编排工具
软件开发人员使用容器编排工具在各种平台上运行容器化应用程序。容器化应用程序将其代码文件和相关资源存储在称为容器的单个包中。例如,软件工程师使用 Amazon Elastic Kubernetes Service(Amazon EKS)来运行和扩展云应用程序。
随时待命管理工具
随时待命管理工具是一种软件,允许 SRE 团队规划、安排和管理处理报告的软件问题的支持人员。SRE 团队使用该软件以确保始终有一个支持团队待命,以便及时接收有关软件问题的警报。
事故响应工具
事故响应工具可确保为检测到的软件问题提供清晰的升级途径。SRE 团队使用事故响应工具对报告案例的严重性进行分类并及时处理。这些工具还可以提供事故后分析报告,以防止类似问题再次发生。
配置管理工具
配置管理工具是指将软件工作流自动化的软件。SRE 团队使用这些工具来消除重复性任务,提高工作效率。例如,站点可靠性工程师可以使用 AWS OpsWorks 在 AWS 环境中自动设置和管理服务器。
AWS 如何有助于站点可靠性工程?
AWS Management and Governance 服务为软件团队在不影响系统可靠性的情况下构建、扩展和部署分布式应用程序提供了必要的工具。站点可靠性工程(SRE)团队使用各种 AWS Management and Governance 服务来监控和治理 AWS 和本地计算资源:
- AWS Service Catalog 允许 SRE 团队对 IT 服务进行编目、管理和快速部署
- AWS Systems Manager 为站点可靠性工程师提供了一个集中的管理中心,以获得对软件计算资源的运营见解
- AWS Proton 是用于部署容器化和无服务器应用程序的自动化管理工具
立即创建 AWS 账户,开始使用 AWS 上的站点可靠性工程。