做这行有点年头了,有些时候看问题的观点不同,会产生很多不同的看法。
最近有个问题,已经出现了2次了,就是dll的版本不同引起的。
个人认为最好的解决方案就是开发一个自动检测功能,系统中的所有模块都可以和主服务器通信,获取最新版本。应该说这是理论上最完美的解决方案,从此部署在不同服务器上的系统版本都应该一致,但随之而来的问题也很多。
最大的问题是没有钱去开发,有了钱也没有足够的精力,光是日常的support已经足够让人抓狂了。
退一步说即使有钱有时间,系统的复杂性也是超乎寻常的,要考虑到各个IDC的firewall,以及每个地区的rule,还有网速和recover功能等等,需要考虑的地方很多。
所以构建这样的模块,是非常复杂的。但是功能却只是为了同步dll的版本,似乎有点小题大作。
因此这也是停留在纸上的解决方案,除非公司很大很有钱,闲人很多。。。。。。
那么自己开发代价太大,外包如何?答案是No,这显然更不可能了,因为这个原生的系统是非常复杂的,外包的话光培训就够讲一阵子了,别人能不能理解又是一回事了,再说真正调试的时候还要开放很多firewall,这是相当繁琐的。
ok,既然开发这条路肯定走不通,那怎么办呢?
人力手工维护?听起来是个不错的想法。
比如我们可以和客户说,给我1天甚至几天的时间,我们帮你们检查一下版本号,有不同的话帮你同步一下。
客户说,好啊,于是我们就开始了。。。。。。
看来一切顺利啊,事实果真过此吗?
假使客户的系统正在线上使用,你发现有一个dll的版本号比较旧,你想更新,那么势必要停止服务,按理说是不行的,那么你就不得不等到凌晨进行更新。
如果一切顺利还好,万一更新完毕后,有奇怪的问题出现,那你怎么办?恢复之前的版本吧,然后回去再找原因,这就意味着一天的等待都白等了,从头再来吧。
如果客户很好说话,说不要等到晚上,现在就更新吧。ok!你感激涕淋,立马开干。更新完毕后发现没有问题,你很高兴,可是隔了一天,客户说原先有一个功能无法使用,然后你再去查,发现恢复成原先的版本就好了,这时你一定是在吐血了。
总之里外不是人啊!可能你们会说为什么不在更新前事先测试呢?问题是我们不熟悉客户的业务,因为这套系统是很活络的,你可以这样用,也可以那样用,作为开发人员是不可能了解全部业务的,所以你即使把客户的系统全部备份下来,你也无法面面俱到。
那怎么办?
很简单,什么也不干!有了问题再解决,这样可以体现我们的价值,让客户感觉他们的support费用不是白出的,只能这样了。
很久之前,在我小时候曾看到一个故事,大意如下。
某乡进行干部考核,A村和B村的村长都有机会升乡长,考核期为一年。
两人回去后,针对当前大旱的现状做了针对性部署,但是A村长未雨绸缪,还对大涝进行了预防。
结果旱情过后果然出现了洪水,A村因为预防工作做得足够好,自然安然无恙。
B村当然是损失惨重,因此B村长压力很大,不得不连夜抢险,连自己家被洪水冲了都没顾上,结果乡里来的记者很感动啊,在报上连篇累牍地报道B村长。
所以一年的考核期过后,B村长是乡长了,A村长还是村长。
这是个我小时候无法理解的故事,现在懂了,其实工作也一样,不是想得越多越全,做得越多越好是最好的,有时候有些缺陷反而不是坏事。
4348

被折叠的 条评论
为什么被折叠?



