一次项目复盘纪要
方案设计阶段
问题:
- 方案落地需要多个模块同时更新,强耦合,更新不好操作;
- 方案实现前后不兼容,未考虑可持续性,更新失败风险高,无法回滚;
原因:
方案设计不合理
教训:
多个应用服务需要一起更新,无限期延后上线进度,并且无限放大上线风险,基本上处于不敢甚至根本无法上线的状态!
进而导致重新对业务进行分析,对功能模块更新进行解耦,重新制定上线步骤,并独立分阶段上线,整体开销巨大!!!
改进:
- 设计必须考虑前后向兼容
- 各个模块保证独立性
开发自测阶段
问题:
- 带病上线,导致上线时间被拉长,甚至延后
- 等到上线进行测试,出现问题回退,导致版本更新延后
原因:
- 没有充分的自测,意识缺失;
- 没有良好的测试方案的构造,意识薄弱;
教训:
- 一方面因为是项目交接信息缺失或有误,导致开发自测有遗漏点;另一方面,对已知的需要测试的模块,因为没有很好的测试方法,也处于保守等待线上验证,但是线上又不敢操作的两难境地。
改进:
- 开发需要胆大心细,如履薄冰时,也不能畏首畏尾,最好是重新设计测试方法,将风险降低甚至规避。
- 务必对修改的功能点进行明确的测试,并给出明确的验证方法;
- 上线之前必须自行构造相应的测试方法,而不是等到上线之后验证;
- 自测越早越好,为可能的bugfix以及额外的风险预留时间;
提测阶段
问题:
没有系统的开发、测试、线上的环境隔离;
原因:
当前测试的环境不完善;
教训:
测试过程中,遇到的一些问题,排查方法没有进行很好的整理(如外部域名访问不通),导致线上重复踩坑,而redis的数据查询,相应的key之前测试也构造过,线上排查又重复去翻代码进行拼接,重复劳动;
改进:
- 中间的所有操作尽量进行记录,并及时整理,为后面的工作做好铺垫,并方便后续的复盘!
- 梳理并规范各个环境以及相关测试账号;
- 明确QA执行发布操作;
发布阶段
问题:
- 分支使用不规范,未发布的代码合入到了dev分支,导致当前需要上线的代码无法正常合并;
- 发布平台老旧,发布任务命名不规范,导致误操作发布了其他项目;
- 发布人员对整理发布内容熟悉程度不够,导致临时发现其他问题;
- 线上运行版本有额外人工修改的配置,导致走发布任务后将配置回退;
原因:
- 分支管理规范未落实;
- 发布人员的发布任务不规范;
- 线上发布不规范;
教训:
- 归档数据迁移时,因为迁移代码没有很好的验证方式,最后延后到了发布阶段进行操作,此时实际是边调试迁移脚本,边执行发布,大大拖延的发布时间;
- 管理后台也因为在代码合并过程中进行merge等操作,浪费了较多的时间;
改进:
- 验证功能通过后,方可进行上线流程。
- 明确git分支的使用规则,只有验证过,且当天需要发布的代码才合入到dev;
- 发布人员需要进一步梳理发布任务以及自身职责的发布模块;
- 线上发布要严格收口到发布人员以及发布平台,严禁人工操作!
项目跟踪
问题:
对项目的整体进度及风险掌控不足,导致一而再,再而三的延期;
原因:
- 因为是新人,对项目整体熟悉程度不足;
- 自身项目风险意识还是有所欠缺;
教训:
- 从第一次上线时间11.27,到目前12.18杭州侧完成上线,延期了近3周,主要还是开发对风险感知不足;
- 实际上线时,缺少一个完整的上线流程节点时间表;
改进:
- 做好总结,加强开发的业务能力;
- 后续交由QA进行整体发布进度掌控;
- 加强自身的项目owner意识,尽快熟悉业务,做到对风险和进度提前感知;
- 发生项目有延期风险,需要及时告知到相关人员,或者寻求外部帮助;
- 加强项目的进度管控意识,尽量事前规划,而不是事后的Delay;
项目交接
问题:
- 描述不准确
- 信息缺失
原因:
- 时间仓促
- 原负责人意识不足
教训:
- 原有负责人在离职前两天还在写代码;
- 交接文档失真,交接代码存在缺陷,配置错误或者遗漏;
- 原负责人离职之前,接手人没有走过完整的开发、上线、运维流程;
改进:
- 控制交接时间,给交接人1-2周时间进行交接项确认和补充
- 交接项Check,需要接手人进行着项确认,否则视为接手人工作不到位