Andre Tost:您是SOA专家吗?

日期: 2008-09-15 作者:Andre Tost 来源:TechTarget中国 英文

  SOA专家需要了解的事情似乎越来越多。本文给出了一个清单,能帮助您洞悉一切相关内容。


  不在SOA中迷失方向


  我最近开始着手与人合作撰写一本书,讨论如何使用Java创建面向服务的体系结构(Service-Oriented Architecture,SOA)解决方案。关注这方面的东西时(即使很短时间),就会明显地发现,在SOA中扮演着重要角色的来自IBM和其他厂商的各种产品正在不断增多——而这甚至还不包括正在进行的各个开源项目。最终我们了解到,如果没有恰当的方法、流程和组织,企业级别的SOA项目就不可能完全成功。这就导致了我不得不从高层的细节跳到很低层的细节,然后又回到高层细节,每天如此往复数次!我知道我的很多同行和同事都经历着相同的事情。


  因此,我决定通过本文为您提供一个挑战和机会,将在其中简单地讨论今天的SOA专家要知道的“事项”的范围。这并不是要吓您——您可能已经觉得快被这个领域涉及的范围及发展的速度吞没了。相反,本文的目的是让您知道您并不是孤军奋战,并帮助您确保获得持续成功所需的工具和技巧。


  流程与方法:“如何”与“什么”的问题


  在SOA发展的早期,大部分讨论都是与技术相关的,此类技术主要集中在Web服务上:SOAP、WSDL、XML模式等等。不过,SOA背后的核心目标之一是,提高业务与IT之间的一致性,因此相关讨论开始越来越多地向这方面发展。哪些服务是我的业务所需的?这些服务是否对实际业务难点进行了处理?为了尽可能进行重用和支持进行快速变更来适应市场变化,我的服务的粒度应该如何?这个讨论非常重要(仍然将持续很长时间),其重点是其背后的核心问题的概念:什么是服务?


  让这个问题(以及所有从其派生的问题)回答起来更为简单的方法是,转而研究“如何”方面。我如何标识我的业务需要哪些服务?如何将服务集组合为新解决方案?如何在服务设计中包含业务视图?以及我如何确保在IT中实现的服务真的是业务方面所需的服务?


  您会注意到,我在此上下文中大量使用了术语“业务”。传统方法关注软件的体系结构设计与设计的IT方面的内容。SOA带来一个全新的视角,而这需要在我们的流程和方法中加以反映。我所合作过的大部分公司或多或少都具有针对独立应用程序开发的流程。要建立支持创建面向服务的体系结构的环境,通常需要对这些流程进行调整,以包含跨企业的服务设计概念,而且更重要的是,要确保采用了从业务级别开始的恰当的“自顶向下”分析和设计。


  我要在此处指出的两种方法是:


  ·面向服务的建模和架构(Service Oriented Modeling and Architecture,SOMA)描述了一种方法,从标识相应的服务到对其加以实现,从而对服务进行建模和体系结构设计。


  ·Rational Unified Process(RUP),按照Wikipedia的定义,这种方法是一个迭代软件开发流程框架(不是单个具体的规定性流程,而是一种可采用的流程框架)旨在供开发组织和软件项目团队进行定制,将选择适合其需求的流程元素。这对此方法进行了很好的说明,显然它可以作为基于SOA的开发流程等的框架。而事实上,SOMA方法已经包含到了RUP中了。可以获得用于Rational Method Composer的插件,可帮助您实现这个RUP4SOMA扩展。


  底线是,SOA专家必须知道如何定义和应用用于创建面向服务的体系结构的正确方法。采用SOMA之类的现有方法并使用RUP作为总体框架,可帮助引导讨论。


  治理:避免服务混乱


  与前一主题紧密相关的是治理。我已经提到,服务是为了跨企业重用而构建的,因此,软件显式地设计为独立于特定业务领域。大部分IT组织的结构都不对此提供支持,包括所使用的资金与ROI模型。必须建立服务所有关系定义。如果服务是作为订单管理项目的一部分构建,如果让其在整个企业内重用存在的额外成本,如何计算这个额外的成本呢?如果稍后另一个业务部门产生了保证持续更新服务的新需求,谁负责进行此工作,谁为此提供资金支持?


  但组织仅是治理的一个方面。事实上,我们对此术语的定义非常宽泛。作为技术人员,我最关心IT治理,我上面所提到的所有关于流程和方法的东西当然也属于这一范畴。但还有更多的东西。除了讨论如何创建SOA解决方案之外,治理还讨论如何对其进行操作(随便提一下,可以参考 观点与展望,第5部分: 什么是IT管理,为什么应该对其加以注意?,其中提供了对IT治理的一种很不错的看法,同时也说明了这个主题内容的多样性)。IT运行时管理也属于其中,我经常听到人们将信息技术服务管理(Information Technology Service Management,ITSM)称为一个关键规程,而将信息技术基础设施库(Information Technology Infrastructure Library,ITIL)看作实现此规程的重要框架。


  总的说来,SOA专家可以描述SOA治理的所有方面,包括方法(如前面所讨论的)、与SOA相关的组织挑战以及如何处理它们,另外还包括具体的IT治理技术和概念(如ITSM和ITIL)。


  体系结构:什么使其面向服务?


  我们所进行的大量工作都是创建、描述或检查体系结构。这些体系结构对服务及其基础组件、这些服务间的关系进行描述。对系统的体系结构可使用很多透视图:例如,软件组件视图、上下文视图或操作视图。


  通常,我们尝试通过正式的模型表示系统的体系结构,而此模型通常采用UML进行说明,使用工具来创建上面提到的各种透视图。Rational Software Architect就是这样的工具。通过逐步的细化,我可以从模型派生出更为详细的细节,然后可以从其中生成具体的实现。模型最初是独立于平台的模型(Platform-Independent Model,PIM),后来逐渐转换为平台特定的模型(Platform-Specific Model,PSM)。(请注意,一定要不仅关注服务及其间的关系,还要对这些服务所在的环境进行描述。)


  有了目标解决方案的正式表示形式,还让我能够应用通用设计模式,实际上就是重用各种用于表示组件及其交互的得到认可和验证的方法。通过这样,我可以轻松地应用企业服务总线之类的各种熟知概念。


  对于SOA专家,这意味着他或她必须能够创建良好的体系结构,其中应用了面向服务的原则和大家熟知的SOA设计模式。体系结构采用UML表述为正式的模型,要使用Rational Software Architect之类的工具创建此模型。


  标准:WS-*迷宫


  作为创建面向服务的体系结构和设计的一部分,标准的问题总是会出现——这毫不意外,因为利用基于标准的接口和消息模型是SOA的主要好处之一。标准可以是特定于行业的(例如,用于保险行业的ACORD或用于医疗保健行业的HL7)或特定于技术的。对于SOA(特别是Web服务),已经建立了大量的标准——实际上,我们应该将其全部均称为“规范”,因为其中很多尚未实际成为正式标准。其中一些已经得到了相关供应商的大力支持,一些还没有得到大家的认可,其中一些甚至彼此重叠和相互竞争。


  为了更为简单一些,我们开始使用“概要”的概念。概要——大部分都是由WS-I组织定义,归其所有——是处理特定场景的规范和标准包。例如,WS-I基本概要(WS-I Basic Profile)包括支持可互操作的基本Web服务交互的所有核心Web服务标准(SOAP、WSDL、XML等)。而可靠安全概要(Reliable Secure Profile)则是更为高级的概要的例子,其中包括WS-ReliableMessaging和WS-SecureConversation等内容,用于支持构建能够可靠而安全地交换消息的解决方案。


  作为SOA专家,您需要知道所有相关WS-*标准和规范,能够确定各自的位置,知道其状态以及如何将其应用到给定的解决方案体系结构。而且,您还需要知道哪个产品支持哪个版本的标准——而这就是我们下一个主题将讨论的内容。


  产品


  这很可能成为本文中最长的部分。我们IBM总是积极地推出各种软件产品,而最后介绍的这些产品也推动着我们所进行的工作,包括从建模到开发,再到运行时以及IT解决方案的部署与管理。


  没有任何两个客户是完全相同的。事实上,当我认为已经“完全了解”的时候,我遇到了之前从来没有遇到过的新挑战。当然,这其中的部分原因是因为软件技术的极高创新速度。有些组织拥有存在多年的系统,而且他们对此相当满意,而其他组织则喜欢尽可能让自己站在技术的前沿位置。大多数企业都处于两者之间,拥有非常多样化的异类平台和应用程序。


  考虑到这个多样性,向SOA进发的过程中会涉及到大量技术和产品。例如,您可能会通过将业务流程表示为符合BPEL标准的流来对其进行建模,并随后将其在WebSphere Process Server上部署和实现。或者,您可能会希望建立企业服务总线(Enterprise Service Bus,ESB),以使用WebSphere ESB跨多个不同的网络协议和数据格式集成现有功能。可以使用Tivoli提供的ITCAM系列产品来建立SOA管理。将基于门户的用户界面环境(基于WebSphere Portal Server)插入到在大型机上的CICS中运行的一组服务中。这个列表非常长。


  并非到这里就完了。作为专家,我们有时候会遇到有关特定产品和平台的非常细节的问题。我下面将给出一些例子,所有这些问题都是我在过去数周中碰到的问题:


  ·我如何在WebSphere Process Server中的BPEL流程内跨多个合作伙伴链接调用保留SOAP Header字段?
  ·用于记录给定服务的请求方的名称的WebSphere ESB自定义中介元素是什么样?
  ·如果协议为HTTP、JMS、MQ,我如何将响应消息相关到Message Broker流中的相应请求节点?
  ·WebSphere Application Server是否支持WS-Policy标准?
  ·如何将现有C++应用程序的基于CORBA的接口替换为使用IBM产品的Web服务?
  ·SIBus功能提供用于检索总线名称、目的地名称和类型等信息的JMX接口是什么?
  ·在iSeries上运行的RPG应用程序连接到DataPower应用程序的最佳方式是什么?
  ·为了利用面向SOA的ITCAM产品,我需要哪个版本的IBM Tivoli Monitoring?


  这个列表会非常长,在大多数情况下,并不能给出简单的回答(有时候也很简单)。但我甚至还没有提出一个我最看重的问题:所有这些与您的竞争者的产品比较起来如何?(到底为什么会有人问这个问题呢?)


  能帮助我们通过这个迷宫的是IBM SOA Foundation的概念以及相关的SOA参考体系结构,其中提供了结构设计方法,帮助确定相关功能组的结构,随后可使用这些功能组定位与之相关的产品。


  既然这样,SOA专家应该知道IBM SOA Foundation中的基本产品集以及整个SOA软件市场中的相关产品。这包括有关这些产品彼此如何集成(以及如何与现有系统集成)和如何优化在其上运行的解决方案的技能。


  Java技术:Annotations,有人知道吗?


  正如我提到的,我现在正在撰写一本关于SOA和Java的书。由于书籍出版前需要一段时间,因此它应该基于书籍推出时可用的最新Java技术。目前最新的技术是Java 5,具体来说是Java Enterprise Edition(Java EE)V5。对于Web服务而言,Java内的重要标准是JAXB V2.0和JAX-WS V2.0。


  所有这些技术都相对较新,通常在商业中间件产品中尚不可用(但这种情况会很快发生变化)。目前作为开源项目提供了参考实现;例如Glassfish项目构建了一个Java EE 5应用服务器,其中包括对JAXB和JAX-WS的支持。由于该书应该是独立于供应商的,因此我们使用了Eclipse工具平台来开发示例(Eclipse实际上是所有IBM工具产品的基础)。


  因此,我在本书的撰写各章节时,了解了关于这些新标准和编程模型的大量信息,我相信这些标准和模型将很快在我们的客户项目中得到越来越多的应用。我们现在也已经在WebSphere产品系列中看到了对此的支持。


  与我们在目前J2EE中(J2EE中的“2”在Java V5中消失了)构建Web服务的方式的一个重大差别是使用了Annotation。简单说来,我们用于定义不断增长的部署描述符的很多元素都归结于Java源代码,即带“@”前缀的关键字。将随后在源代码中自动处理这些关键字,以便使所有信息都位于一个地方,而不是分布在多个不同的文件中。我个人必须承认,我对Annotation并不十分感冒。乍看之下,这些似乎使一切变得简单了(所有东西都在一个地方,在代码中我需要的地方),但这也使得建立良好的关注分离(业务逻辑编码与进行部署决策)和实现更为声明化的编程风格变得很难。


  另一个大的变化是“通用对象”。这稍微有些偏题,您可以参考相关的教程;另外还要指出的是,我非常喜欢这些东西,特别是其应用到JAX-WS提供者编程模型的方式。


  不过,无论喜欢与否,SOA专家都必须了解一系列标准Java API并能够对其加以应用(特别是影响Web服务和XML的Java API),并能够说明这些API的不同版本间的差别。


  特殊专业技能


  如果阅读了这些内容,仍然认为自己是符合上面所述要求的SOA专家,您一定是个天才,请立即与我们联系,因为IBM可能会希望能够聘请您到我们的企业来!


  但严肃点说,面向服务的计算领域是一个涉及面复杂的相当大的领域,仍然在迅速地扩展,正逐渐地成为构建软件系统的一个主要方式。要彻底地了解它的每个方面并不可能,因此我们所能做的就是专注于它的某个特定部分,并同时保持对整体情况的足够认识。


  因此,假如下次有人问您“您怎么会连WS-SecureConversation是否要求Kerberos支持都不知道呢?我还认为您是个SOA专家”,您完全可以让他/她阅读一下本文。


  关于作者


  Andre Tost是Software Group的Enterprise Integration Solutions组织的一名高级技术人员,他在这个部门帮助IBM的客户建立面向服务的体系结构。他专长于Web服务技术。在开始从事目前的工作之前,他有十年的时间在IBM软件开发工作中担任各种合作伙伴启动、开发和构架的角色,目前他在WebSphere Business Development小组工作。他出生于德国,目前在美国明尼苏达州的罗彻斯特居住和工作。在业余时间,他喜欢和家人在一起,并且有空就去踢球或看球赛。

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

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

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

  • 揭秘New Relic APM技术细节

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

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

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

  • 联合创新,携手共赢 华为与Commvault签署全球合作联盟协议

    【中国,上海,2015年9月19日】在2015年华为云计算大会上,全球领先的信息与通信解决方案供应商华为与美国知名的数据管理软件及相关服务主要供应商Commvault签署全球合作联盟协议。基于合作协议,双方将会加大投入数据中心备份解决方案在云化环境下的“可服务化”技术研究 。Commvault公司全球业务发展副总裁Andreas May、华为IT数据中心解决方案总裁马力出席签约仪式。