这两天BizTalk群里有很多人在讨论关于SOA架构的价值,有些朋友认为最大价值是减少代码级开发,有些朋友认为是消除紧密耦合,还有写朋友认为是提高重用率。看到兄弟们在激烈的探讨,自己也抽空深入思考了一下这个问题,从中得出了一点结论,写在这里和大家一起探讨一下,希望能够听到大家不同的声音。
先来个开门见山,我认为,SOA架构最大的价值是敏捷,这要比重用更有价值。
流程是SOA价值的关键,我们将那些随着时间推移在不断发生变化的业务放在BPM层中,使得核心业务流程的变更变得更加简单。比如说,企业增加一条新产品线可能会导致公司定义销售税的改变,我们可以通过流程,将这样的业务流程变更转变为我们对流程的配置,这种架构能够更好地支持业务变更,为IT带来敏捷的价值。
尽管大多数人认为SOA的卖点是重用,或在多个系统间重用服务的能力,但是我想随着时间的推移我们会渐渐发现,SOA的真正价值是提供了无需一连串重新开发、测试和部署,就能改变核心业务流程的能力,我认为这一点才是最重要的。
我们试想一下,企业中有多少软件或服务是需要重用的?当我们实施SOA之后,企业中软件的整体重用率的提升微不足道,曾经在《信息周刊》上看到一篇文章,SOA实施前后企业软件重用率从原来的32%仅仅提升到了39%。
因此我认为,SOA的价值定位应该是它促进架构敏捷的能力,或是支持架构变更的能力,如果我们能够把更多的时间用来关注如何能更及时地调整架构以适应业务的变化所带来的价值,我想商业价值也就显而易见了。
敏捷的价值是能够带来战略上的优势,虽然这种优势难以度量,但也并非不能度量,为此我们首先要明确业务的几个方面:
随时间变化的频率是在一定的时间范围内,业务为适应市场而实际做出的自我调整的次数,一个造纸工厂的变化度可能是5年5%的变化,而一个高科技企业在相同时间内的变化可能是80%,因此,敏捷更有价值,但其价值的大小因业务的不同而不同。
适应变更的能力,它对应与企业应对市场变化做出改变的能力,使用基于流程配置的解决方案的核心是,你可以通过配置改变核心业务流程,但通常无需改变底层服务及数据。
变更的相对价值指的是业务变更带来的直接结果,即商业收益的大小,例如,一个零售公司为应对市场消费者预期的改变,建立了一个高频消费者程序,并且直接带来了营业额的攀升,这就是商业收益的大大体现。