双鸭山搞技术的同行都遇过这种事:升级个组件做安全加固,漏洞补上了,系统里某个老功能瘫了。加固和兼容的平衡,靠的是流程不是运气。一套守则给你。
变更窗口和依赖清单
所有加固操作定在变更窗口做:低峰时段、有人盯着、当天回得来。动手前列依赖清单:系统用的 PHP、数据库、第三方库各什么版本,升级目标版本跟它们兼容吗。查官方变更日志,标出废弃函数和 breaking change——这一小时的功课,省的是半夜救火。宝山一位同行的教训是升级 PHP 版本,老系统里两个扩展不兼容,整站白屏,就是没做这步功课。
先备份,再灰度
老规矩不变:改前全量备份,配置和数据分开存。升级有条件的走灰度:先在一台测试机或备用环境升级跑三天,主业务系统观察无恙再动。灰度不是洁癖,是给老代码留适应期——很多兼容问题不在升级当场炸,在跑了三天后某个犄角旮旯炸。
验证清单要对老功能
加固后的验证别只看新功能,专挑老功能试:导出 Excel、老接口调用、批量导入,这些用着旧写法的地方最容易断。验证清单列全了挨条过,比“打开首页没问题”靠谱一百倍。有条件的老接口,加固前先跑一轮自动化回归,没有自动化的,手工过核心流程也行。
回退预案随时在手
升级出兼容问题,两小时内能回退到备份版本,业务先活着,兼容问题再慢慢修。回退演练跟备份一样要真做过一次——演练过才知道坑在哪。回退后把兼容问题单独立项,别慌着再升级,慢慢补。
再补一句心得:不是所有加固都要立刻上。低风险补丁及时打,大版本升级等稳定期,挑业务最闲的月份做,秋收季、活动季别动生产系统。
总结
加固兼容守则四条:变更窗口加依赖清单、备份加灰度、验证清单专挑老功能、回退预案演练过。你上次升级有没有先查变更日志?没有的话,下次升级把这步补上。有拿不准的,把你的情况发我,我帮你对着这套办法过一遍,该先动哪步就先动哪步。这事不难,难的是动手,从今晚就能做的那件小事开始就行。你先按上面几步走一遍,走到哪步卡住了再来找我,咱们接着往下调。这事在双鸭山尤其受用,集贤、友谊、宝清的不少老板都这么干过。