笔者从第一次听说SOA到现在有几年的时间了,其间和各种各样的人士进行了多次讨论,但是越讨论,越发觉这不是个可以用定义来说得明白的概念。
之前,在软件行业里还没有某个词语会引起如此多的非议与争论,笔者有时觉得SOA很像禅宗里讲的:“说是一物即不中”。对于我们来说最难做的,就是把这样一个抽象的概念说给没有技术背景的人去听。笔者认为建立概念唯一的办法就是利用比喻。
在我听说过的几十个关于SOA的比喻之中,有几个比喻得到很多人的认同。建议那些想把这个概念说给业务人员和管理者的技术人员不用再冒险了,用以下这三个比喻试一下。
玩乐高玩具,体会SOA概念
SOA的理念与乐高玩具的设计思路很相似,这是最早的一个关于SOA的成功比喻。
传统的应用好比是普通的玩具,不可拆卸和拼接。而乐高玩具与众不同,可以按照用户自己的想法随意组装,就是因为它是由标准的微小的组件构成。
基于SOA的应用都是由更小的服务组件组成的,如同乐高玩具的模块;用乐高玩具可以搭建各种不同的形状,就好比SOA架构可以实现不同的应用;乐高玩具的模块式是基于标准化的,因此可以反复利用,SOA架构也是这样。
这个比喻的好处,是能很快帮助非技术人员在头脑中建立形象的概念,在一个研讨会里面,组织者发了一些乐高玩具的模块让客户们自己做出一些东西来。由此很快让听众明白,他们就是在做和软件开发类似的事情。
也许有人会说,SOA那么复杂,用小孩玩具来比喻是否太浅显了,这时,进入深层次探讨的机会来了。
看上去,乐高玩具这么简单,似乎没什么深奥的,但其实这背后隐含了一种设计哲学。设计乐高玩具的团队都是一群拥有博士的设计专家,他们必须解决的一个矛盾是,如何把标准,松耦合、模块的功能以及力学等要素在设计和规划的时候统统解决,留给使用者的,只是纯粹玩的乐趣。一个有趣的事实是,乐高玩具这样一个看上去如此简单的东西一直没有模仿者。
通过这个比喻,大家可以在10分钟内就明白SOA是怎样一回事,就像所有人看到乐高玩具时就马上能找到玩法一样。然而,当一个人从设计者的角度来理解乐高和SOA类似的设计哲学时就会发现,两者的服务对象其实正是不需要关心技术的人,而且,他们都是为技术买单的人。
工程师的位置,到底是个玩家,还是设计者?作为玩家,工程师懂得似乎多了一点,作为设计者,他还有太多东西要学,就像要成为乐高玩具的设计者一样。
看看电视与电脑的区别,理解SOA的特点
修电视比修电脑难多了,虽然电脑比电视要复杂多了。SOA就像电脑,结构复杂,但容易管理、容易维护、容易升级。
电脑有一个基于标准的结构——总线结构,还遵循即插即用的契约标准,这些IT界的流行语塑造了PC行业。SOA也拥有几个标准的参考结构,总线,松耦合这些理念和PC行业的基本理念完全相同。
看一看身边那台可以随时拆开修理、更换显卡、升级内存的台式机,任何一个同行都能马上体会到具有相同理念和优势的SOA的好处了。
看丽江古城的演变,明白SOA实施的模式
技术总是跳跃的,应用系统永远是中庸的。应用在这个例子里面被比喻为普通的建筑物,而作为企业架构的SOA实施则被比喻成为一座城市。
城市的演进必然是循序渐进的,这比喻了SOA的实施是一个旅程。
正面的例子的是丽江古城,这座规划于八百年前的城市,现在仍然生机勃勃,因此被称为“活的古城”。用一条河流分成不同水道流经整个古城,每家门前都有流水声,可以用水洗衣,做饭,所有的街道按照经络学说布置,所有的街区都能享受到同一基础设施上的服务;最有代表性的的是,作为市场的四方街,采用了自动水冲洗设施。由于古城地势东高西低,四方街是中间高,边缘低,因此每天人们用挡板截流水,当水位较高时就可以自动冲洗街面了。这种设计,据说,阿姆斯特丹也有一个,只是不知道哪一个更早。
可以说,丽江古城的设计是面向服务的,水就是他们的公共服务。他们还通过一些规则来规范水的使用,比如在以前,清晨的水在同一时间,所有人可以用来做饭,下午的某个时间,所有人都可以洗衣服。这就是SOA里面讲的“服务契约”,“管控规则”,“基础设施优化”等理念都可以看到。
而反面的案例可以看看北京的交通。北京的交通结构有点像传统的架构,无论增加多少条高架和道路,总是难以解决拥堵的问题,这是因为几个环路的设计实际上等同于EAI的办法,总会造成总线拥塞。如果把北京城区的许多大院打散成为更小的社区,类似于将应用的颗粒度变小,就象旧金山那样,其实可以做到很多地方至少不会堵死.然而这个改造需要循序渐进的实施方式。
想想,为了奥运会,北京的地铁花了多少时间来与地下的管道打交道,我们就知道,企业应用架构的改造有多复杂,也就明白,如果一开始就采用SOA架构有多重要了!
网友评论