SRE方法论之拥抱风险

简介: 系统不可能100%可靠,人都不可能100%健康,更何况我们人类创造的系统?所以,任何软件系统都不应该一味地追求 100%可靠。事实证明,可靠性超过一定值后,再提高可靠性对于一项服务来说,结果可能会更差而不是更好

一、系统不可能100%可靠

系统不可能100%可靠,人都不可能100%健康,更何况我们人类创造的系统?所以,任何软件系统都不应该一味地追求 100%可靠。事实证明,可靠性超过一定值后,再提高可靠性对于一项服务来说,结果可能会更差而不是更好!极端的可靠性会带来成本的大幅提升:比如过分追求稳定性限制了新功能的开发速度和产品交付速度,并且很大程度地增加了投资成本和运维成本。

二、管理风险

不可靠的系统会影响产品的信誉,虽然系统不可能100%可靠,但我们也要减少系统出故障的几率。然而,经验表明,可靠性进一步提升的成本并不是线性增加的:可靠性的下一个改进可能比之前的改进成本增加100倍。基于以上矛盾点,SRE的做法是管理风险,目标是:我们会努力提高一项服务的可靠性,但不会超过该服务需要的可靠性。管理风险旨在寻求快速创新和系统可靠性的平衡,而不是简单地将可靠性最大化。

三、度量风险

SRE的做法是通过一个客观的指标来体现一个系统的可靠性(或者是风险)。对于大多数服务而言,最直接的能够代表风险承受能力的指标就是对于计划外停机时间的可接受水平。对于系统而言,这个指标通常是基于系统正常运行时间比例的计算得出的。

可用性=系统正常运行时间/(系统正常运行时间+停机时间)

使用这个公式,我们可以计算出一年内可接受的停机时间,从而可以使可用性达到预期目标。举例来说,一个可用性目标为99.99%的系统最多在一年中停机52.56分钟,就可以达到预计的可用性目标。当然,并不是所有的系统或者组件适用于这个公式,比如也可以通过请求成功率来定义服务可用性,具体如何度量还要结合实际情况灵活应对。

四、确定服务可靠性目标

如果 100% 不是一个正确的可靠性目标,那么多少才是呢?这其实并不是一个技术问题而是一个产品问题。要回答这个问题,必须考虑以下几个方面:

  • 基于用户的使用习惯,服务可靠性要达到什么程度用户才会满意?
  • 如果这项服务的可靠程度不够,用户是否有其他的替代选择?
  • 服务的可靠程度是否会影响用户对这项服务的使用模式?

为了建立起一个合理的可靠性目标,SRE必须与产品负责人一起努力,将一组商业目标转化为明确的可以实现的工程目标。在实践中,这种转化说起来容易做起来难,SAAS层软件和IAAS层基础设施转化的方式又各不相同。

五、错误预算

SRE和产品负责人必须对每个系统建立起一个合理的可靠性目标。一旦建立,“错误预算”就是“1-可靠性目标”。如果一个服务的可靠性目标是99.99%,那么错误预算就是0.01%,这意味着产品研发部门和SRE部门可以在这个范围内将这个预算用于新功能上线或者产品的创新等任何事情。

错误预算可以用于什么范畴呢?研发团队需要用这个预算上线新功能,吸引新用户。理想情况下,我们应该使用错误预算来最大化新功能上线的速度,同时保障服务质量。这个基本模型建立起来之后,许多常见的战术策略,例如灰度发布、AB测试等手段就全说得通了。这些战术性手段都是为了更合理地使用整个服务的错误预算。

SRE通过引进“错误预算”的概念,解决了研发团队和 SRE 团队之间的组织架构冲突。SRE 团队的目标不再是“零事故运行”,SRE团队和产品研发团队目标一致,都是在保障业务服务可靠性需求的同时尽可能地加快功能上线速度。这个改动虽小,意义却很大。一次“生产事故”不再是一件坏事,而仅仅是创新流程中一个不可避免的环节,两个团队通过协作共同管理它。

相关文章
|
5月前
产品运营方法论问题之运营的方法论有哪些关键步骤
产品运营方法论问题之运营的方法论有哪些关键步骤
|
运维 监控 搜索推荐
SRE方法论之服务质量目标
为了量化客户对服务可靠性的期望,找到客户对可靠性满意的点,我们需要制定针对用户的服务质量目标,并且努力去达到这个质量目标。在这个过程中,我们需要定义一些服务质量指标(SLI)、服务质量目标(SLO),以及服务质量协议(SLA)。这三项分别是指该服务最重要的一些基础指标、这些指标的预期值,以及当指标不符合预期时的应对计划。
|
安全 架构师 网络安全
积极防御体系进阶:《DevSecOps敏捷安全》
积极防御体系进阶:《DevSecOps敏捷安全》
|
运维 监控 负载均衡
《泛娱乐行业技术服务白皮书》——四、泛娱乐业务保障与调优最佳实践——4.1游戏运维SRE实践——4.1.1 制定SRE黄金准则
《泛娱乐行业技术服务白皮书》——四、泛娱乐业务保障与调优最佳实践——4.1游戏运维SRE实践——4.1.1 制定SRE黄金准则
148 0
|
移动开发 前端开发 小程序
团队和技术建设的方法论
团队和技术建设的方法论
360 0
|
运维 安全 Devops
了解DevOps文化和一些实施方法
太多的错误,太多的时间投入生产功能,编码了数周,太多可避免的事件,今天每个人都意识到了:开发人员和运维必须相互交谈。好的。但是一旦我们说了那句话,具体我们该怎么做呢?本文的目的是告诉您更多有关DevOps 的信息,以及如何在业务中实施 DevOps。
206 0
了解DevOps文化和一些实施方法
|
数据可视化 架构师 机器人
RPA成功实施落地的7个关键因素详解(中)
本篇文章或许能让你大为吃惊,因为它将和你所看到的绝大部分RPA介绍文章不太一样,你将从中了解到RPA并非是万能的,同时并非所有自动化需求都适合用RPA来解决,能否成功实施RPA解决方案,关键甚至不再于这个RPA技术的本身,而与企业内部业务管理思想有关系。
|
自然语言处理 安全 架构师
RPA成功实施落地的7个关键因素详解(上)
RPA(机器人流程自动化)是基于计算机编码以及基于规则的软件,通过执行重复的基于规则的任务来将手工活动进行自动化的一种技术,这个技术通过录制模拟人电脑端鼠标点击、键盘敲打的行为。
|
架构师 机器人 测试技术
RPA成功实施落地的7个关键因素详解(下)
本章有些内容(例如文化建设、充分沟通)你或许会觉得太虚了,似乎完全没有必要,有些内容你甚至会嫌麻烦,但事实证明正是前期这些内容充分做到位,才消除了很多不必要的麻烦,从而在未来长期的RPA旅途中获益无穷,甚至迷恋上RPA流程自动化为您带来的整个企业效率提升的好处。
阿里云RPA成功实施落地的关键因素详解(下)
2019年RPA市场迎来大爆发,以uipath为代表的公司估值30亿美金,国内市场以阿里云为代表深耕了RPA多年,本文章分为由浅入深上中下三部分以阿里云RPA为例,全面讲解如何成功实施RPA自动化解决方案。