9月底的时候,我们团队负责的两个系统在几周内连续发生了两次线上的生产故障,虽然最后并没有发生严重的损失,但是领导免不了要提一些更高的要求,围绕 保持安全稳定,避免故障再次发生
这个目标需要梳理种种可能的优化措施,也借此机会来梳理下我对于如何做好运维管理工作的一些看法,欢迎各位同行批评指正。
本文中所说的运维是指应用系统的运维工作,与传统的Linux运维、数据库运维不同,应用系统运维更多的是从一个线上的业务系统能否安全稳定运行的角度来思考,包括系统日常的运行状况是不是正常、遇到线上生产故障能不能快速恢复、对于突发事件有没有对应的处置手段等等,总的目的只有一个,就是要想尽办法保障不管在什么情况下,都有措施或手段能够快速的恢复业务的运行。当然具体到不同业务系统,可以根据业务时效性要求和重要性要求划分不同的保障等级,本文略过不表。
应用系统运维与面向单个产品的运维相比,有以下两个特点:
这两个特点决定了应用系统运维管理人员没有办法精通所有的领域,如何实现运维的目标更多的要靠管理手段而不是技术能力,管理手段也大体上分为三个层次:
我认为这三个层次的重要性依次降低,如果我们做好了前面的功课,可能会降低后面事情发生的概率,下面依次展开说一下每个层次的具体手段。
在执行快速恢复业务手段之前,我们都应该牢记把故障设备的现场信息收集记录下来,为开发人员排查、再现问题提供重要的现场数据。
如果前两个部分的手段都不能帮助解决生产问题,到这个层次需要有提前的准备才行,例如日常的备份、异地的备份等等,如果日常的备份也没有,那还有一个终极的办法,那就是 拉开发来上紧急版本啊
。