常见缓解策略
首先,考虑使用预防性缓解措施来防止故障模式影响用户故事。然后,应考虑纠正性缓解措施。纠正性缓解措施有助于系统自我修复或适应不断变化的条件。以下是每个故障类别的常见缓解措施列表,这些措施与韧性属性保持一致。
故障类别 |
所需韧性属性 |
缓解措施 |
|---|---|---|
单点故障(SPOF) |
冗余和容错能力 |
|
负载过高 |
充足容量 |
|
延迟过长 |
及时输出 |
|
配置错误和错误 |
正确的输出 |
|
故障共担 |
故障隔离 |
尽管其中一些缓解措施只需极少的精力即可实施,但另一些缓解措施(例如采用基于单元的架构以实施可预测的故障隔离和最大限度地减少共担故障)可能需要重新设计整个工作负载,而不仅仅是特定用户故事的组件。如前所述,重要的是要权衡故障模式的可能性和影响,以及为缓解故障模式所做的权衡取舍。
除了适用于每种故障模式类别的缓解技术外,您还应该考虑恢复用户故事或整个系统所需的缓解措施。例如,故障可能会停止工作流程并阻止将数据写入预期目标。在这种情况下,您可能需要运营工具来重新驱动工作流程或手动修复数据。您可能还必须在工作负载中构建检查点机制,以帮助防止在发生故障时丢失数据。或者,您可能需要构建一个按灯机制(andon cord),以暂停工作流程并停止接受新工作,从而防止进一步损害。在这些情况下,您应考虑所需的运营工具和护栏。
最后,在制定缓解策略时,您应该始终假设人为错误不可避免。尽管现代化 DevOps 实践力求实现自动化运营,但由于各种原因,人类仍然必须与工作负载进行交互。错误的人为操作可能会引起任何 SEEMS 类别的故障,例如在维护期间移除过多的节点并导致过载,或者错误地设置功能标志。这些场景实际上是预防性护栏的失效。根本原因分析绝不能止步于“人为失误”的结论,而应探究错误最初之所以发生的原因。因此,您的缓解策略应考虑人类运营人员如何与工作负载组件进行交互,以及如何通过安全护栏防止或最大限度地减少人为运营人员错误造成的影响。