【IT168 专稿】
并不是所有服务都有相同的地位。如果可以把一套标准的设计模式应用到所有服务上,SOA的实现会让人舒心得多。一旦IT有了一套理想的设计标准,那么服务便可以像流水线产品一样批量生产出来,直到IT标准发生改变。遗憾的是,我们并不是生活在一切都可以准确预测的理想社会里。
多样性的服务
和蔬菜一样,服务有着各种各样的形状、大小、色泽和口味。因此,用一种设计方法进行所有服务的设计是不妥当的。服务是各种有用业务功能的现代化数字形态。雇佣员工、创建定单、计算信用分数、寻找推荐产品......一个系统代替另一个系统(或用户)所做的任何工作,都可以视为一种业务功能。IT的主要目标就是为企业提供这些功能,而这些功能又受到使用它们的客户、所完成任务的复杂程度和各项功能与其它功能的关系所影响。有些影响比较大,有些则比较小;有些在企业中被广泛地应用,还有些只在不太起眼的业务(niche,利基业务)中使用。没有任何两项服务是完全相似的,各项服务也会为企业带来不同的价值。要了解一项服务的价值,首先要明白它的用途。
与书本、歌曲、电影、新闻和咖啡一样,不同的顾客喜欢不同的IT服务。有受到大部分人喜欢的“主流”服务,也有只有少数人喜欢的不起眼的“利基”服务。并且,就像人们发现“长尾”消费市场中不起眼的机会产品(niche products)蕴藏着巨大的利润一样,IT服务也有类似的机会:从长尾服务中获取更大的价值。虽然传统的IT策略(以及相应的主流SOA策略)对此熟视无睹,但它却是敏捷性“配方”所必须的“配料”。
长尾分布规律
就像重大事件占领所有报纸头条;所有片酬都被顶尖演员拿走;广播里播放的都是最热门的歌曲;而最酷的东西卖的最多。我们关注主流产品是因为它们的影响的确很大。这些现象遵循长尾分布规律:即20%的原因导致80%的结果。
长尾效应在IT部门中同样存在,并引导着技术功能的流行。技术功能(technology function)即可以通过SOA以服务形式呈现的任何软件单元。每一项功能都代表着一定层次的需求。将所有对IT功能的需求描绘出来,并根据使用频率将它们分级,便会产生图1所示的长尾图,其中最常用的20%占领了几乎80%的IT功能需求市场。这20%便是IT中的明星演员,它们被所有SOA从业者一致吹捧并转化为服务。其它的80%则缩在IT档案室的阴影中,被视为SOA的备用演员。当需要为SOA选择业务时,我们可以毫不犹豫地划出一条界线来,找出这最明显的20%,而忘掉其它部分。

图1
为什么会这样划分呢?因为我们看到了为迎合大众需求而产生的机会。我们知道迎合少数人的需要需要冒风险。作为SOA从业者,我们的目标是扫平一切架构变化,从而最大化IT的价值。我们的任务是在竞争对手行动之前,行动起来将IT从负债转为一种策略性的资产。这里不能有任何压力。通常,当我们有压力的时候,就会将精力放到我们已经了解的地方,放到会使我们感到放松的地方。而最能让我们放松的便是重用性的最大化。
重用的神话
一直以来IT都在迎合大众化的业务需求。我们拥有ERP系统、内部网络、公司网站、企业门户、业务智能平台、数据仓库、Email基础设施、LDAP forests和B2B feeds(链接)等。我们建立了价值百万美元的方案,然后向成百上千的用户推广。IT就是为企业提供应用技术的。因为我们的IT部门资源有限,所以必须有选择地进行项目。通常,我们会选择影响最大、范围最广、重用性最高,并且能满足尽可能大的用户群体的方案。就像便利店无法出售所有品牌的牙膏、麦片粥和啤酒一样,我们也不能用尽精力去开发所有需求很低的、不起眼的产品。几十年来,IT一直在为主流受众提供主流产品服务,因此,SOA来临的时候,我们也本能地选择了同样的策略。我们尽量选择能提供最大价值的SOA方案。遗憾的是,通常所用的SOA方案评估方法是有缺陷的。
其中,使用最广泛的检验SOA价值的方法涉及到对重用性的检测。“尽最大可能提高服务重用性”已经成为今天SOA产业的惯例。的确,我也有切实体会,重用性已经成为主要的、甚至唯一的检验SOA是否成功的标准。SOA的成功几乎已经与高度的服务重用变成同义词。这个理念表明,可以重用的服务比不能重用的服务对业务更有价值,并且ROI的计算要以服务消费者的数量为根本。更多的消费者意味着更高的重用性,也就意味着更高的价值。而实际上,服务重用性与业务价值的关系只是一种传说而已。
我们相信设计优良的服务应该是可以重用的,但仍然无法对服务的重用性进行直接控制。我们可以精心地设计服务,让它们可以被更多的消费者使用,但这只是保证服务是可重用的,而不能保证它会被重用。重用实际上是一种按需功能。通常,需求量越高,服务的重用潜力便越大。也就是说,如果一项服务不能重用,主要是因为它就是那样设计的。或者说,如果一项服务是可重用的,那是因为它实现了一项需求量很大的业务功能。
我们也可以相信,重用可以促进业务的一致性与敏捷性。面向服务的IT最广泛的应用是使IT与业务的联系更为紧密,并使企业对大部分变化免疫。实际上,主流服务对IT的作用要大于对业务的作用。IT对变化的反应可以极为迅速,但这种敏捷性很少能应用到业务领域中。比如,一家IT工作室参与了一个过时的ERP系统的替换工作。他们将广泛应用的报表功能封装到服务中,然后将当前的商务智能(BI)系统重组以应用这些服务。然后在将来的某一天,管理层下达命令要更换一个新系统。如果一切顺利,这些BI工具的用户(还有这些工具本身)将丝毫觉察不到新系统的更换。转换对ERP报表功能的使用者来说将是无缝且透明的。这种成功展示了IT的敏捷性和与企业方针的协调性,但并不是直接对业务领域产生作用。提供改善业务实践的服务与提供防止业务实践崩溃的服务是不同的。面向服务的主流功能可以防止业务领域发生变化(IT性能),但不会使业务领域更有竞争力(业务性能)。
主流服务的机会也相对较少。当然,它们非常重要,但在数量上却远少于小环境市场的机遇。只提供高度可重用性的服务等于抛弃了公司80%的业务需求。当这些需求发生变化时,有人会注意到吗?并且,因为利基服务通常是针对请求该种服务的用户的个人服务,所以能够直接为业务用户提供方便。利基服务着力解决每一细节的业务需求,按照定义其重用性并不高;然而,大批的利基服务仍然有存在的必要,因为它们面对的都是业务最前线,而这里正是业务商战胜败的关键。
只要SOA的目标是提高业务敏捷性,就不能忽略公司的小环境市场需求。注意受欢迎的方案和服务重用的最大化是IT对构建企业敏捷性的自然反应。但是,在最大化服务重用的前提上构建起来的SOA过多地强调了公司内部的需求。为实现SOA真正的价值,我们还必须将一些专门的服务推向业务最前线,以便需要时可以随时使用。服务的价值并不是必须靠重用来实现,往往它们只要能派上用场即可。这就是长尾SOA。
主流SOA与长尾SOA
从上述分析可知,重用只是SOA价值公式的一个因素。现在已经揭开服务重用的神秘面纱,我们只需要开放思想去考虑一些其它因素,比如对服务的需求和变化本质。这些因素影响着SOA的实现,并会由于战略的不同而对SOA目标产生正面或反面的影响。对主流方案有负面影响的因素可能会增强长尾方案,反之亦然。要记住主流SOA是为少数大型业务提供大众化的服务,而长尾SOA是为许多小市场提供专门的服务。我们来看看服务需求和变化对这两个分支的影响。
我们已经说过,不同的客户需要不同的IT服务。如果有多于一个客户需要同一个服务,重用便出现了。重用是对服务需求的一种度量,并且基本上都是有利的。但是度量所有服务(或服务市场)的需求同样重要。对主流服务的需求总量是很大的,差不多涵盖了所有客户的80%。相反,对利基服务的需求相对较小,只有20%。初见这些数据可能会觉得开发利基市场是没有商业头脑。但根据长尾效应,每一种主流服务都对应着四种利基服务的需求。换句话说,主流SOA没满足一个市场的需求,便同时遗弃了四个市场的需求。这四个市场可能很小,但仍然代表着IT所错过的机会。
SOA的价值在动荡时期最容易体现出来,因为这正是SOA发挥作用的时候。与服务需求分布一样,企业中的变动分布是不一致的。业务中的某些领域对变动的影响更为敏感,而某些时期的变动也比其它时期更容易引发混乱。SOA策略必须与这些不同保持一致,否则也会犯与IT同样的错误,即没有为变动的业务需求做好准备。
IT必须为应付各种变动做好准备。如果一些变动,比如政府管制、并购、遗留系统的报废等,影响到企业的核心系统,我们知道整个企业都会被撼动。如果没有为基层构造的变化做好准备,就如同留下一个火山口一样,随时都会为企业送来死亡通知书。主流SOA可以保护企业免受这种威胁。相反,如果利基服务发生变动,只会产生很小的威胁,并只影响到很小部分的业务。公司一般会很快从分散的利基威胁所造成的伤害中恢复。
每次变动,不管大小,都会影响到业务,使业务的防护能力减弱。主流SOA会注意防护最大的威胁,却会放任较小的威胁。如果没有太多的小威胁,这倒也不足为虑。但实际上大威胁是很罕见的,而小威胁却常常发生。主流服务很少发生变动,因为它们是主流服务;它们为IT所掌握;它们是业务的生命之源;它们负责企业所有方面的核心功能和数据;它们构成了公司整个业务生态系统的基本策略、业务实践和价值;它们必须尽可能地保持稳定,因为对它们的改动有破坏全局规模服务的危险。正因为这样,主流IT变动通常只在会计年度或季度的规模上发生。
另一方面,利基IT的变动频率则是以天来计算的。利基服务为业务所掌握,并根据外部市场情况而改变。它们提交与本地市场业务单位相关或有相异性的数据与功能。在业务最前线的人员,比如推销员、区域经理、产品经理和研发工程师等,他们需要的不只是主流的服务,因为他们的客户所需要的不是一般的产品。这些业务都是客户需求在IT需求上的直接反应,并且是不断变化的。如果IT不回应这些利基服务市场中的小变化,就等于允许LOB利益被侵蚀掉。真正的IT业务一致性与敏捷性是来自长尾SOA的,因为如果有变化,一般都是前线领域最先感觉到,而不是后面的办公室。
什么是最好的SOA战略?到底应该防止稀少的大型变化还是频繁的小型变化呢?应该为少数的大面积受众提供服务还是为多数的小个体呢?应该为重用而努力还是为敏捷奋斗?跟大多数情况一样,走极端一般都不是最理想的选择。最好是能在最优实现公司战略目标的情况下,同时考虑到主流SOA和长尾SOA的有效结合。
混合型SOA
主流SOA能够最大化服务的重用性,并且使IT能够承受变化引起的最坏影响,但它复杂、昂贵,并且需要多年的时间才能看到明显的投资回报。主流SOA更多的是将IT与企业中枢相联系而不是全部的业务。长尾SOA则直接照顾到业务领域的需求,减少每天变化的影响,不贵,并且有快速的投资回报,但它不够直观,并且只解决IT服务总需求的五分之一。无论哪一分支都不会单独导向SOA的圆满,但如果通过智能服务设计将两者结合到一起则可以实现我们的目标。
我们可以把长尾SOA作为主流SOA的扩展。大多数利基服务都是根据主流服务改进或定制的。一个“购买财产”的主流服务到了长尾市场可能就会演变为“在某价格范围内购买某一区域的房产”。在这个例子中,原来的服务价值在主流层次变得相对较少(泛用和重用),而在利基层次却变得更有价值(面向客户)。虽然第二项服务与第一项相比是不同市场上的不同“产品”,但并不是只能分别实现。实际上,它可以尽可能多地使用一般服务的通用特征,而只增加一些特殊的部分。比如,它可以调用通用服务,然后根据自身的特殊性定义结果。换句话说,长尾服务可以简单地通过有效服务组合从主流服务中抽取出来。虽然说起来容易,其中也是有一些原则必须遵循的。
混合型SOA(Hybrid)需要一个坚实的主流SOA基础。因为长尾服务对主流服务是有依赖性的,所以主流服务必须稳定。如果主流服务变动,可能会导致所有相关的长尾服务群发生变动。因此,可靠的设计、高度的易用性和松耦合性质是基础服务层所必须的。
所有的服务必须是可发现的。在混合型SOA中,很少有单服务的方案。相反,IT方案是将各种粒度和复杂度的服务价值链捆绑到一起,以满足既定的业务需求。长尾服务的开发人员需要明白去哪里寻找原材料。否则,要么无法构建服务,要么只能复制现有的服务。
最后,实现混合型SOA还需要强力的治理和严格的标准。虽然这是显而易见的,但仍然要强调治理与标准的重要性,因为混合型SOA将完全不同的两种服务型经济结合到一起。任何在主流SOA或长尾SOA中有效的标准与治理实践在这时候可能都不再适应。举例来说,在以Microsft或Oracle为主的工作室,可能即使没有严格的互操作性标准,主流SOA也能正常运行。 但引入长尾SOA时,如果业务领域使用的技术像大杂烩一般复杂,互操作性标准就会变得非常重要。IT基础设置也可能无法为所有的长尾服务提供足够的资源或带宽,这种情况下也需要分散进行利基服务开发。标准与治理需要有足够的刚性来保持产量,也需要足够的灵活性以包容繁多的组合工具和方法。
总结
和许多产品一样,对IT功能的需求也遵循着指数分配定律,有少量极受欢迎的主流功能和大量不起眼的非主流功能。由于高度的服务重用的影响,IT倾向于使SOA使用更受欢迎的解决方案。但主流SOA的服务在应付持续变化方面存在一些缺陷。IT可以通过在长尾市场中使用“一次性”服务来全面降低变动带来的风险,与业务更为紧密地结合。
单独的主流SOA和长尾SOA都不是有效的。它们是互补的,应该结合到一起以实现面向服务架构的最大效益。在混合型SOA中,主流服务是企业面向服务的价值链网的基础。这些价值链伸入长尾市场,为业务前线的小团队提供及时的定制服务。在这里,敏捷性的重要性得以充分的体现。
作者简介
Marc Rix是SAIC公司首席SOA方案架构师,主要负责SOA与BPM中的关键业务发展,过去11年中一直从事企业规模的整合方案相关工作。