凪光,版本号这事儿,说起来就是一锅浆糊
问我“凪光”最新版本是多少?我跟你我现在自己都拎不清。要是按照我最初设计的那套版本控制系统来看,应该是v3.1.2。可要是算上我最近三天在公司摸鱼时偷偷改的几个补丁,还有上个月在火车上为了救急,用手机端硬是怼上去的那个“紧急抢救版”,那版本号估计早就乱套了。
这事儿得从头说起。我一开始捣鼓“凪光”这个小玩意儿,就是为了解决一个我被反复坑害的问题。那时候我负责的项目有个数据报表,每天早上八点必须出来,晚一分钟领导就得骂街。但是跑数据的那个老系统,三天两头抽风,时不时卡死,我根本不能睡个安稳觉。
那阵子我每天晚上睡觉都像守着炸弹似的,生怕错过报警。我那叫一个郁闷!我一拍大腿,决定自己动手丰衣足食。我写了一个后台监控服务,就是这个“凪光”初代版本,v1.0。它很简单,就是每隔五分钟去摸一把数据接口,如果发现数据更新时间停滞了,就赶紧给我发个邮件,然后远程重启那个老系统。
刚开始用Python写的时候,我规划得挺好,代码干净利落。但是人都是贪心的。用了一段时间,觉得只发邮件太慢,我又塞进去了微信推送的功能。后来领导说能不能加一个曲线图显示负载,我又硬着头皮接了个前端界面。功能一多,代码结构就开始拉胯,版本号就控制不住了。
为什么版本乱了?就是因为那次出差把我整惨了
我为啥会把版本搞得一团乱麻?这里面有个血泪教训。
去年我被公司派出去搞一个为期两周的封闭培训。那培训地点是真偏,网速奇慢无比,只有晚上九点后能连上公司内网。结果我刚去第二天,我那套老系统又出幺蛾子了。我当时手机上根本没法跑正式的开发环境,内网又不稳定,眼看着数据要卡死,我就急了。
我当时手里只有一台配给我的老旧平板,上面勉强能跑一个简陋的文本编辑器。我那叫一个抓狂。为了不被培训结束就卷铺盖走人,我当机立断,在那个平板上把核心逻辑扒拉下来,做了一个“阉割版”的自动重启脚本,直接丢到了一个备用的低权限服务器上跑起来。
那个脚本,我当时标记的是v2.5_hotfix。它把所有的日志记录、前端展示功能全砍掉了,只留下了监控和重启两个功能。我当时的想法是,等培训结束回去就把它合并到主分支里去。
结果?我培训回来,发现正式环境的v3.0已经上线了,而那个v2.5_hotfix居然因为意外,在那个备用服务器上持续运行了足足三个月!它虽然功能残缺,但它稳定!直到我前段时间清理服务器,才发现这事儿。我现在的“凪光”系统,是三个不同版本的代码逻辑在各自为战。
- v3.1.2: 主分支,功能最全,但是经常被我修修补补搞得不稳定。
- v3.0.1: 稳定版,跑在最重要的生产环境,但缺少一些新的推送功能。
- v2.5_hotfix: 幽灵版,只负责监控和重启,但从来没出过错。
所以现在要我给一个准确的版本号?我只能说,它们都是最新版本,又都不是最新版本。我现在正下定决心,把这三个版本的优点全揉在一起,彻底重构一遍,争取明年能出一个真正的v4.0,到时候再也不会有这种自己给自己挖坑的破事儿了。