又做了一年的所谓SOA相关的工作,还是不太明白SOA如何落地?如何算达到了SOA的目的?
这些工作主要是把后台系统的服务用webservice给包裹起来,在我们选的SOA平台上运行。这些后台系统有处理帐务的、处理报表的,也包括一些第三方系统,如缴费的。
在公司范围内,基本做到了中前台系统如需要调用后台服务,都通过我的SOA平台,使用标准的webservice调用方式。
实施中有几个难以解决的问题:
1)SOA平台封装的服务如何来封?ByPass是最简单的方式,目前我也大多这么做的,最多在与后台系统交互之间有个适配器,做报文拆组和通信(如 cics,mq)的工作。另外就是把服务品质提升,将服务整合下,比如统一数据字典、剪裁报文规格、组装N个服务为一个等等。
2)数据字典问题。如1)所说要提升服务品质,数据字典是第一关的,但这个工作量和纠缠不清是在难以承受,这相当于全公司所有数据字典的统一,原来分散的系统之间本来就差别巨大,要统一就做很多的翻译映射的工作。而数据字典本身就是一个复杂工程。
3)服务的发展与组合。如果对服务进行组合,应该设立一个怎样的粒度,组合的服务内部是否需要记录数据库,如果某步出错,是否需要由SOA平台来自动反交易...反交易选择XA的模式,还是人工模式?
有些厂商提了所谓SOA治理,这些软件是否有用,还有待实践和证明。