尽管站点可靠性工程已经存在了一段时间,但也只是近几年才在业界获得一些名声。但人们对于站点可靠性工程师 的作用仍然存在很多疑问。
人们将 SRE 与运营、系统管理员等进行比较,但这种比较不足以说明他们在现代软件环境中所发挥的作用。他们承担的责任多于运营。他们通常具有系统管理背景,同时也具备软件开发技能。SRE 结合了所有这些技能,确保复杂的分布式系统能够顺利运行。
那么他们是怎么做到这一切呢?
1. 自动化一切自动化并不仅限于对软件构建和一些验收测试进行自动化,还包括 CI/CD 和基础设施的创建和修补,以及监控、警报和自动响应某些事件。
2. 监控分布式系统随着分布式系统的普及,对监控的需求也在增长。仅仅启动和运行应用程序是不够的。我们还需要确保基础设施运行正常,并确保所有其他内部依赖项都可访问且运行正常。此外,应用程序的业务功能应该提供适当的监控功能,以验证它们是否运行正常。
3. 提供待命支持与传统的运营角色类似,SRE 也有轮班待命的职责。除了监控基础设施和他们自己的服务之外,开发团队还可以向他们咨询和请他们一起进行故障排除。
4. 管理事件在管理事件时,SRE 需要运用额外的专业技能来确保一切顺利。例如,在发生中断时,可能有很多方法来诊断和解决问题。因此,为了妥善管理事件,必须有人监督和促进所有相关人员的行为。
5. 事后调查在进行事后调查时,所有相关方都被汇聚在一起,目标是分析事故期间都发生了什么,并找出根本原因。参与者还将决定将来如何防止或修复同样的事件。
6. 跟踪中断跟踪中断的用途包括监控低优先级事件。这些事件可能不会给消费者带来真正的问题,但是观察长期趋势和时间可以帮助隔离和解决那些似乎找不到原因的 bug。
7. 与开发团队合作除了在轮班待命期间为开发团队提供支持,SRE 还提供咨询和故障排除服务,这样可以帮助其他 SRE 团队和软件开发团队。
8. 创建服务水平指标和目标服务水平指标(SLI)是关于如何衡量服务水平目标(SLO)的协议。SRE 通过提供历史服务性能数据来协助这些工作。它们还有助于为未来提供切合实际的目标,并可能为客户提供适当的 SLA 建议。