2.1 可靠性工程
可靠性工程作为一门学科已经存在了几十年。它是系统工程的一个子集,研究如何正确地构建复杂系统(它本身也存在了几十年)。当你讨论计算机系统,特别是基于微服务的架构时,你可能听说过“复杂系统”这个词,但如果你只是在这些上下文中听到过,那么这将是科技行业部分采用或过度采用具有更具体含义和历史的术语的又一个例子。复杂系统无处不在,从大楼到汽车,再到我们的生态环境。事实上,大多数复杂系统的分析都是在这类事情中进行的。
除了可靠性工程,你可能听说过许多其他密切相关的学科:安全工程、弹性工程、需求工程等。这些都不是技术领域独有的,它们都经过了大量的研究,比现代计算机系统还要古老。
我们应该对此心存感激,因为像可靠性工程和安全工程这样的东西是我们能够在穿越一座桥梁并确信它不会在我们脚下倒塌的原因。我的意思不是说在你使用软件时不知道有这些东西,只是这些知识并没有像它应该的那样被广泛认知。
基于SLO的可靠性方法为你提供了额外的数据用于做出决策,从而使你的系统更加可靠。我们在本书中将要讨论的概念并不是使复杂系统可靠,或使这些系统具有弹性、健壮性或安全性的唯一概念。SLO是一种收集数据的方法,帮助你进行讨论并做出决策,从而使你能够采取更好的方法来改进你的系统。它们有助于帮助制定基于数据驱动的决策,并让系统设计者更加高效。
归根结底,可靠与否在很大程度上取决于你的系统或服务实际是什么以及它需要做什么。虽然为提高可靠性而需要进行的实际更改可能对于每个系统都不相同,但确保以正确的方式考虑可靠性是正确的。计算机系统提供了各种各样的服务,但是考虑可靠性时考虑“这个服务是否在做它需要做的事情?”是一个很好的方法。使用基于SLO的服务可靠性方法只是将软件工程转变为真正的工程学科的一步。
对许多人来说,服务的可靠性可能意味着很多事情,但是如果你的目标是拥有快乐的用户,那么良好的服务性能必须包括你的服务为你的用户做需要它做的事情。这看起来似乎不太牵强,但事实上,要找出用户所需的一切并非易事。更重要的是,用户的需求和期望会随着时间的推移而发生变化,这种变化通常是不可预测的。