SOA部署中几个关键问题

很多人都把SOA看作是不合理的软件架构以及项目发展规划的救世主,但现实却是,部署SOA是一个非常复杂并且困难的工作。从统计数据来看,失败的SOA项目与成功的数目相当。换句话说,你部署SOA项目失败的机率高达百分之五十,并且如果你是在全球2000强企业中或者是政府部门中部署SOA,你失败的概率会更大。

从这些成功的SOA项目中,我们总结出了一些关键模式,这些模式可以帮助你确定你的SOA是成功的还是失败的。

从这些模式中,我们得到的最重要的经验就是SOA是传统IT技术和新的创造性技术的结合体。并且,它会对企业产生重大影响,这些影响是系统的并且非常有价值,范围涉及从人到技术等各个方面。反过来,SOA的成功也离不开从人到技术等一系列因素。

人:从领导层到工作人员,责任感和正确的态度对于SOA的成功非常关键

SOA失败的一个根本原因是缺乏经验丰富的架构人才,无论是领导层还是工作人员。这种缺乏不在于数量,而是缺乏专业知识、经验和推动变化的远见卓识。

由于人为因素导致的SOA项目失败是从领导层开始的。研究机构Burton Group最近的一项调查显示,信任CIO的到来往往意味着SOA的成功。从本质上讲,富有创新意识的领导层以及改变企业传统文化和架构的能力,是SOA成功的一个很明显的关键因素。

此外,一个重视基础设施投资、理解灵活有效的架构给企业带来的长远价值并且愿意对SOA项目投资的领导层的存在也是SOA成功的一个非常关键的因素。 实际上,部署SOA费用非常昂贵,它会使你创建、部署、设计、测试企业应用的方式发生巨大并且系统的变化。部署SOA的费用远远超出了数百万美元,这些费用主要用于培训、咨询、以及购买技术。

SOA投资不能被视为一次性“转换”项目。相反,你需要将部署SOA看作一个长期的过程,而不是项目。你可以将它看作一系列的项目,这些项目组成了一个渐进的过程。部署SOA需要明确定义它的价值,而实现这一价值所需的投资和努力则要首先被定义。

因为SOA实际上是一个过程而不是一个项目,所以企业必须采取长远的眼光来看待SOA。企业通常需要耗费多年的时间以及上百万美元的费用来推动核心IT机制的系统变革。但是,由于资金预算问题或者是重新调配资源满足某些短期的战略需要,大多数SOA“项目”常常中途停止了。因此, SOA部署工作常常半路夭折,更不用说后续建设了。所以,在部署SOA的时候,行政执行人员和IT管理层绝不能允许这种情况发生。

SOA还涉及到两个基本的业务变化,IT部门之前从来没有能力使这两个变化真正实现:一是在担心控制权丧失的政治领域共享流程;其次就是基本过程的反思。后者不仅非常困难而且还要挑战既定做法、资源分配、政治权力等等。

就管理人员和工作人员的水平而言,成功的SOA对于人员素质的要求更加重要。虽然很多人更愿意让现有的团队把他们带到SOA新世界中,不过一个严峻的事实是,现有团队的许多成员不具备SOA专业知识、技能和经验。关于让谁负责SOA部署工作,你需要预先做出决定,虽然这个决定很艰难,但非常关键。这意味着你必须替换掉一些人或者增加员工数目。这两种办法代价都很高昂。

许多公司凭请资深SOA专家和顾问来帮助自己掌握部署SOA的有效方法,还有一些公司在SOA培训上花了大笔钱,甚至从外部聘请一个整个团队来担任顾问小组。

不管你才采取什么做法,千万不要让不懂SOA的人负责部署工作,这只会适得其反。

过程:SOA需要改变你开发、管理和测试应用的方式

建设SOA意味着你需要改变架构和系统开发的传统方式。过去,许多公司在搭建系统时,往往会直接将所看到的比较“酷”拖到企业中来解决某个战略问题。当然,一个战略问题也会导致其它战略问题,这种系统建设方式增加了架构的复杂度,严重影响了企业的效率。

因此,你需要一种深思熟虑并且切实可行的方法来部署SOA,这可以让你打破架构域深入到以原始的功能层面,然后重新进行组合,SOA就水到渠成了。除非你的企业规模非常小,否则你还需要将这些架构域分割成可实现的模块,能够按次序或者并行实现。

接下来,是时候做一些实实在在的工作了,首先就是在问题域中考虑信息,这主要是指应用程序语义和元数据。这项工作通常需要大量的工作量,因为大多数企业通常在语义层次上对自己的系统没有一个很好的理解。因此,这项工作一般并不是一个检查原有的语义规则和元数据的过程,而是要创造新的。许多SOA的部署工作都跳过了这一步,这削弱SOA最重的能力。

完成了上述步骤后,你需要把重点放在服务上:确定组成SOA的现有的和新的服务。这项工作涉及到搞清楚你目前具有哪些服务并确定需要什么服务,然后标准化这些服务使它们形成一个可用并且定义明确的模板。你需要确保正确定义并注释了这些服务,然后将这些服务与你之前创建的元数据模型联系起来。

请记住,你的大部分服务都将是现有服务,通过某种中间件机制重新实体化。大多数人认为SOA就是创建全新的服务,但实际情况往往不是这样的。许多SOA的努力最后都失败了,因为项目负责人把主要精力都放在了开发新的服务上面,而不是解决紧迫的业务需求。

在将服务同元数据模型映射完毕后,你需要定义和创造过程,这些过程将服务捆绑到业务解决方案中。有三种办法你可以使用。首先,你可以创建面向服务的业务应用,这是一种将服务有计划性捆绑到流程或应用中的一种方法。其次,你可以利用一个控制层比如BPEL将服务整合在一起形成业务解决方案。第三,你还可以利用传统的过程集成工具将服务绑定到解决方案中。不过,无论你使用那种方法,你必须确保把需求和设计考虑进来。

当然,还有其它一些有关过程方面的事情需要做,包括建立测试计划和选择测试服务的工具。此外,你还需要制定一个SOA治理策略,确定基于这一策略的治理过程,并选择合适的工具支持治理策略的制定和执行。

架构:SOA的核心通常被忽视

“SOA”中的“A”代表着 “架构”。大多数忽略了它,而是选择直接转入技术。这是为什么呢?因为架构是一件非常耗费精力的东西,并且极其枯燥和无聊,而学习很酷的技术则是非常有趣的一件事情并且也很容易。不幸地是,你必须花时间对企业进行规划和引导,确保企业朝正确的方向发展。创建正确的战略、流程、架构,并把它们与企业的实际情况和预算联系起来,最重要地是,带领技术团队向正确的方向发展。

虽然架构是SOA的基本要素,但是它却通常在SOA部署中被忽略。这是因为大多数大型企业的架构师不具备所需要的足够权力促使技术沿着正确的方向发展。在大多数情况下,他们只是纸上谈兵,而不是亲力亲为。长远来看,这种没有任何效力的处理架构的方法将不会带来任何实质性的改变,除非有真正富有活力的领导层来支持他们。

由于大多数企业架构师对待架构的态度不端正,这通常造成数企业短期战略需要胜过任何长期战略。人们忙于不停地从一个技术“演习”到下一个“演习”,盲目地将各种技术都拖到企业中来,而没有制定一个明确的计划如何让这所有的技术配合工作。

通常所说的所谓的企业架构往往是这些杂乱的策略努力层层叠加的结果。这种“架构”过于复杂,并且党企业出现新的业务需求是,往往难以改变。

但是,如果你在部署SOA的过程中,真正侧重于处理架构问题,那么你取得成功的概率是非常大的。专注于架构确实需要努力改变IT部门对于这项技术的认识—一定要在架构的背景下做这件事情,并且绝不能让技术成为了事实上的架构。这是企业文化的一个重大转变,大多数IT人员不会这么做,除非强迫他们。这种变化发生的原因是由于公司领导层对于战略活动的支持。管理部门支持这一变化的原因是:目前的做法在短短的一个月内就浪费了数百万美元。目前的挑战是,这种浪费已成为企业正常的运作方式,因此它的费用是隐藏在“标准”的企业管理费用和失去的机会成本中。

技术:企业的技术应遵循需求,而不是推动它们

没有一个适合于所有企业的一刀切的SOA技术解决方案。你必须首先了解自己的需求,然后寻找能满足这些需求的争取的技术。事情就是这么简单。

但是,大多数企业在建立SOA系统时被错误的技术所引导。他们只是简单地去市场上购买一个ESB(企业服务总线)或其它一些套装SOA解决方案而不考虑自己的特殊需求,他们寄希望于这些解决方案能为自己解决所有的问题。最终的结果是这些技术解决方案往往与他们的实际问题不相符,当然也就不能达到预期的结果。因此,SOA的部署以失败而告终。

将企业需要解决的问题与正确的技术进行匹配的过程是非常简单的,但也需要耗费时间。在这个过程中,你需要首先列出你的需求以及候选技术。然后,从候选技术清单中挑出一部分用于实际测试的技术。接下来,你应该与供应商合作,将选出来的技术引入企业环境,测试它的实际形式和功能。最后,根据实际测试结果,看看哪种技术既能满足需求又能用于部署SOA,如果找到这样的技术的话,你的目的也就达到了。

当然,只选择一个大型软件供应商并且利用其投资组合中的所有软件产品来部署SOA是一个诱人想法。不过,虽然这样一个技术套件的某些部分可能会非常适合与你部署SOA,但是该软件堆栈的其余部分可能与你的需求不匹配。为了“享受”单一套间的方便之处而接受错误的技术以及单一的供应商的关系都有可能导致SOA项目的失败。相反,在大多数情况下,选择部署SOA所需要的正确地技术解决方案往往是一个混合和搭配多个供应商极其技术。

请确保你的架构是技术独立的。围绕一些厂商所推动的某个特定技术建立架构听起来似乎更容易,但请记住,技术始终是处于一种变化的状态,然而架构的核心概念仍然需要保持完全一致。你需要首先确定出架构,然后再找出能够支持该架构地相关技术,同时还要知道这些技术将来有可能会发生变化。

SOA部署成功的要诀

如何成功地部署SOA并不是发展迅速的新科学,而是一系列侧重于各个领域的优秀传统IT学科的组合,比如人力资源、过程、技术和业务。有些企业在部署SOA的过程中,没能抵制住“快速并且简单”的面向技术的解决方案的诱惑,而最终失败了,他们失败的根本原因就在于没有考虑到SOA的基本要素。

大多数失败的SOA项目都有一个共同的问题,那就是没有一个清楚的理解SOA所需要的系统变化。它涉及到企业的很多部门,其中包括政治领域,因而范围问题迅速暴露出来。强有力的领导层需要应对这些问题,并且大多数企业在IT层面上并不具备这样有魄力的领导层。因此,SOA项目从一开始就步伐不稳,最终没能逃脱失败的命运。

确保SOA成功的一个最核心的因素就是企业的领导层乐于接受并掌握创新思维,并且他们有能力和魄力在新思维的基础上在企业范围内带来变化。虽然有些企业可能逐步增加SOA的要求,但是,绝大多数需要新的领导层、管理层甚至员工齐心协力完成SOA部署。投资回报率(ROI)是真实的并且意义重大,但在一开始它需要作出一些牺牲。