咱们生存在一个用户依赖于对服务的统一拜访的可靠性时代。在相互竞争的服务之间进行抉择时,对用户来说,没有比可靠性更重要的个性了。然而可靠性是什么意思呢?
为了答复这个问题,咱们将依据可靠性工程中的其余度量来合成可靠性:可用性和可维护性。辨别这些术语并不是语义问题。理解这些差别能够帮忙您更好地将开发工作的优先级放在客户的满意度上。
可用性
可用性是可靠性最简略的组成部分。此度量形容服务运行的工夫百分比,这也被称为服务的“失常运行工夫”。可用性能够通过间断查问服务并以预期的速度和准确性确认返回的响应来监控。
服务的可用性是用户感知可靠性的次要因素。思考到这一点,设定一个 100% 失常运行工夫的指标是很迷人的。然而 SRE 通知咱们失败是不可避免的;导致停机的事变总是产生在工程预期之外。可用性通常用“9”示意,示意失常运行工夫的百分比能够达到多少位小数。一些次要的软件公司会吹牛本人的“5 个 9”或者 99.99% 的失常运行工夫,但永远不会有可确保的 100% 的失常运行工夫。
此外,用户是能够容忍甚至无奈留神到服务的某些畛域呈现宕机。致力于改善超出预期的可用性的开发资源并不会减少客户的满意度,把这些资源用在可维护性上会更好。
可维护性
可靠性的另一个次要组成部分是可维护性。通过形容停机工夫的产生和解决形式,将可维护性因素思考到可用性中。当产生导致停机的事件时,可保护服务能够疾速修复。事件越早失去解决,服务就越快复原可用。
可维护性有两个次要组成部分:主动式可维护性和反应式可维护性。
主动式可维护性 包含构建易于了解和更改的代码库。随着开发的进行,会呈现与现有代码不兼容的问题。如果工程师写的是面条式代码,而不是优先思考可维护性,就容易出问题,并且很难发现和解决问题。被动保护还包含质量保证和测试等程序。
反应式可维护性 形容了服务在事变产生后被修复的能力。这受服务的事变响应过程的影响。大型事变的反馈和防备是必要的,如果事变响应程序牢靠,团队将迅速解决事件。适当的事变反馈也有助于缩小复发。高度可保护的服务容许工程师无效地吸取这些经验教训。
可维护性反映在可用性指标中。缩短停机工夫或停机频率能够进步可用性。然而,可维护性不是实现可用性的惟一伎俩。采取这种办法可能导致倒退资源分配不当。在可维护性方面的投资可能不会立刻带来更好的失常运行工夫。当您重构旧代码以解决技术债权时,服务的性能将与以前雷同,并具备雷同的可用性。直到事件产生,您才会看到这种高可维护性的益处。可维护性应该被看作是可靠性方面的投资,而不仅仅是可用性的一个组成部分。
可靠性
可靠性能够定义为当用户拜访服务时,服务按预期运行的可能性。这仿佛与咱们定义可用性的形式雷同,但有要害的区别。可用性查看服务是否工作,用户是否正在拜访它。如果用户在所有工夫、所有性能上对立拜访服务,可用性将决定可靠性。个别状况下,这不可能产生。
以两种情景为例:
服务 A:
用户登录页面的可用性为 97%
目录搜寻的可用性为 97%
站点设置页面的可用性为 97%
服务 B:
用户登录页面具备可用性为 99%
目录搜寻的可用性为 98%
网站设置页面的可用性为 90%
仅从可用性度量来看,服务 A 胜出。然而如果登录页面被 100% 的用户应用,目录搜寻被 90% 的用户应用,而站点设置页面只有 30% 的用户应用,那么服务 B 就会被认为更牢靠。可靠性须要思考理论应用状况,将可用性指标转化为客户满意度的度量指标。
通过了解零碎的可靠性,开发人员能够避免浪费工夫来改良超出客户预期的可用性。服务级别指标将提早和可用性等指标捆绑到更无效的度量中。而后将服务水平指标设定在顾客不称心的阈值。这种办法从客户的角度来看可靠性,因为对他们来说,服务的可靠性比它的可用性更重要。
可维护性也能够通过这种规范来评估。响应事件所破费的工夫耗尽了服务失常运行工夫的谬误估算……SLI 和 SLO 能够帮忙调配开发工作,以改良可维护性和最影响客户满意度的事件响应过程。
可靠性不仅仅是度量的汇合或代码库的品质。这是一个全局概念,蕴含了用户的观点、变动和增长的偶然性以及开发代码的人员。这种整体办法是 SRE 的根底,是实际的汇合,也是进步服务可靠性的文化课程。