Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

12.7. 升级风险

12.7.1. 求稳心态不可取

比升级风险更高的是维持现状不升级!

国内互联网公司开发现状,不是在重构,就是在重构的路上。

这是因为国内互联网公司创业之初不重视技术,急于拿出demo版本给投资人看,此后便机遇这个demo修修补补,至少前期是不考虑架构的。

一旦不规范的行为蔓延开成为常态,再做规范是极其痛苦的,就如同裹脚,一旦中途放开,再裹是很痛苦的。同时人们常常认为要做快,就不可能做好,并且形成思维闭环。

于是便产生了求稳心态,运行得好好的,为毛要升级?只要代码能够用运行,就不想对他做升级和优化。同时中国程序员80后在企业工作平均工作年限是 3年,90后平均2.5年,00后整顿职场,半年就换一份工作,吧问题甩给接盘侠。

大约在10几年前,我曾经接手过一个老项目,是SSH(Struts + Spring + Hibernate) 框架开发的,没过多久便爆出了严重的 Struts 漏洞,入侵者可以远程执行SHELL,修改文件,下载数据库,此时 Struts 官方早已不维护该版本。我们用了运维技术堵住了漏洞,为开发小伙伴争取了一周时间修复BUG。

最近换工作,又是一个轮回,项目使用大量的第三方包,很多包早已停止开发和维护,目前虽然能运行,保不齐哪天就会出现重大漏洞。对系统进行CVE漏洞扫描之后,有些项目使用了老旧第三方库,导致现有项目无法升级,或升级成本巨高,总之非常尴尬。

12.7.2. 怎样才能保持持续升级

为什么我敢于升级?

我有这样一个好习惯,持续跟踪 Release Note 和 Change List,我每天早上上班都会瞄一眼各种软件的 Release Note 和 Change List 这样我就对它们的版本变化了如执掌,以此评估升级是否会对我们造成影响。

为什么我能不断跟随主流版本持续升级呢?

对于长期项目,跟随主流版本(语言版本,库的版本,第三方库)有节奏的升级非常重要,否则时间跨度一大,升级成本就变高了。

我的做法是开发环境最新版本,测试环境和生产环境稳定版本,这样能在测试过程中及时发现问题。同时避免使用不成熟的第三方技术。