最近忙活那个老掉牙的后台系统,搞得我脑壳疼。要说起来,这回得空把我们内部那个代号叫“凤凰”的系统版本摸清楚,纯粹是被逼的。
发现版本的混乱与我的动手之路
我们组接到个新需求,得把一个老旧的服务给换掉。这个服务挂在“凤凰”框架上跑了好几年了。我接手过来第一件事,就是得知道它现在到底跑在哪个版本上,不然更新组件的时候,依赖关系一错,整个系统就得崩给我看。
我先是翻了翻内部的文档库。不出所料,那堆文档,写的人估计早就离职了,一次更新还是三年前。上面写着“建议使用版本3.5”。好嘛我一看这日期,就知道肯定不对了。
紧接着我开始动手挖。我先登录了测试环境的服务器,用命令行敲了半天,才从一个不起眼的配置文件里,拽出来一个数字:4.1.2。我心想这版本号还挺新。结果等我跑到生产环境一看,生产环境,它妈的跑的是3.8.5。
这一下子我就火了。为啥测试环境比生产环境还激进?问了一圈,没人知道。架构组的人说,他们只负责搭台子,具体用哪个版本是业务组自己定的。业务组的人说,他们是跟着之前的部署脚本跑的,脚本里写的是他们就跑的是
- 我第一步: 定位所有服务器。我找运维把所有挂着“凤凰”的服务IP都给我拉出来,一张大表密密麻麻,一看就是历史遗留问题。
- 我第二步: 一个个爬上去看。我费了整整两天,远程登录了十七台服务器,把配置文件、依赖包和日志文件挨个儿翻了一遍。
- 我第三步: 整理版本清单。结果出来了,我们公司内部在用的“凤凰”版本,粗略统计就有四个:3.8.5(主力生产),4.1.2(测试环境),还有两个犄角旮旯的服务,竟然还在跑2.9.0这种老古董,也不知道是哪个前辈埋下的雷。
你问我凤凰最新版本是多少?我官方最新版本也许是5.0,但这跟我们有啥关系?我们自己内部,就是个大杂烩,互相不兼容,维护起来,真是一团乱麻。我得出的结论是:目前我们公司内部,最稳妥的,也是我们能碰的“最新版本”,是4.1.2,而且还得花大力气把生产环境同步上去。
为啥我非得自己干这种没人管的破事?
按理说,这种版本管理的事,应该有专门的配置管理团队来负责。我一搞应用开发的,哪有空天天去爬服务器找配置文件?
这事就得从去年,我跟我们那块区域的项目负责人老张闹掰说起。
老张那个人,出了名的抠门和不讲理。去年年中,我们接了一个急活,要求在一个月内上线。我带着团队玩命干,每天加班到晚上十二点。好不容易搞定,上线前一天,老张突然跑过来,说因为预算紧,原本答应的奖金要砍掉一半。
我当时就气炸了,直接拍桌子骂他:活是你的,钱是我的,你他妈不能这么干!
老张倒直接给我穿小鞋。他当时没说什么,但是回去后,他直接把我的权限给锁了。我第二天上班发现,我连查看Git仓库某些核心分支的权限都没了,更别提登录核心配置服务器了。他说,这是为了“规范流程,防止越权操作”。
我当时就明白,他这是故意让我干不了活。但我能怎么办?活儿还得继续,我总不能撂挑子走人,我房贷还没还完。
没办法,为了推进工作,我又不能直接去找大领导告状,那样事情就闹大了。我只能托我以前带过的一个小兄弟,让他偷偷地把服务器的临时账号和密码共享给我。这小子胆子也大,偷偷摸摸给了我一个最高权限的Key。
我靠着这个偷来的权限,才敢自己半夜三更登录那些服务器,把所有的配置和版本号全部一点点抄下来,整理成文档。这种没人敢碰的烂摊子,我就这么自己给清理干净了。
我才敢这么肯定地告诉你,我们公司目前“凤凰”的最新版本,是个伪命题,它不是一个数字,而是一个我用两天时间爬出来的混乱清单。我现在就指着这个自己整理出来的清单过日子,老张那边还以为我被他卡死了。真他妈的可笑。
这件事弄完,我立马找人写了新的自动化脚本,把所有版本的依赖关系全部明确下来。等老张那批烂摊子彻底爆雷的时候,我估计能笑出声。这权限,我估计他就是想卡,也卡不住我了。现在这工作,我干得还挺开心,因为我知道,至少在这个版本问题上,我比所有人都清楚。