software_production_drill_20240411.jpg

为什么要做软件项目投产演练?像银行科技系统有成百上千套,比如核心系统、核心中台、信贷系统、信贷中台、信贷额度系统、客户信息管理系统(ECIF)、支付中台、个人手机银行 、企业服务总线(ESB)等。各系统间关联度高,如果一起投产,可能会出现各种各样的异常场景,哪个系统先投产,哪个系统后投产,需要验证什么内容,极端情况下各系统回退版本要怎么应对,因此需要进行投产演练。对于特大型的软件项目,有可能一轮演练还不够,需要第二轮、第三轮甚至第四轮。

投产演练主要步骤如下:

  1. 编制投产演练方案
  2. 评审投产演练方案
  3. 实施投产演练方案

编制投产演练方案

投产演练方案应该包括演练环境、开始和结束时间、投产步骤和时序、执行人和复核人、回退方案、科技验证和业务验证案例等。

此投产演练方案可以由项目经理牵头与高度关联系统的研发负责人编制一份初稿,搭建出整体框架,再由其他系统的研发负责人补充完善。

投产步骤和时序包含了哪些系统先投产,哪些系统后投产,有无相互依赖关系,大概要花多久时间。比如数据仓库的抽数依赖哪些源系统表结构的更新。各系统研发负责人还需要准备系统的投产手册、SQL脚本、二进制包、回退方案等。投产手册要细化每一步做什么,可以指导没有参加过项目的运维人员依据手册,能完成项目部署。

回退方案可以是不回退、关闭业务开关、关闭白名单或者整体回退至上个投产版本,视影响面和可实施性决策。一般只有重大的缺陷,比如无法进行存量业务的提款、还款,才会考虑整体回退。如果不做回退演练,演练的意义就少了一半。项目上线可能会出现各种各样的问题,需要有底线思维,应该包含有极端情况的应对行动。

各系统业务负责人准备投产验证案例。值得注意的是,案例应该是投产当晚或者次日能验证的案例,否则仅仅只是写写,无法得到验证。比如有案例里提到要验证贷款逾期1天后的短信提醒,然而,生产验证过程中并不会这么快产生逾期,起码要一两个月以后才能出现这样的场景,因此不具备验证条件。

评审投产演练方案

为了提高效率,前期的准备往往是各系统各自在准备。各系统各角色之间的分工协作未必考虑得周全,因此需要召开一场投产演练方案的评审会,各角色人员一起碰撞一下思想的火花,从整体考虑整个投产过程可能的问题。

如果有些系统仅仅是配合,关联度没有那么大,未必一定要参加评审会议,可以单独点对点沟通,以保证各方的沟通效率。

在评审会结束之后,由项目经理将投产演练的方案和会议纪要邮件发送。

实施投产演练

正式投产演练过程中,每一个步骤都要有一定的提前量,避免有关联方未执行,影响了整个进程。

比如第二天要演练了,前一天就需要在微信群和工作群都通知一遍时间点和方案,保证负责人和一线实施人员都清楚。像投产包、SQL脚本的准备往往不是一两个小时就能准备好的,还有部分系统对于环境的部署时间也有严格要求,每天可能只能部署一天,需要提前一天做好准备。

又比如即将到所有系统部署完成的计划时间点,提前半小时再确认一下是否都正常部署了。通知到位并及时做好二次确认,才能确保投产演练的顺利进行。

此外,演练过程中如果出现了意外,需要延长时间,还有跟有影响的团队提前做好沟通协商,比如核心系统延后日终批的跑批日期,就要跟申请跑批的测试老师沟通协商好,再在跑批群里征求其他测试老师的同意,协调完成之后再延后跑批时间。

演练过程中遇到的所有问题,由项目经理和各研发负责人记录在共享云文档中,包括问题描述、原因分析和解决措施,以便于结束后的分析复盘,避免真正生产上出现问题。