我们生活在一个用户依赖于对服务的一致访问的可靠性时代。在相互竞争的服务之间进行选择时,对用户来说,没有比可靠性更重要的特性了。但是可靠性是什么意思呢?
为了回答这个问题,我们将根据可靠性工程中的其他度量来分解可靠性:可用性和可维护性。区分这些术语并不是语义问题。了解这些差异可以帮助您更好地将开发工作的优先级放在客户的满意度上。
可用性
可用性是可靠性最简单的组成部分。此度量描述服务运行的时间百分比,这也被称为服务的“正常运行时间”。可用性可以通过连续查询服务并以预期的速度和准确性确认返回的响应来监控。
服务的可用性是用户感知可靠性的主要因素。考虑到这一点,设定一个100%正常运行时间的目标是很诱人的。但是SRE告诉我们失败是不可避免的;导致停机的事故总是发生在工程预期之外。可用性通常用“9”表示,表示正常运行时间的百分比可以达到多少位小数。一些主要的软件公司会吹嘘自己的“5个9”或者99.99%的正常运行时间,但永远不会有可确保的100%的正常运行时间。
此外,用户是可以容忍甚至无法注意到服务的某些领域出现宕机。致力于改善超出预期的可用性的开发资源并不会增加客户的满意度,把这些资源用在可维护性上会更好。
可维护性
可靠性的另一个主要组成部分是可维护性。通过描述停机时间的产生和解决方式,将可维护性因素考虑到可用性中。当发生导致停机的事件时,可维护服务可以快速修复。事件越早得到解决,服务就越快恢复可用。
可维护性有两个主要组成部分:主动式可维护性和反应式可维护性。
主动式可维护性包括构建易于理解和更改的代码库。随着开发的进行&#