SOA会不会造成IT黑洞

标签:CIO重磅推荐SOA技术前沿

访客:25745  发表于:2012-02-20 11:23:55

先有管理系统还是先有管理思想的争论,是一个老问题。然而,在讨论SOA会不会造成IT黑洞这个问题时,却还得回到这个老问题上。

尽管管理系统与管理思想的关系可能衍生为一个“鸡生蛋,蛋生鸡”循环关系,但事实上,管理系统不过是管理思想的延伸。因此对CIO而言,必须先有超前的管理思想,然后再利用这些思想,根据企业业务的实际情况,去为企业选择合适的信息系统。

既然管理信息系统作为一个系统而存在,它一定要求CIO们具备系统思维的能力。与系统思维相对立的是直线性思维方式。SOA所能解决的主要问题是应用集成,即不同应用系统之间的互通互联,但利用SOA解决应用系统的互通互联问题时,却没有考虑到采用SOA给整个系统带来的其它影响,事实上这就是一种直线思维的方式。

SOA的理念和技术体系是伴随着系统集成的不断演进而逐渐清晰和成形的。没有系统集成,就不会有SOA。实际上,SOA就是一种系统集成,它是系统集成的一种高级形式。而系统集成技术的出现,是由于企业或组织在过去的信息化进程中分别建立了多个局部应用系统,这些系统的数据和功能都彼此孤立,后来发现这些彼此孤立的系统给管理造成了很大障碍,它们本该是一个有机结合的整体,那样才能保证业务流程的完整性和管理通道的畅通无阻和遍及性。出于直线性思维方式,同时出于对以往IT投入的珍惜、对操作者习惯于原有系统的姑息,当然,也囿于特定历史阶段的IT技术发展水平,业界面向互联互通的需求推出了各种各样的系统集成技术,比如消息中间件系统、数据库同步复制技术、分布式数据库系统等等,直到近期的SOA。总的来看,系统集成技术从一开始试图实现紧密的耦合,即把数据和应用全部集成起来,业务流程完全一体化处理,逐步演变为以松散的耦合为目标。比如SOA,是让人们着眼于各个应用系统的外在功能表现,而放弃对具体实现和处理方式的关心,放弃对数据进行集成和集中,只将应用系统的功能进行适当的划分并加以封装,以服务的形式提供给外部使用者。可见,SOA是简化了的系统集成。

从紧耦合到松耦合,直到SOA,不可否认技术和理念都在进步。但是这种进步与其说是为满足用户的需求而不断创新,还不如说是IT界在不断为自身寻找解脱。因为系统集成实在不是件轻松的差事,你要去理解各种各样的不知什么人写的、用不同语言写的应用程序,你要学会操作各种数据库,你要清楚各种操作系统环境和各种各样的网络协议等等,当然,为了把这些整合起来,你还需要掌握一些系统集成工具软件。而当你做完一个系统集成项目时,你的苦日子才刚刚开始,因为任何局部系统的一丁点修改都有可能影响到你的集成系统,所以你随时要准备好对接口进行升级和重新联调。这样的工作显然是高成本的,而用户必须为此埋单,所以 “系统集成”曾经是个带着光环的字眼,象征着IT技术的“高级水平”,就像今天的SOA一样。但是,随着用户应用规模的不断扩大、应用系统种类的不断增加以及应用系统复杂性的不断提高,众多的IT业者对系统集成工作已经越来越不胜其烦了,所以,简单化是不得已而为之。系统集成简化到今天,就有了SOA

当企业采用SOA进行应用集成时,虽然应用孤岛的问题得到了解决,但数据孤岛的问题却依然存在。同时,它还可能引发两个新问题。其中之一,是IT管理者认为系统最终是可以被整合的,从而无所顾及地增加新系统。系统数量的增加,就意味着整个系统管理复杂程度的提升。另一个问题则是在增加新系统的过程中,企业在IT方面的投入增大了。而且这种增大是一种“动态”的增大。

所谓“动态”的增大就是指企业针对新系统的投入不是一次性投入。只要系统存在,人员工资、机房房租、电力费用、软件更新以及硬件维护费用就需要不断投入。这些成本再加上新建系统给整个系统带来的管理复杂性,就会把企业拖入“IT黑洞”之中。

CIO们采用SOA进行应用系统的互通互联整合时,也同时使得自己的信息系统复杂程度和成本增加,但为什么CIO们还会被误导呢?其原因就在于SOA带来的负面影响的显现有一个时间迟滞,并不马上显现出来。

但可怕的是,这种可能显现的恶性后果是以一种“荷叶效应”的形式表现出来的。在人们不希望池塘里布满荷叶的情况下,池塘的角落里起初只有一片荷叶,这片荷叶起初也不会引起任何的人的关注。但荷叶的数目有可能每天增加一倍。按照这个速度,整个池塘布满荷叶一共需要三十天,但是,到第二十八天的时候,荷叶也只是分散开来布满了四分之一个池塘,所以没人理会池塘的变化。但这并不是说,第三十天的可怕情形不会出现。

与利用SOA进行应用集成的路线相对立的,是直接建立“实时大集中模式”的应用系统。所谓“实时大集中模式”,实际上包含了两个集中:一是数据的实时集中式存取和处理;二是应用的集中式实现和部署。具体地讲,就是整个系统中只有一个数据库和一套应用程序,任何分支机构都不需要设立服务器,只需配备供操作人员使用的、能上网的个人电脑。应用软件全部安装部署在总部服务器集群上,用户端只需要一个浏览器,不需要安装任何应用软件。在通信方式上,所有分支机构均采用廉价的互联网宽带接入方式,中心服务器系统则采用宽带专线接入方式。借助于无所不至的互联网,总部和分支机构可实现实时交互,终端的数据被实时收集到中心服务器,而总部下发的信息也立刻传到所有分支机构。

实时大集中系统是绝对的“一以贯之”:由于全局只有一个数据库和一套应用程序,所以,系统的管理和维护复杂度降到了最低(只需一个维护小组);系统的配套硬件投资降到了最低(只需购买一套服务器和网络设备,建一个机房);系统的配套软件投资降到了最低(只需购买一套操作系统软件、数据库软件和应用服务器软件)。这就是我常说的“五个一”,即:一个数据库、一套应用程序、一个机房,一套服务器及网络,一班人马;而这一班人马,也无非只有两个人:一个网管,一个DBA

建立了这种“实时大集中模式”的系统以后,就不再需要“动态”投入资金去部署或升级一个又一个的局部应用系统了。相反,如果采用SOA进行整合,原有的系统会全部被保留下来,新增加系统也就是在增加“动态”投入,与实时大集中模式相比,成本和系统管理复杂程度的增加,完全是循着“荷叶效应”的轨迹。

而且这种问题积累会带来新的问题,并且因为问题的因果不是简单的对应关系,CIO们可能根本无力消除造成这些问题的原因。把一只青蛙放进开水中,它会马上蹦出来。但把它放进30度的温水中逐渐加热,青蛙却可能逐渐适应水温,当水温热到足以把它煮熟的时候,它已无力逃离热水。同样地,利用SOA进行整合以后,CIO也可能通过不断地修正,并且让业务人员不断适应这样的系统。CIO们可能同样不明白系统中的问题为什么会越来越严重。这样,对IT投入有限的公司来讲,越来越高的投入和越来越复杂的管理,最终会把CIO们“煮熟”。

事实上,SOA与“实时大集中”已较量过多次。多年以前,以电话通讯为主营业务的加拿大贝尔公司,其早期的管理信息系统中有六十多套系统在同时运行,仅选用的数据库就有六十种之多。为了保证这六十多套系统的正常运行,贝尔公司甚至为此雇了四千多名员工。让贝尔公司CIO最痛苦的工作莫过这六十多套系统需要逐套升级。

更为可怕的是,因这六十多套系统导致的信息孤岛的存在,贝尔公司的业务管理不能实现贯通。当客户下订单,进行一个三方通话的业务时,业务进行完毕时财务系统应自动把客户的钱扣除,但由于财务系统与业务系统不能贯通,所以自动扣款根本无法完成。面对这种情况,贝尔公司被迫进行IT系统的整合。

贝尔公司的整合任务落在了IBM公司身上,我当时正好在IBM工作,而且参与了这项工作。当时整合工作中最困难的地方在于整合六十多个数据库里的数据,然后建立数据仓库。但不少数据库以前根本没有见过,所以整合的工作量非常大,大到几乎不能完成的地步了。

最终解决的办法是把原有系统全部剔除,由IBM、贝尔加拿大和另外一家公司合资成立了一个新的公司CGI,重新建立一套实时大集中模式的信息系统。借助这套系统,贝尔加拿大最终成功地实现了IT系统战略性升级。

SOA是一种治标的方法。SOA的目标是解决应用不贯通的问题,它和实时大集中模式的根本区别,在于SOA的做法是在原有基础上修修补补,而实时大集中的做法更象推倒重来。对企业来讲,表面上看,“修修补补”似乎保护了原有IT投资、节约了建设成本,但深入分析你会发现它可能是得不偿失的做法,并且将企业引向IT黑洞。回到系统思维上来,除非因为特殊原因造成了原有系统必须保留,否则采用SOA对企业内部应用系统进行整合,很可能造成弊多利少的后果。

在这种情况下,从系统化思考的角度出发,就要找出能把系统引向真正良性发展的高杠杆解。而从降低综合成本、长远成本和系统管理复杂性考虑,实时大集中正是高杠杆解。换句话说,实时大集中是一种治本的方法。目前很多大型企业的信息化就像旧城改造,如果不推翻旧的一切,只在原来破旧的基础上修修补补,你永远也看不到新气象。而像工商银行、双汇集团、蒙牛集团、小肥羊集团等一批特大型企业,经过全面、系统地思考论证后,都选择了推倒重来的路子,全部采用了实时大集中模式打造全新的信息系统,并且获得了巨大的效益。

尽管如此,我们并不能否认SOA的重要作用。实时大集中模式也有一定的局限,这就是它更适用于建造企业内部管理信息系统应用。但是任何企业都不是孤立存在和运行的,当它需要和各种外部应用系统(如银行、税务、物流服务等其它合作方的系统)进行互通互联时,SOA就是最好的方法。因此,概括起来说,实时大集中主内,SOA主外,才是大型企业管理信息系统的发展趋势。反过来,不顾实际业务情况,盲目地采用SOA对企业内部应用进行整合,很有可能会造成IT黑洞。

评论(0)

您可以在评论框内@您的好友一起参与讨论!

<--script type="text/javascript">BAIDU_CLB_fillSlot("927898");