SOA
(Service-Oriented Architecture)既服务导向架构,是指为了解决在inernet环境下业务集成的需要,通过连接能完成特定任务的独立功能实现的一种软件系统架构。
该定义的学术味道较浓,但其核心思想并不难理解:让应用不受限于技术,让企业轻松应对商业服务变化和发展的需要。目前,SOA的实现手段主要包括:Web Serice(网络服务)、CORBA和JINI等。
据Gartner Group预测,到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将很可能结束传统的整体软件体系架构长达40年的统治地位,届时将有70%的企业在进行IT建设时会转向SOA。因此Gartner建议,主流企业现在就应该在理解和应用SOA开发技能方面进行投资,但实际情况又如何呢?到目前为止,绝大部分企业客户还处于计划或早期实施阶段,它们仍在等待从厂商那里获得更多的Web服务工具和平台。
SOA原本三个普普通通的英文字母,但是排列到了一起却是当今IT届红得发烫的“主角”—Service Oriented Architecture(面向服务架构)。
这个早在1996年就由Gartner提出的“预言”,在厂商和媒体的推波助澜下,8年之后突然重生,火爆异常。
但是我们发现,即使在8年之后,这个概念在中国用户当中的认识还是比较模糊的。在一次SOA的技术讲座上,记者身边坐着中国移动管理业务流程的项目经理孙庆伟,他向笔者抱怨还是听得不太明白,同时他的第一问题就是:在中国有用户了吗?当得知还没有全面实施的用户的时候,失望之情溢于言表。而方正奥德计算机系统有限公司业务咨询总监纪钟断言SOA在中国还是一个概念……
究竟SOA是什么?是什么样的魔力让各家软件厂商对SOA趋之若骛呢?
打破信息孤岛的根本之道
以前企业是以应用为中心来构建自己的IT系统的。从IT技术的角度来看,任何一个应用都具备三要素,即业务界面(Interface)、业务逻辑(Logical)、数据(Data)。如果是以应用为中心去开发一个应用,我们只要在这三个层次选择不同的工具和产品就可以了。譬如做一个人事系统,数据库我们可以选择甲骨文的,界面可以采用Web浏览器等等。通过这种方式,可以构建很多的业务应用系统,譬如人事系统、仓库管理系统、ERP系统等等。然而我们很快发现,大多数的业务和服务不是在一个应用系统内就可以完成的。譬如下一个订单,很可能是要涉及企业的客户管理系统、仓库管理系统、ERP管理系统等。而这些应用系统由于开发的时间不同,采用的开发工具不同,一个业务请求很难有效地调用所有的应用系统。用简单的语言来表述,这些已有应用系统是孤立的,也就是我们常说的“信息孤岛”。
在以前解决企业内部信息系统“信息孤岛”的问题通常是采用EAI(企业应用整合)的方式。为了保证所有的应用能够互通互用,每一个应用都需要一个EAI Server来对应。打个简单的比方,EAI Server就好像一个“翻译”一样让每两个应用之间可以对话,可以互相调用。但是我们发现这种方式存在很大的问题。由于每两个应用之间必须用EAI来整合,当一个企业只有两个应用的时候需要一个“翻译”,当企业有三个应用需要互通的时候需要三个“翻译”,当有四个应用的时候就需要六个“翻译”,五个应用互通就需要十个“翻译”……从逻辑上讲,EAI的整合方式是一个基于点对点的整合方式,企业的应用越多,这种逻辑关系就会成级数上涨。尽管从理论上来说,EAI是能够完成企业应用之间的整合的。然而这样庞大和复杂的逻辑,体现在实施过程中,就会发现EAI的投入比较高,实施周期也比较长。
那么如何从根本上解决所谓的“信息孤岛”的问题呢?SOA就应运而生,它不是从每两个应用之间的互通做起,而是把每个应用看作服务,形成共享。
因此,SOA对于实现企业资源共享,打破“信息孤岛”的步骤就是:
第一步,把应用和资源转换成服务(Service);
第二步,把这些服务变成标准的服务,形成资源的共享。
从这个意义上讲SOA不仅仅是一个技术,而是一个软件架构。企业的决策者只需要根据企业的策略来制定流程,把应用作为服务“拿来就用”,而无需考虑底层的集成。这样就可以实现IT和企业业务之间同步。
实现弹性IT的必由之路
其实,SOA并不是一个新事物。IT组织已经成功建立并实施SOA应用软件很多年了,BEA、IBM等厂商看到了它的价值,纷纷跟进。SOA的目标在于让IT变得更有弹性,以便更快地响应业务单位的需求,实现实时企业(Real Time Enterprise,这是Gartner为SOA描述的远景目标)。而BEA的CIO Rhonda早在2001年6月就提出要将BEA的IT基础架构转变为SOA,并且从对整个企业架构的控制能力、提升开发效率、加快开发速度、降低在客户化和人员技能的投入等方面取得了不错的成绩。
由于SOA是在计算环境下设计、开发、应用、管理分散的逻辑(服务)单元的一种规范。这就决定了SOA的广泛性。SOA要求开发者从服务集成的角度来设计应用软件,即使这么做的利益不会马上显现。SOA要求开发者超越应用软件来思考,并考虑复用现有的服务,或者检查如何让服务被重复利用。SOA鼓励使用可替代的技术和方法(例如:消息机制),通过把服务联系在一起而非编写新代码来构架应用。经过适当构架后,这种消息机制的应用允许公司仅通过调整原有服务模式而非被迫进行大规模新的应用代码的开发,使得在商业环境许可的时间内对变化的市场做出快速的响应。
SOA也不仅仅是一种开发的方法论,它还包含管理。例如,应用SOA后,管理者可以方便地管理这些搭建在服务平台上的企业应用,而不是管理单一的应用模块。其原理是通过分析服务之间的相互调用,SOA使得公司管理人员方便地拿到什么时候、什么原因、哪些商业逻辑被执行的数据信息,这样就帮助了企业管理人员或应用架构师迭代地优化他们的企业业务流程、应用系统。
SOA的一个中心思想就是使得企业应用摆脱面向技术的解决方案的束缚,轻松应对企业商业服务变化、发展的需要。企业IT架构环境中单个应用程序是无法包容业务用户的(各种)需求的,即使是一个大型的ERP解决方案,仍然不能满足这个需求在不断膨胀、变化的缺口,对市场快速做出反应,商业用户只能通过不断开发新应用、扩展现有应用程序来艰难的支撑其现有的业务需求。通过将注意力放在服务上,应用程序能够集中起来提供更加丰富、目的性更强的商业流程。其结果就是,基于SOA的企业应用系统通常会更加真实地反映出与业务模型的结合。服务是从业务流程的角度来看待技术的——这是从上向下看的。这种角度同一般的从可用技术所驱动的商业视角是相反的。服务的优势很清楚:它们会同业务流程结合在一起,因此能够更加精确地表示业务模型、更好地支持业务流程。相反我们可以看到以应用程序为中心的企业应用模型迫使业务用户将其能力局限为应用程序的能力。
企业流程(Enterprise Process)是流经企业框架的空气,它赋予业务模型里的组件以生命,并更加清晰地定义了它们之间的关系。流程定义了同业务模型进行交互操作的专门方法。例如,会计可能是企业服务系统的一个组件,但是将发票寄给客户却是一个业务流程。服务被定义用来支持业务流程,因而贯穿整个流程始终的是:各种服务组件在流程和逻辑实现过程中的装配操作。理解业务流程是定制服务的关键所在。
传统的应用集成方法,如点对点集成、企业消息总线或EAI、基于业务流程的集成等,都很复杂、昂贵,并且不灵活。这些集成方法难于快速适应基于企业现代业务变化不断产生的需求。基于SOA的应用开发和集成可以很好的解决其中的许多问题。SOA 描述了一套完善的开发模式来帮助客户端应用连接到服务上。这些模式定制了系列机制用于描述服务、通知及发现服务、与服务进行通信。
不同于传统的应用集成方法,在 SOA 中,围绕服务的所有模式都是以基于标准的技术实现的。大部分的通信中间件系统,如 RPC、CORBA,也同样如此。可是它们的实现都不是很完美的,在权衡交互性以及标准定制的可接受性方面总是存在问题。SOA 试图排除这些缺陷。因为几乎所有的通信中间件系统都有固定的处理模式,如RPC 的功能、CORBA 的对象等。然而,服务既可以定义为功能,又可同时对外定义为对象、应用等等。这使得SOA可适应于任何现有系统。
SOA 帮助企业信息系统迁移到“leave-and-layer”架构之上,这意味着在不用对现有的企业系统做修改的前提下,系统可对外提供 Web Services接口,这是因为它们已经被可以提供 Web Services接口的应用层做了一层封装,所以在不用修改现有系统架构的情况下,SOA可以将系统和应用迅速转换为服务。
Gartner预计,到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将结束传统的整体软件体系架构长达40年的统治地位(可能性:70%)。Gartner建议,主流企业现在就应该在理解和应用SOA开发技能方面进行投资。
这个早在1996年就由Gartner提出的“预言”,在厂商和媒体的推波助澜下,8年之后突然重生,火爆异常。
但是我们发现,即使在8年之后,这个概念在中国用户当中的认识还是比较模糊的。在一次SOA的技术讲座上,记者身边坐着中国移动管理业务流程的项目经理孙庆伟,他向笔者抱怨还是听得不太明白,同时他的第一问题就是:在中国有用户了吗?当得知还没有全面实施的用户的时候,失望之情溢于言表。而方正奥德计算机系统有限公司业务咨询总监纪钟断言SOA在中国还是一个概念……
究竟SOA是什么?是什么样的魔力让各家软件厂商对SOA趋之若骛呢?
打破信息孤岛的根本之道
以前企业是以应用为中心来构建自己的IT系统的。从IT技术的角度来看,任何一个应用都具备三要素,即业务界面(Interface)、业务逻辑(Logical)、数据(Data)。如果是以应用为中心去开发一个应用,我们只要在这三个层次选择不同的工具和产品就可以了。譬如做一个人事系统,数据库我们可以选择甲骨文的,界面可以采用Web浏览器等等。通过这种方式,可以构建很多的业务应用系统,譬如人事系统、仓库管理系统、ERP系统等等。然而我们很快发现,大多数的业务和服务不是在一个应用系统内就可以完成的。譬如下一个订单,很可能是要涉及企业的客户管理系统、仓库管理系统、ERP管理系统等。而这些应用系统由于开发的时间不同,采用的开发工具不同,一个业务请求很难有效地调用所有的应用系统。用简单的语言来表述,这些已有应用系统是孤立的,也就是我们常说的“信息孤岛”。
在以前解决企业内部信息系统“信息孤岛”的问题通常是采用EAI(企业应用整合)的方式。为了保证所有的应用能够互通互用,每一个应用都需要一个EAI Server来对应。打个简单的比方,EAI Server就好像一个“翻译”一样让每两个应用之间可以对话,可以互相调用。但是我们发现这种方式存在很大的问题。由于每两个应用之间必须用EAI来整合,当一个企业只有两个应用的时候需要一个“翻译”,当企业有三个应用需要互通的时候需要三个“翻译”,当有四个应用的时候就需要六个“翻译”,五个应用互通就需要十个“翻译”……从逻辑上讲,EAI的整合方式是一个基于点对点的整合方式,企业的应用越多,这种逻辑关系就会成级数上涨。尽管从理论上来说,EAI是能够完成企业应用之间的整合的。然而这样庞大和复杂的逻辑,体现在实施过程中,就会发现EAI的投入比较高,实施周期也比较长。
那么如何从根本上解决所谓的“信息孤岛”的问题呢?SOA就应运而生,它不是从每两个应用之间的互通做起,而是把每个应用看作服务,形成共享。
因此,SOA对于实现企业资源共享,打破“信息孤岛”的步骤就是:
第一步,把应用和资源转换成服务(Service);
第二步,把这些服务变成标准的服务,形成资源的共享。
从这个意义上讲SOA不仅仅是一个技术,而是一个软件架构。企业的决策者只需要根据企业的策略来制定流程,把应用作为服务“拿来就用”,而无需考虑底层的集成。这样就可以实现IT和企业业务之间同步。
实现弹性IT的必由之路
其实,SOA并不是一个新事物。IT组织已经成功建立并实施SOA应用软件很多年了,BEA、IBM等厂商看到了它的价值,纷纷跟进。SOA的目标在于让IT变得更有弹性,以便更快地响应业务单位的需求,实现实时企业(Real Time Enterprise,这是Gartner为SOA描述的远景目标)。而BEA的CIO Rhonda早在2001年6月就提出要将BEA的IT基础架构转变为SOA,并且从对整个企业架构的控制能力、提升开发效率、加快开发速度、降低在客户化和人员技能的投入等方面取得了不错的成绩。
由于SOA是在计算环境下设计、开发、应用、管理分散的逻辑(服务)单元的一种规范。这就决定了SOA的广泛性。SOA要求开发者从服务集成的角度来设计应用软件,即使这么做的利益不会马上显现。SOA要求开发者超越应用软件来思考,并考虑复用现有的服务,或者检查如何让服务被重复利用。SOA鼓励使用可替代的技术和方法(例如:消息机制),通过把服务联系在一起而非编写新代码来构架应用。经过适当构架后,这种消息机制的应用允许公司仅通过调整原有服务模式而非被迫进行大规模新的应用代码的开发,使得在商业环境许可的时间内对变化的市场做出快速的响应。
SOA也不仅仅是一种开发的方法论,它还包含管理。例如,应用SOA后,管理者可以方便地管理这些搭建在服务平台上的企业应用,而不是管理单一的应用模块。其原理是通过分析服务之间的相互调用,SOA使得公司管理人员方便地拿到什么时候、什么原因、哪些商业逻辑被执行的数据信息,这样就帮助了企业管理人员或应用架构师迭代地优化他们的企业业务流程、应用系统。
SOA的一个中心思想就是使得企业应用摆脱面向技术的解决方案的束缚,轻松应对企业商业服务变化、发展的需要。企业IT架构环境中单个应用程序是无法包容业务用户的(各种)需求的,即使是一个大型的ERP解决方案,仍然不能满足这个需求在不断膨胀、变化的缺口,对市场快速做出反应,商业用户只能通过不断开发新应用、扩展现有应用程序来艰难的支撑其现有的业务需求。通过将注意力放在服务上,应用程序能够集中起来提供更加丰富、目的性更强的商业流程。其结果就是,基于SOA的企业应用系统通常会更加真实地反映出与业务模型的结合。服务是从业务流程的角度来看待技术的——这是从上向下看的。这种角度同一般的从可用技术所驱动的商业视角是相反的。服务的优势很清楚:它们会同业务流程结合在一起,因此能够更加精确地表示业务模型、更好地支持业务流程。相反我们可以看到以应用程序为中心的企业应用模型迫使业务用户将其能力局限为应用程序的能力。
企业流程(Enterprise Process)是流经企业框架的空气,它赋予业务模型里的组件以生命,并更加清晰地定义了它们之间的关系。流程定义了同业务模型进行交互操作的专门方法。例如,会计可能是企业服务系统的一个组件,但是将发票寄给客户却是一个业务流程。服务被定义用来支持业务流程,因而贯穿整个流程始终的是:各种服务组件在流程和逻辑实现过程中的装配操作。理解业务流程是定制服务的关键所在。
传统的应用集成方法,如点对点集成、企业消息总线或EAI、基于业务流程的集成等,都很复杂、昂贵,并且不灵活。这些集成方法难于快速适应基于企业现代业务变化不断产生的需求。基于SOA的应用开发和集成可以很好的解决其中的许多问题。SOA 描述了一套完善的开发模式来帮助客户端应用连接到服务上。这些模式定制了系列机制用于描述服务、通知及发现服务、与服务进行通信。
不同于传统的应用集成方法,在 SOA 中,围绕服务的所有模式都是以基于标准的技术实现的。大部分的通信中间件系统,如 RPC、CORBA,也同样如此。可是它们的实现都不是很完美的,在权衡交互性以及标准定制的可接受性方面总是存在问题。SOA 试图排除这些缺陷。因为几乎所有的通信中间件系统都有固定的处理模式,如RPC 的功能、CORBA 的对象等。然而,服务既可以定义为功能,又可同时对外定义为对象、应用等等。这使得SOA可适应于任何现有系统。
SOA 帮助企业信息系统迁移到“leave-and-layer”架构之上,这意味着在不用对现有的企业系统做修改的前提下,系统可对外提供 Web Services接口,这是因为它们已经被可以提供 Web Services接口的应用层做了一层封装,所以在不用修改现有系统架构的情况下,SOA可以将系统和应用迅速转换为服务。
Gartner预计,到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将结束传统的整体软件体系架构长达40年的统治地位(可能性:70%)。Gartner建议,主流企业现在就应该在理解和应用SOA开发技能方面进行投资。