本文是我对SRE实践的介绍,这些实践来自于我组建过的不同SRE团队,这些团队负责管理SaaS平台快速添加特性。
为什么选择Site Reliability Engineering(SRE)?
处于成长期的基于SaaS/PaaS的公司需要:
提升速度
持续提高可靠性
保持精简
上述目标需要SRE实践,如果还没到位的话。下面是我的概述,如果你需要深入研究SRE,可以参考一些关于SRE实践的书籍和博客。
SRE的任务是什么?
方便以下工作:
快速开发
免回归的版本周期
通过自动化解决复杂问题
跨部门共享生产知识
“SRE就是要把风险降到最低。”
实现SRE的重点应该放在哪里?
你如何快速驱动SRE变化取决于你的工程团队结构、文化和SDLC过程的成熟度。在较高的层次上,以下领域将是开始使用SRE的一个很好的框架。
合作和沟通
SRE是一种工程文化,并不是特定于任何垂直功能。只有所有的工程领导者团结在一起,形成一个共同的愿景,这才会成功。
合作:
在工程部门之间设置共享的目标和对象。
领导者接纳并执行。
为各种服务设定“服务水平目标”(SLO)文化。在可靠性和稳定性(it成本)方面,我们要走多远?
明确定义产品/服务所有权,包括将SLO作为生产准备要求的一部分。
沟通:与工程团队的所有成员保持一致的沟通。每个领导者都应该以自己喜欢的方式来推动这一进程。
要从利弊两方面分析我们为什么要做这件事?(要提到商务司机。)
对每个团队/成员的期望是什么?新的结构在未来会是什么样的?
领导如何帮助避免扩大知识差距或减轻未来的挑战/风险?
带有时间表路线图的高层次里程碑——我们如何到达那里?
“聚焦在切实可以实现的目标上。”
人员和团队结构
混合人才使用,优化到最佳结构。
文化:寻求帮助、合作、教导和负责任
雇佣合适的人才(面向未来的以及经验丰富的人才)。
组织团队以利于平滑传播知识。
雇佣员工是为了解决复杂问题,而不是为了扩大规模(通过自动化来扩大规模)。
团队应该对解决复杂的问题感到兴奋。
50%的SRE时间应用于质量工程工作。
“SRE文化应该是一种力量倍增器。”
工具/平台
从POC开始(从小处开始),并在此基础上不断发展。
使用星型方法来实现任何更改。在没有明确目标和预期结果的情况下,不要引入任何改变(无论多么小)。
实现成功:倾听用户(工程师),适应并推动采用的想法。
模板
带有关键性能指标的仪表板(保持简单,愚蠢)。
最佳实践的剧本
用于监视和安全的通用插件/模板。
自动化工具/剧本是版本控制的,并遵循自助模式。
“自动化的重点是解决复杂的问题。”
版本工程学(RE)
发布工程不应该是事后的想法。相反,这是为了一致地测试和验证发行版而构建的主要支柱之一。这是SRE的核心功能:
原则:
自助服务
高速
一致性
加强ACL和策略
质量和安全应该移到SDLC的左边,并且应该是版本工程自动化的一部分。
每个版本都应该通过KPI的镜头进行验证,并与设定的SLO进行比较。
负载和容量在放行前要进行测试和认证。
构建一个测试环境来检测零MTTR,从而避免生产错误。
产品准备就绪后才发布服务。
“服务的可靠性在于了解用户的容忍度。”
监控
在客户端和服务端使用工具收集时间序列数据。
使开发人员能够轻松地向监控系统添加各种指标。
为每个常用指标构建一组可重用的SLI模板;这也使得每个人更容易理解特定SLI的含义。
“如果你不能监控某样东西,那它就没有生产的必要。”
汇报/RCA(事后的)
每次都修正(战术和战略)。
不要责怪任何人,专注于解决方案、过程和技术。
通过适当的发布周期,有一个过程来跟踪问题和采取的修复行动。
定期召开架构和产品评审会议。
“你不可能在没有经历过问题的情况下找到正确的解决方案。”
注意:无所畏惧和协作是组成一个有效的SRE团队的关键特征。
领取专属 10元无门槛券
私享最新 技术干货