笔者公司在过去一年时间内业务量增长4倍,原有的业务流程已经远远不能满足业务需要--IT系统承载的负荷越来越重,多次发生系统宕机或故障,业务部门的抱怨越来越多。在现实面前,我们被迫对IT系统进行调整以应对业务流程。
老板提出的IT目标是IT系统必须有灵活性,有余力接受公司业务进一步增长的挑战,但同时又不能影响原有的业务增长轨迹。而原有IT架构难以解决的最大难题之一是,技术层难以随着业务层的需求变化而灵活变身,而硬要改动技术层,则需要技术人员把系统上下左右分拆和重新焊接,不但成本昂贵,而且伤筋动骨,后患难测。因为原有系统中各子系统、各模块之间是一种"紧耦合结构",拆分和沟通很不灵活。
原有系统的复杂度很高,为完成系统功能,定义了很多复杂的接口,并且代码相当复杂。比如,要想完成数据的抽取转换装载功能,我们必须针对不同的需求,重构这一功能模块。这些工作量和成本都非常巨大。
以上这些因素都迫使我们在应用新的IT架构时必须考虑商业成本和灵活的系统架构模式:首先,新的架构必须降低IT系统结构的复杂度;其次,需要减少系统的运营成本,同时,增加系统的灵活性。
柳暗花明 IT架构规划遇到SOA
笔者公司的IT规划包括三个层面上的内容:一是战略层面的规划,它主要确定的是信息化的大方向;二是IT项目层面的规划,它确定的是每一个具体 IT系统的建设的目标范围,以及方案、实施计划与投资;第三是IT架构规划,它是IT规划的核心内容,是公司战略与IT目标的支撑框架,是联接公司战略与具体每一个IT项目之间的桥梁。
随着信息化建设的深入,IT架构成为公司信息化建设的核心问题,公司原有的IT规划,缺位主要表现在没有进行深入IT架构规划,在公司战略与IT系统之间,没有细化的框架联接,这种不完整的IT规划,导致造成巨大的IT投资风险和浪费。
就在我们关于如何规划IT架构经过多次会议讨论无结果而陷于绝境的时候,柳暗花明之处, SOA出现了。因为SOA使IT架构的构建机制发生了史无前例的变化,所以系统规划一旦加入SOA因素,企业就必然重新考虑IT规划的技术架构。
SOA变革基础架构
以前,随着业务需求和网络技术的发展,笔者公司产生了大量为满足产品或服务需要的软件系统,如:ERP、CRM、OA、SCM等。但这些系统一般都是单独实施、独立存在,由于数据标准不统一、接口不一致,系统间往往缺少联系与合作,这也就导致每一个系统成为一个孤岛。
SOA(面向服务的体系结构service-oriented architecture)与其说是一种技术,不如说是一种的思维方式。它是一项大胆的基础架构变革,表达我们如何通过技术和协同工作来实现业务变化。
与面向对象的技术架构不同,SOA架构所需要的服务模块可以分布在更为广泛的分布环境中,而不必像面向对象技术架构那样,需要使用大块的可重用去构建一个全新的系统。通过合理的部署,SOA系统可以改善原有的IT系统效率,使得原有的那些应用系统更具有柔性。
SOA架构的革命性思路是在传统的业务层和技术层之间增加一个服务层,服务层通过一套协议或规范把应用程序从底层技术层调出来,加以封装,再根据业务层需求灵活组合。
服务层不依附于任何特定技术平台,能够在业务层和技术层之间沟通、组合,业务应用系统就变成了"松耦合结构",想用什么功能就调用什么功能,需要什么功能就装配什么功能,改动调整非常方便。而且这些构建在各种各样系统中的"服务"可以以一种统一和通用方式进行交互。保证系统灵活性,另外,还可以保证"服务"的重复利用。
SOA让二次开发成本降低为零
在笔者参与的项目中,有一个架构设计小组和两个开发小组,其中一个开发小组主要开发面向客户的应用服务,另一个开发小组主要开发核心系统服务。经过一段时间的工作,我们发现那些在业务流程中最基本最通用的功能是可以抽取出来,使用SOA架构进行重构。并且,系统的开发部署时间以及系统的性能这两个检验系统是否成功的两个关键标准都得到极大的改善。
①SOA降低成本。我们成功构建了一个通用的服务功能模块,在下一次开发时,我们可以直接调用这一功能模块。从这个意义上讲,第二次开发时的开发成本为零。
②SOA架构使管理统一。对于SOA系统而言,要想成功实施一个系统,必须从企业整体来通盘考虑,成立专门的架构设计小组,确定整个企业业务流程运作的最佳路径。这样整个业务流程及信息系统的管理将会实现统一管理,改变过去各部门、各业务环节脱节的现象。
③SOA架构从一开始就显示出ROI(投资回报率),因为SOA反对四处出击,是按成本受益顺序确定服务开发的优先级。通过仔细的规划,启动成本就能限制在现有预算内。经过一段时间后,服务模块的重用会确保以后每个新业务应用程序的启动成本很低。在实施开始时设置好基线,确保可测量性,避免临时修路的效果.