每当我与客户和合作伙伴谈论可靠性时,我都会被提醒,虽然组织和客户之间的目标和优先级不同,但归根结底,每个人都希望他们的服务能够发挥作用。作为客户,您希望能够在方便的时候在线进行操作。作为一个组织或服务提供商,您希望您的客户在他们想要的任何时候执行他们想要执行的任务。
本文是关于构建弹性服务的四部分系列中的第一篇。在我的前两篇文章中,我将讨论与业务战略相关的主题,然后我们将更深入地研究技术细节。四个帖子的完整系列将涵盖:
- 1. 可靠性与弹性——可靠性和弹性之间有什么区别,为什么重要?
- 2. 与可靠性相关的常见威胁——DIAL(发现、错误、授权/身份验证、限制/延迟)是一种方便的助记符,可帮助团队以结构化的方式集思广益,以解决其服务组件之间交互的潜在故障。关于故障模式和故障点的头脑风暴是弹性建模和分析 (RMA) 的关键阶段,可以帮助团队提高服务的可靠性。
- 3. 可靠性增强技术——以 DIAL 中的“D”和“A”为例,我们将研究一些可以纳入与发现和身份验证相关的设计中的可靠性增强技术。
- 4. 可靠性增强技术——以 DIAL 中的“I”和“L”为例,我们将研究一些可用于与错误和限制相关的设计中的可靠性增强技术。
我的目的是深入了解 Microsoft 如何看待可靠性以及我们为提高客户服务可靠性而采用的流程和技术。
那么什么是可靠性?当我询问客户和合作伙伴时,最常见的回答是性能、速度、可用性的一致性——也许最重要的是——弹性。我们都同意的一件事是,要使系统或服务可靠,用户必须相信“它可以正常工作”。
电气和电子工程师协会 (IEEE) 可靠性协会指出,可靠性 [工程] 是“一门设计工程学科,它应用科学知识来确保系统在给定的环境中在所需的时间内执行其预期功能,包括能够在整个生命周期内测试和支持系统。”对于软件,它将可靠性定义为“在特定环境中特定时间段内软件无故障运行的概率”。
可靠的云服务本质上是按照设计者的预期、预期的时间以及客户连接的任何位置运行的服务。这并不是说每个组件都必须在 100% 的时间内完美运行。最后一点让我们明白了我认为可靠性和弹性之间的区别。
可靠性是云服务提供商追求的结果——它就是结果。弹性是基于云的服务能够承受某些类型的故障,但从客户的角度来看仍保持正常运行的能力。换句话说,可靠性是结果,而弹性是实现结果的方式。一项服务可以被描述为可靠,仅仅因为该服务的任何部分都没有发生过故障,但该服务不能被视为具有弹性,因为这些增强可靠性的能力可能从未经过测试。
这里的关键要点是在软件开发生命周期的每个阶段关注弹性以及在您的服务中设计和构建弹性的重要性。