软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。

稳定性的工作,一般都是水下的工作。就像冰山,真正强大的系统下,要有更加强大的底层支撑,水面下的问题才是真正需要解决的问题。当然不一样的工作内容,水下的工作是不同的,对于盖楼来说,可能就是地基的深度。对于我们写业务逻辑来说,水下的工作就是catchException的处理,异常情况的处理。对于系统来说,水下的工作可能是一些接口系统的稳定性。类似于金字塔结构,下层基础决定上层建筑。对于软件系统来说,稳定性至关重要。

# 稳定性定义

我们通常用平台的可用性去量化平台的稳定性,但是线上故障和线上问题也是稳定性的重要衡量指标。

# 稳定性建设目标

架构设计源于生活,稳定性建设也肯定是源于生活,一般会把稳定性和消防放在一起进行比喻方便大家的理解,处理火灾主要是阶段:在火灾前预防火灾,在第一时间知道发生火灾了,在发生火情的时候如何快速救火。通过火灾处理对比软件系统的稳定性,也就是预防(事前)、发现和处理(事中)了,最后(事后)我们加入了复盘。发生问题不可怕,可怕的是已发生的问题重复发生。一定要杜绝有问题的事情第二次发生。