重用的神话
一直以来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。