背景
在很久很久以前,俺在一个《基于语音识别的智能电子病历》项目中。公司的BOSS也是懂技术的。BOSS制定了很多规定应对突发的技术故障和危机。
BOSS在开发上的那些规定
一、版本的前后兼容
严格的版本控制,每个版本都备份编译后的文件、源码、配置等。
系统支持前后版本的回滚和升级。我们始终有3条线。
- 预发布线:部署了最新的预览版本。
- 生产线:部署了发布的版本。
- 备份线:部署了前一个版本。
预发布线、生产线、备份线都是连接了相同的数据存储,只是使用的服务器数量不同,生产线使用的服务器最多。3条线上的数据是一致的,备份线上功能少一点,能够正常使用。预发布线上的功能最新。
数据服务方面也是能兼容各个版本。有各种设置,数据存储服务的API也有分各自的版本。好处是:每个版本的源码都能正常运行,坏处是 20多年了,代码量非常庞大。其实可以把 很旧的代码清掉的,只是大家觉得留着也是一种情怀。
我们的客户比较多,我们选择了少量的客户放在了 预发布线 和 备份线 上。所以 三条线上都有客户在使用。
升级时,也是3条线都升级。因为 在 预发布线 上产品已经运行过一段时间了,所以基本都是稳定的一般不会出大问题。万一出了问题,就把线 切回来。
二、双源
机房供电双源的,一般不会停电。还有UPS 和 柴油发电机。
宽带网络有3个不同厂商的接入。
三、备份
除了常规的备份之外,重要数据定期复制到硬盘上,保存在防火防水的保险箱里。
成功的应对
- 宽带被挖断了一根,没啥影响
- 断电,木问题
- 程序有bug,切备份线
- 地震,服务照常在线