作者 | 阿里文娱高级开发工程师 云琰
责编 | 屠敏
谈面向失败的设计
1、什么是面向失败的设计?
面向失败的设计,就是以“失败”为对象,天然为了失败而存在的设计思想,在一开始的系统设计阶段就考虑到各种失败场景,把面向失败当成是系统设计的一部分,准备好从失败中恢复的策略。
2、为什么要面向失败设计?
因为无所不在的失败场景,比如硬件问题,软件bug,配置变更错误,系统恶化,超预期流量,外部攻击,依赖库问题,依赖服务问题。
并且,这些一旦失败,轻则出现业务不可用,影响用户体验和企业声誉;重则导致数据永久丢失、业务再无恢复可能。例如,911事故发生前,约有350家企业在世贸大厦工作。事故后,有200家企业由于重要系统被破坏,关键数据丢失而倒闭。
3、怎么面向失败设计?
在软件的整个生命周期中,不同的阶段面对失败场景有不同的应对规则。在设计阶段将系统的架构简单化,结构层次分明;在发布阶段尽量做到最小变更原则,小规模,多次迭代;