畅谈敏捷式SOA实施
 

2009-06-01 来源:网络

 

为什么企业实施SOA的结果不尽如人意?到底是哪里出错了,还是企业对SOA寄予的期望本身太高?走入“歧途”的SOA项目是否还能被拉回到正规?要解答这些问题,首先要从SOA原本的宗旨出发,来分析它的常见误区。一种新的SOA项目交付方法就是将敏捷技术(Agile technologies)作为SOA开发方式的一部分,我们称其为敏捷式SOA(Agile SOA)。

SOA的宗旨

基本上,SOA的宗旨是承诺在企业的IT环境中增添弹性,它通常被定义划分为以下三种能力:

灵活性:通过SOA,遗留系统和现有系统上的技术重用变得更加可能。使用SOA可以让你贯通从前端到后台系统的灵活性,同时实现反复重用。

生产力:通过帮助企业对商业流程中的变革作出更快速的反应,SOA将进一步提高生产力,并借助代码重用来提升加快新应用实施的可能性。

拓展性:SOA建立了在新的商业应用上重用现有系统,并确保蕴含在这些遗留系统中的商业价值被挖掘和拓展的可能性。SOA将点对点的集成环境转换到一个更加面向服务的架构。

问题出在哪里?

过渡到SOA实践的企业定然是将灵活性、生产力和拓展性作为他们的目标。然而在实际操作中,许多企业却不知如何将这些美好的愿景落到实处,创造价值。失败教训比成功榜样更具指导意义,因此,你首先要了解最可能发生的四种SOA误区是什么:

1. 对SOA概念的理解误差

问不同的人“什么是SOA”,一定会得到许多不同的答案。实际上,SOA是一种无边界服务的汇聚。这些服务之间可以相互通讯,所谓通讯可以是指简单的数据转移,也可以是指两种或多种服务的协同。

然而,某些企业在SOA上只考虑到了Web服务 (WSDL),正因为理解上的局限性,因而导致很多“SOA万能”的误解。有些人坚信实施企业服务总线(ESB)就会给你创造一个SOA环境,而有的软件厂商也宣称他们的产品是准SOA,可以提供某些Web服务。但在很多情况下,这些粗粒状的服务都是很笼统的,并且更加倾向于建立技术基础架构,而不会为企业带来新的功能性。

对于那些购买了准SOA产品的企业而言,则必须在产品所用技术基础上建立特定的层,以求与公司现有系统结合,反之,如果你不这么做,那么SOA项目的失败率就会大幅蹿升。

2. 缺乏商业单位的投入

大部分的SOA项目都是由IT部门中的某人来推动。比如CIO、企业架构师,或IT经理,他们深信SOA或许是一种可以解决以前解决不了的问题的方案,例如服务提供速度过慢、不断积压的项目数量、或者加强遗留系统的要求。这名“推动人员”负责去带领开发人员建立基于SOA原理的应用。但在这一点上,一个最突出的问题就是缺乏商业单位的投入。SOA不是一种可以无视终端用户的体验而直接部署的技术,正因为它同时牵动了多个部门的不同系统,因此更需要商业单位的参与。

如果商业部门无法用SOA方式来思考问题,那么整个链路中就会断了一个环节,导致SOA无法实现预期成效。

3. 缺少预算

展开一个SOA项目是极耗成本的。首先是技术成本,你需要搭建一个平台,然后就是学习曲线上的成本。当然,你可以通过聘请有经验的专业人士或服务伙伴来完成。不管使用哪种方式,你都必须将其计入你的预算内。为一个带有高度商业价值的项目去申请预算一直都很难,而在目前的经济气候下,去为一个无法看到立竿见影回报的项目去申请预算更是难上加难。

4. 项目执行

大部分SOA项目都使用瀑布式方法来管理和执行,即定义项目的时间跨度(比如9-12个月内)来完成SOA基础架构的定义、编码和实施。

以这种从上至下的方式来实施SOA不但无法提供及时的价值,也难以让商业应用高效运转,原因有二: 第一,少有最终用户的参与而提高了失败的风险。第二,这一方式没有考虑到要求和环境总是在不断变化。因此使用在SOA实施中的技术也必须足够灵活并支持变革。 。

如何解决这些问题?

我们该如何来解决这些问题并让SOA用户保持满意?如何取得商业部门的支持、获得充足的预算,并确保有一个灵活的SOA来加快应用的交付时间?

作为企业,可以尝试从以下几方面入手改善:

改善与商业单位直接的横向联合。

降低建立与管理商业应用的成本。

提高灵活性,以便更好地对不断变化的商业要求作出响应。

避免项目过于臃肿。

而采用Agile(敏捷)技术作为SOA开发方式的一部分(我们称其为Agile SOA)可以很好地解决这些问题。

根据专家经验,成功的SOA应当从设定合适的SOA项目战略开始。

不要以为只靠购买一款产品就能让你的企业SOA化。每一家公司都有自己特定的流程,需要以服务的形式进行特殊定义。

确保你的基础架构能让你定义细分服务。

认真找出正确的技术来支持你不断变化的环境。

一旦技术和架构被决定后,下一个重要步骤就是取得商业单位的配合。这意味着向商业部门揭开SOA的神秘面纱,并将这种技术以商业化的语言和回报来加以阐述。你可以通过以下两点来做到:

让人们认识到一旦解决实际商业问题后,将会带来很高的商业价值。找出一个能够解决实际商业问题的项目作为SOA基础架构层级的一部分。尝试去从现有系统中找出一个需要重用数据和商业逻辑的项目。

确保项目在三个月内交付。这不但能够控制预算超支的风险, 同时也能让你尽快开始调整和重用现有服务。 而商业单位也可以快速体验到绩效改善。

为了确保提供必要的功能并能够顺利被用户所接受,你必须让最终用户参与到项目开发过程中。Agile SOA将帮助你取得商业单位的配合,获得项目预算,降低失败风险,尤其是它还能帮助你在预算紧张时识别出SOA基础架构的优势,提供应有的商业价值。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织