2008-06-28

服务计算:“服务”究竟是哪个服务?!

服务计算(service computing)、服务科学(service science)以及服务研究(service research),甚至Web服务(Web Service),这些的核心词汇都是“服务”。再谈大一点,从经济上,有第一产业农业,第二产业的工业,第三产业的服务业,服务业主体也是“服务”。这里并不想把问题搞乱,而是希望说明,“服务”一词在不同环境下有不同含义,本篇的落脚点还是服务计算的“服务”。

服务计算的服务有两个层面的含义。从管理层面看,服务是一个商品化的能力实体;从计算技术层面看,服务就是有自主计算能力的主体(agent)。服务彼此不同,若要相互协同合作,必然彼此需要一个约束方式,在管理层面内这种约束方式是合同契约(contract,在计算层面内约束方式是接口(interface);同样,服务要有一个依靠的环境,在管理层面内这种环境可笼统归为市场机制(market),在计算层面内服务环境不仅仅是一种软件体系结构(architecture)和某种框架(framework),而是一套社会性的信息基础设施(infrastructure)。

从这两个层面看,服务具有社会性,依靠社会的方式进行组织。就这一点,目前的SOA相关技术是无法实现的,尤其对于WS-*标准族,它仅是平台组织方式的延续。另外,还有三个服务的质量特征,我们经常忽略它们,忽视它们对技术影响。

(一)服务的可发现。社会上存在目的、形式各异的服务,如果客户可自主的选择服务,那么必然能够发现那些符合需求的服务,会有一个清单提供足够的信息,用来帮助供客户决策。这一点服务是与组件不同的,组件装配是由软件工程师来完成的,然而这个装配清单并非客户选择,而是由软件生产商决定。显然,如何清楚的描述一个服务,提供足够的可信的信息,让客户发现,并使其相信其符合自己的需求和现状,这仍然是一个难题

(二)服务的再配置。服务用来实现客户的业务要求,然而外界环境总是要变化的,与其协作的服务也许会发生变化,这必然会导致服务原有的配置(或许这些配置写在契约里了)必须发生变更,这种再配置是不能导致一个现行服务的在业务进程上中断,至少不会导致其它关联服务在业务进程上的中断,例如,旧配置的数据会过渡到新配置下。遗憾的是,就目前计算技术来看,目前再配置问题还没有明朗的解决途径,即使实现成本不菲而且也令系统更加复杂且脆弱。

(三)服务的可代替。对于一个发展不止的社会来说,新服务更适合当前的需求,需要替代某个服务,这并不奇怪,显然服务不能成为毒品,令人难以戒除。然而,这对于软件来说,的确是个问题,比如,旧有服务数据能否迁移下来?另外,新的服务也会导致服务范围的变化,系统各方力量需要重新平衡。

如果要实现服务计算,这三个特征是不能回避的。但就目前SOA相关技术的成熟状况来看, 会解决一部分问题,但不能彻底解决。

在参与某些会议时,尽管很多企业站出来声明,SOA是怎么怎么的帮助他们提高了生产效率,但我还是怀疑,因为,上述根本问题从来就没有解决。最终,企业还是构筑一个更脆弱的、更复杂的系统。我也相信,那时或现在会有人站出来说:嗨,这是因为你们的服务治理(service governance)没做或没做好。

没有评论: