站在三岔路口的抉择
2000年“五一长假”刚刚结束,现任中国农业银行山东省分行科技部经理的高级工程师吕渤海等第二批队员,便来到了北京,在亚运村附近的安徽大厦住下,与3月份就已经来到北京的宋传杰汇合。此时,这个团队已经聚集了来自总行软件开发中心、山东分行、湖北分行和辽宁分行的19名同志。同时,还有总行软件开发中心的高管和技术队伍作为团队的后援和支撑。从这个时候开始,宋传杰和他的团队开始了为期半年多的“探索”之路。 三条路看上去都能到“罗马” 当时,宋传杰和他的团队所要测试的路线主要有三条。第一条,是利用大型主机(本文中均指Mainframe)作为数据服务的系统平台,中间采用Unix系统运行交易中间件TPM和“新一代交易系统NGTS”,而用SCOUnix作为前端系统,宋传杰将这个路线简称为MUU(Mainframe/Unix/Unix);第二条路线,是将支撑后台数据库和中间层的交易中间件的任务都交给大型主机完成,前端保持SCOUnix不变,简称MMU;第三条,则是最具突破性的结构,将数据服务、TPM+NGTS中间层应用、前端系统的任务都交给Unix系统承担。 实际上,此前,全部采用Unix作为支撑的农行新一代交易系统,此前已经在宁夏、安徽两省农行分行中得以实施。只不过宁夏和安徽两省当时的业务规模并不大。但是,对于日均交易量在1999年就已经超过100万笔的山东农行来说,用UNIX系统能否承载数据服务和TPM+NGTS,绝对是个未知数,而这也正是农行要对更大规模UUU架构进行测试的目的所在。 用宋传杰的话来说就是:“宁夏和安徽的试点,还不能说明用纯Unix系统能够把山东的100万笔交易量支撑下来。”同时,MUU和MMU这两种三层架构,也都存在各种不确定性。毕竟这两种方式,都没有人在国内银行界尝试过。 宋传杰说:“对于MMU架构来说,我们需要把已经在Unix上验证的这套应用迁移到主机上,这其中存在着不确定性;而对于MUU的架构来说,Mainframe和Unix两种系统相互对接的情况怎么样,也是不确定的。”为此,摆在宋传杰和他的团队面前的这三条路都有可能,却有都不确定的隐忧。当时项目组的主要成员,现在工作于中国农业银行总行软件开发中心的蔡处长说:“我们当时做的很多都是探索性的工作,这对我们来说是很好的机遇和挑战。我们有很多方法可以尝试。前面没有路,但也说明怎么走都是路。” 最稳妥的道路不见得可行 面对“三岔路口”,总行交给宋传杰的任务是至少找到一条可以通往成功的路,但是面对三条都存在不确定性的前进方向,该如何选择?这又给宋传杰提了个难题。当时,宋传杰认为,Mainframe/Unix/Unix(MUU)的方式是个不错的折中选择。对于纯Unix系统架构,MUU模式对它是个折中;而对于全部Mainframe(MMU)的方案,MUU也是一个折中。而且,MUU,是宋传杰1999年在纽约州立大学石溪分校SBU学习过程中所了解、研究过的一个模型。这个模式对于他来说,不确定性至少比UUU要小一些。 因此,MUU成为了当时宋传杰带领的技术团队最先考虑的结构,也是他们在“亚运村阶段”所测试的内容。MUU方式有很多好处。首先,MUU可以利用当时大型主机在扩展性方面的优势,解决了数据服务可能出现的顶部瓶颈问题。即数据库的规模可以通过系统扩展而不断提高;其次,中间层采用Unix系统,可以让农行继承此前在Unix平台上开发的交易系统;另外,在大型主机上开发应用,比在Unix开发应用难得多,并且当时中国农业银行特别是山东农行所储备的大型主机人才远远少于熟悉Unix平台的技术人员。 实际上,宋传杰和他的团队2000年的“探索之旅”分为四个阶段,在四个不同的阶段中,他们分别测试了几种不同的技术路线,并最终确定了在省域数据中心中所采用的方案。在第一阶段,试点团队取得了一些有意义的进展,发现了解决问题的方案,同时他们也预感到未来会遇到的一些问题,其中包括增强系统的功能等方面。不过,这一阶段,证明了宋传杰从美国取经回来的“MUU”想法,在理论上是可能的。 经过近一个月的工作,5月31日,宋传杰做出了第一个阶段的进度报告。第二阶段,是利用2000年6月这一个月的时间,试点团队兵分两路,一路验证MMU,另一路技术人员则是验证UUU模式的可行性。 6月19日,他们获得了阶段性成果,初步评估了UUU架构的可行性,6月26日,他们获得了进一步的Unix平台测试结果,并已经在一个拥有16G内存的UNIX服务器上实现了每秒完成60笔银行交易的成果。这个测试结果,对于当时国内的Unix环境来说,已经不低了。 7月1日,宋传杰完成了第二阶段的正式报告。宋传杰和他的团队,似乎对自然月份的周期掌握得非常精准。从2000年7月开始的第三阶段,被他们称为“北分阶段”,这个阶段在中国农行北京分行进行系统测试,在7月30日如期结束了。 “北分阶段”完成后得出的结论是,100%的UUU架构是可行的。技术人员利用当时在中国国内能够使用到的最高配置的Unix服务器,实现了每秒处理70笔银行交易的水平。测试过程还证明了Unix系统基本可以进行线性扩充。另外,在这个阶段,项目组还证明MUU的混合结构效率低下,这也直接造成后来宋传杰决定放弃这个他最初的设想。 “二分法”确立100%Unix架构思路 在几个阶段测试中,技术团队所秉承的一个原则便是“两害相权取其轻”,而其考虑的“利害”关系,主要是根据技术路线的确定性程度的与否,即确定性为利,不确定性为害。这样的“二分法”,在最初的选择中,给宋传杰带来了很大帮助。 但是,如果根据这个方法,宋传杰和他的团队最终选择的路线一定会是MUU。但如果是这样,也就不会有后来在山东农行诞生的全球第150大商用Unix系统的故事了。宋传杰为何会最后选择了此前从未有人尝试过的UUU架构,而放弃了原本两害相权中较轻的那个方案呢?这就要谈到项目管理中的动态管理问题。宋传杰当时正是通过动态管理的手段,将来自试点项目外部的最新变化,融入到试点项目过程当中,才产生了后来的亚洲最大商用Unix系统的奇迹。 实际上,在2000年试点项目进行的过程中,Unix供应商的技术也在不断更新进步。当年6月份,议价Unix服务器厂商发布了当时世界最大的商用Unix服务器。很多原本在大型主机系统中应用的技术,被逐渐吸收到Unix系统中,加以运用。随之而来的,有很多新型的Unix服务器产品推出,使得市场上可以选择的Unix系统更多了。这给测试队伍带来了更多可能性的机会。宋传杰回忆道:“做试点,不是前面定了一条路,就要一直走下去,而是在验证的过程中,不断地去发现如何走好试点的路。” 试点之初的决定大都是基于当时的认识以及当时的业界条件评估得出的,一旦这些条件发生变化,试点的方向也应该随之调整,适应这种变化,并且把有利于项目前进的变化,尽快地转变成一种推动力。