如何避免SOA试验项目中容易犯的错误

日期: 2008-05-07 作者:Jason Bloomberg 来源:TechTarget中国

所有关于新技术的项目都必须有一个开始,而当所需要应用的这项技术比较复杂又具有挑战性时,我们通常采取实施试验项目的方式,来事先测试项目的可行性和了解在应用的过程中会遇到的问题。类似面向服务的构架(SOA:Service Oriented Architecture)这种复杂的体系技术,在企业全面应用之前先进行试验项目是比较明智的做法。在过去五年的经验中,Zap Think网站曾经接触过无数的公司,它们都计划或者实施了SOA试验项目,在其中有很多的试验项目经过了良好的分析和设计,取得了很好的实施效果;但是也不乏一些实验项目在实施之前没有经过系统的分析和设计,最终导致项目失败,这样的情况在IT企业中是……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

所有关于新技术的项目都必须有一个开始,而当所需要应用的这项技术比较复杂又具有挑战性时,我们通常采取实施试验项目的方式,来事先测试项目的可行性和了解在应用的过程中会遇到的问题。类似面向服务的构架(SOA:Service Oriented Architecture)这种复杂的体系技术,在企业全面应用之前先进行试验项目是比较明智的做法。在过去五年的经验中,Zap Think网站曾经接触过无数的公司,它们都计划或者实施了SOA试验项目,在其中有很多的试验项目经过了良好的分析和设计,取得了很好的实施效果;但是也不乏一些实验项目在实施之前没有经过系统的分析和设计,最终导致项目失败,这样的情况在IT企业中是很常见的。通过总结和分析,Zap Think发现,导致项目失败的很多问题都是相同的,为了不让大家再犯同样的错误,我们撰写了这篇文章,希望能够让大家进一步了解什么是一个好的SOA试验项目,以及如何避免一些常见的错误。

  定义一个SOA试验项目

  试验项目指的是,通过对一些新技术或实现方式进行一个试验性的项目,然后对它进行评估,最后决定企业是否需要在这些技术或方式上开展进一步的调查研究,或者决定是否要继续扩展这个项目,以满足核心业务的需要。虽然开展的范围有限,但是一个试验项目也必须产生一个最终的工作结果,并能够解决一些实际的问题。虽然试验项目所产生的结果和带来的效益非常有限,但是通过这些结果的分析,就可以反映出该项目在实际业务的真实情况。

  对于一个企业来说,有很多理由促使他们在应用SOA之前开展一些试验项目,下面是一些可能的情况:

  1.在企业内部建立起对SOA的认同

  2.作为一种对整个体系和服务模型更高层次和更复杂的应用的尝试

  3.能带动技术团队,赶上SOA多元化应用的步伐

  4.可以根据企业需要调整部属SOA的方法和手段

  5.可以对一些帮助部署和应用SOA的商业产品进行评估

  在企业向一种新的构架模式过渡时,试验计划能够帮助用户减少所承担的风险。但是,实施这种试验计划本身也有一定的风险,而现在越来越紧缩的企业预算是不能允许实施一个风险很大的项目的,所以我们对于SOA试验计划的认可程度和可接受性的把握非常重要,尤其是当这种体系本身没有任何功能和特性,而只有部署的过程才能体现其价值的时候。一个很理想的SOA项目能够在使用尽可能少成本的情况下解决实际的业务问题。所以我们在实施SOA试验项目的时候,最好的方式就是用一些企业的剩余预算作为它的资金支持,并让这个项目去解决一些实际的问题。此外,还可以采取一种递归的方式来部署SOA体系,因为在整个项目进行的初始阶段,企业所承担的风险是非常小的。

  虽然,渴望构建一些新的功能确实能够解决一些业务问题,但这样也会给SOA体系的部署带来一定的隐患,因为这样你可能把精力都放在了功能性上面,而忽视了体系构架本身的设计。请记住,SOA试验项目的目的就是为了试验SOA,也就是试验一种体系,而并不是试验一款新的软件产品。这也许是SOA试验计划最容易犯的错误之一,将很多功能堆积成了一个SOA试验项目,但实际上对于SOA体系本身却没有过多的研究和探索。更有甚者,也许仅仅是在旧有体系的基础上,试验了一些新的实现方式而已。

  SOA试验计划容易犯的错误

  令Zap Think网站吃惊一点的是,尽管从五年前开始,我们就在不停的解释SOA和Web服务的概念,但还是有人们混淆了两者之间的关系。SOA,实际上只是一个软件体系,一组可以遵循的最佳实现手段,如果你愿意的话,也可以把它称作一种准则。而Web服务更像一种基于某个标准的软件实现接口,所以SOA试验项目和Web服务试验项目是完全不同的。要实施一个Web服务试验项目,你应该在基于标准的接口实现方面下更多功夫,最多再需要考虑一点关于体系的问题;而如果是SOA试验项目的话,你则必须把绝大部分精力花在体系设计、建模和业务组织等环节上面。

  事实上,企业完全可以在不需要Web服务的情况下部署SOA,也可以在不需要SOA的情况下直接构建Web服务。今天的任何SOA项目中都会包含Web服务,那是因为Web服务能够很容易的实现业务的松耦合状态。但尽管这样,构建了Web服务却并不表示你就是在构建SOA。最终的结果是,很多公司在实施SOA试验项目时都犯了这个错误,表面上看起来他们在试验SOA,但是实际上却是在试验Web服务。

  如果用户对于Web服务和SOA之间的界限没有一个十分清晰的理解,那么极有可能会犯下这种错误。这种试验项目通常是从对体系构架的设计和试验开始的,但是却以技术小组专注于构建服务而结束。这样一来,他们就忽略了构建体系这个重要的工作,而这恰恰是让新的体系构架正常工作的必要基础。构建一个体系的最佳实现方式是很难的!你需要知道如何在合适的层次尺度构建正确的服务,并且在实现接口和策略进行联调的时候始终保证松耦合的状态。要做到这些确实是需要一些能力和方法的。

  很多时候,一个企业对于体系的忽视常常会给企业预算带来压力,也会导致在领导层和技术人员中缺少技术过硬和经验丰富的系统构架师。这是很重要的,如果你的SOA试验计划有比较充足的资金,也拥有优秀的系统构架师,那么你就能够设计出优秀的构架体系,同时也能管理好整个团队并和高层管理人员很好的沟通。

  SOA试验项目中的重要注意事项

  为了更进一步的说明SOA试验项目和Web服务试验项目之间的区别,让我们一起来看看你的SOA试验项目中都必须包含哪些重要内容:
 
  ·一个关于构架体系的计划:企业级SOA是为了让业务和IT技术更好的结合而提供的一种全面、高层次的企业级构架体系。特别地,一个SOA需要帮助一个企业构建能够对不可预见的变动做出响应的IT体系。因此,一个SOA试验计划必须能够实现这个企业级计划的一些子集,并且有条不紊的进行实施。

  ·处理范围:构建SOA的过程包含了确定出需要构建的正确服务这一步骤。要达到这个目标,最好的方法是从已有的或需要构建的业务处理过程开始,将这些过程分解,然后对冗余的处理过程进行确认,这样就可以提取出一些可重用的服务。对于你的试验项目来说,你必须知道项目所涉及的范围之内包含了哪些业务处理过程。如果业务处理很少,那么你很可能不需要实施一个SOA,而如果太多的话,开展试验项目的价值就会降低。此外,还必须强制保证一个企业的一次进行的业务处理过程不要太过为庞大。最好的方法是从一个简单但是比较重要的业务流程开始,这样能够让你的SOA试验计划快速见效,并且便于评估。

  ·资源范围:实现一个SOA的过程并须同时包括自上而下(通过业务流程分解)和自下而上(找出细化功能点并将它们构成更抽象的业务服务)两种形式。对于你的试验项目来说,确认你在分解和合并过程中所需要的资源是非常重要的,但是请注意,不要简单地基于现有的系统来构建服务,你需要的是能够帮助你的试验项目成功的服务,这点是放在第一位的。

  ·采用递归的方法:看到这里,大家也许会说,我们现在陷入了左右为难的境地:如何在分解处理流程之前判断在业务范围内需要哪些资源呢?而如果你不确认某些特定的资源,又如何判断处理流程是不是在业务范围之内呢?答案是,在开始时,你只需界定一个项目的大概就可以了。你应该从一个比较抽象的体系计划开始,然后遵循某种方法规则,使得你可以在随着对业务分解和服务定义等活动的开展,方便的返回来改进你的计划并且对你的处理过程和服务进行二次访问。利用这种递归、敏捷的方法来实施SOA项目是很关键的一点:如果你不采取这种方式,很有可能构建出错误的服务、无法保证最后的业务范围和当初界定的范围一致、因为修改错误而带来很多没有必要的返工,等等。所以,你应该以小规模的项目开始,然后尽快地进行递归改进,使得你构建的服务和体系能够朝着真正的业务需要发展。

  ·清晰的认可标准:每一个试验项目都必须能够回答下面这几个问题:如何才能知道你的试验项目已经完成?以什么标准来检验它是否成功?更宽泛地来说,你如何评估你从SOA试验项目的获得和开始期望的目标的符合程度?你应该有一套清楚的完成底线来标志你的项目是否完成,并且需要一些特定的认可标准,让你能够给这个项目打分。“完成”并不意味着结束,它只表示这个试验项目达到了它本身的目标。通常情况下,试验项目才仅仅是企业对SOA所付出的第一步,之后还有更多的后续工作需要处理。

  你需要理解一个试验项目究竟需要什么样的认可标准,这是极其重要的,它能够让你避免SOA试验项目中的很多问题。这些标准就是你的实现目标,它能保证你的团队在对整个项目的计划和实施过程中有规矩可遵循。因为每个企业在实施SOA项目的时候都会有不同的原因,所以根据企业的不同和项目的不同,认可标准也会有所差别,下面是一些比较常见的认可标准,可以作为你的SOA试验项目的参考:

  ·完整的体系设计:“完整”的意思是指在试验项目的涉及范围内完整。这样的设计不应该只包括刚开始时的粗略计划,还应该包括服务协定、调用方式或者其他一些SOA部署过程中相关的详细信息。因为你很可能需要把这样的一份设计报告作为后续SOA项目开始时的参照标准。

  ·可重用的业务服务:服务是SOA的必要条件,但不是充分条件。你的认可标准必须包含一定目标的可重用的服务,其中定义了服务的数量和每个服务的用户的数量等指标。

  ·管理和控制标准:你肯定期望实施一个可反复使用的SOA试验项目,而不是一个没有任何未来的SOA。一个成熟的SOA项目应该包括一个管理和控制的构架,用来处理在后续管理和SOA发展部署过程中的用户角色识别、策略和规则的制订、实施等问题。你的SOA试验项目至少要对这种管理控制的构架进行布局和规划,而且也要需要相应的验收标准,用以测试这样的框架是否合理和有效。一旦这个管理控制框架建立起来了,在真正实施SOA的过程中,它就能够帮助你调整SOA试验项目,来符合企业的需求。

  Zap Think的总结

  如果你是一个IT经理,那么你应该让一个经验丰富的系统构架师来负责整个项目的实施,因为那是你能够做的最能帮助企业避免SOA试验项目出错的事情。千万不要忘记SOA是一个体系构架,你无法从某个厂商那里购买它,也不能通过开发代码来实现它。前面也提到了,体系构架是一系列最佳的实现方式,在你部署业务的过程中,它能够给你的提供一个指导方针,而不管你使用的是什么技术。在SOA试验项目的过程中,除了系统构架师以外没有人能够将其中体系构架的部分做好。

  当然,从实际情况来看,很少存在一个只由体系本身组成的SOA项目。要达到项目的目标,你应该用某种具体的方式来实现你的SOA。只是,需要将体系的“实现”和“体系”本身区分清楚,否则你的SOA试验项目就会出现很多的问题。

相关推荐

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。

  • 购买应用集成工具可以采取平衡做法

    购买应用程序集成工具需要好好看看你的公司需求,知道从供应商里面要寻找哪些关键功能。