这次xx产品新版本的试点项目上出现了升级后被迫回退版本的情况。其主要原因是新版本的登录模块引入了一个新的组件依赖,需要安装较新版本的 vc_redist 组件后才能正常使用。然而,这个问题在测试和发版阶段并未被发现,直到用户环境中才体现出来。就导致了用户环境中部分操作系统不满足这个要求,需要手工安装后才能解决。由于涉及的客户端数量较多,逐个手工检查和安装显然是不合理的,因此最终决定回退版本。
尝试回顾分析背后存在的问题:
1、对于升级兼容性考虑不足。我们只盯在了程序功能和实现逻辑上(比如:数据、接口和功能的变化),但忽略了环境上的变化。这种偏差主要源于对过往经验的过度依赖,没有根据这个版本的特点进行充分的审视。
2、测试环节缺少了典型环境的兼容性测试。对于这类客户端本机运行的程序而言,运行环境对其是一个比较重要的因素,根据版本的修改内容,某些情况跑环境兼容测试应该是有意义的。
3、对程序依赖组件管理上的缺失。哪些功能依赖了什么组件,各组件对环境的要求、相应的安装检查策略等,这些没有做专门的管理。这种情况下,就不好针对性做测试和升级风险评估,那么因这类问题引发状况的概率也就不会低。
4、从降低单个项目上升级风险的角度考虑。类似“灰度”升级的模式(先在小范围升级后再视情况逐步扩大升级范围)或许也是一种方式。降低整体风险,更利于推进版本的升级。
这次遇到的问题虽然给我们带来了一些曲折和困扰,但也为我们提供了一个宝贵的契机,让我们从中发现了自身工作中存在的问题和可改进的方向。所以别轻易放过,珍惜和善待。