乱谈SOA——IT世界观及方法论

乱谈 SOA —— IT 世界观及方法论
最近刚刚为博文视点完成了“ SOA in Practice ”(《 SOA 实践》)一书的翻译工作。2 个多月的时间以来,基本上每天的业余时间加上周末,全都在翻译这本书。以前对 SOA所知不深 ,经过 2 个多月的浸泡,感觉自己对 SOA 的理解深了一些。而且,越是到后来,越是有一种感觉: SOA 更多的是一种世界观和方法论,某种程度上来说, SOA ERP 之类的东西有点相似——首先要建立某种 IT 世界观(如何看待 IT 系统?什么东西是最重要的?)、方法论(处理问题的基本原则),然后再讨论技术细节。没有理论指导的技术细节,往往会使人抓芝麻,丢西瓜;当然,没有技术细节的理论,也会使人神游太虚,不知所云。
我们如何看待自己生存于其间的世界?这个问题关系重大。还能想起上中学的时候有一门好像叫“思想品德”的课,讲人生观、世界观、价值观,内容枯燥,搞得自己对这些东西颇为腻烦。然而,若干年过去后,回过头一看,正是这些基本的观点和认识在左右自己的行为和意识。
世界观回答的问题是:你用什么观点来看待世界?
IT 这个行当里,所谓的世界观体现在类似于这样的问题上:
+ 你认为系统是 静止的?均衡的?趋向完美的?还是动态的?非线性的?未来有无数多的可能性的?
+ 你认为系统应该是“同质”的还是“异质”的?
+ 你认为系统的“扩展性”、“伸缩性”、“重用性”哪个最重要?
如此等等。
这都是些基本信念问题。
对第一个问题,假设我们抱前一种观点,我们就会希望系统景观按我们“良好”的意愿来发展——可控,完美。如果情况不是这样,我们就会感觉到沮丧、挫折。如果我们抱后一种观点,我们就会从内心深处意识到所有的变化、偶然、意外都是自然规律所致使,是我们必须接受的一部分,它们非但不是我们的敌人,相反,它们是给我们机会、给我们未来创造无限多可能性的朋友。我们就会热爱变化,拥抱变化。
IT 世界观对我们设计 IT 系统影响深刻。在过去,我们有很强的“同质”倾向。大型主机、 ERP 系统等,都是我们期望同质的表现。而且,很多技术都试图把我们往同质的方向上引导。个人以为 .NET 之所以力图覆盖从浏览器、桌面,到服务器的领域,就是这种努力的体现。厂商推销给我们的东西时往往有一个不摆在明面上但昭然若揭的目的:把你绑在他的平台上。 SOA 首先认为异质是不可避免的,接受这个现实而不是试图和异质抗争。
另外,你是更看重“重用”还是更看重“伸缩”,也有很大的影响。面向对象的编程显然更加注重“重用”性——代码级别的重用;面向组件的编程带给了我们二进制级别的重用。用对象这样的概念建立起来的分布式系统,比如 OMG CORBA ,其伸缩性当然先天性地就有问题。而 INTERNET ,其建立的首先考虑就是伸缩性,所以,互联网才可以发展到现在这样一个规模。 SOA 非常看重伸缩性。从我的理解来看,事实上这也是为什么要提出 SOA 概念的重要原因之一。一种僵化的结构无法满足伸缩的需求;而无结构的灵活会导致不可控的伸缩,最终会造成整个系统的崩溃。 SOA 就是力图要建立既足够灵活,又有一定之规的系统架构。
再来说说方法论。 SOA 方法论是复杂性理论可以发挥作用的地方。
有关复杂性理论,大约在 3 年前看过一本名为《复杂》的书,当时就深深地为复杂性理论所打动。 所谓复杂,简单说来,就是“1+1不等于2”。为什么?因为这两个1之间不是简单的线性叠加的关系,而是互相影响,互相制约,互动。所以,1+1不但可以大于2,还可以演化出许许多多我们开始时都意想不到的东西来。要想形成这种系统,关键的是,该系统要处于“混沌的边缘”,也就是说,该系统非但不能在均衡的周围,相反,必须远离均衡。在远离均衡,但是又并非混乱的区域,自由地进行元素的相互反馈,最终就会产生出秩序、组织和新的元素等等。如果仅仅在均衡区域附近,那么,毫无疑问的是,系统会死水一潭,如果在动荡非常厉害的区域,则又会产生过多的混乱,无法形成组织,正是在这个又有足够的灵活性产生相互的交互和新的元素,同时又不至于过于混乱的区域,组织就会浮现出来。从某种意义上我们可以感觉到,人类的出现,社会组织形态的出现等等,都遵循着这个法则。而且,正是因为所有的组织出现,新的更强大的组织的出现,都有赖于系统的互动、反馈以及变迁,所以,我们从根本上要热爱变化,正是变化产生了我们这个世界,以及生命本身。
要想复杂系统顺利地演化,需要遵循一些基本的原则:
1, 在变化中演进;
2, 鼓励自下而上提出规则、建立规则
3, 睁大眼睛,注意观察
回到谈 SOA 上来。 SOA 要处理的系统场景中,各个系统交互影响。如果已经有 N 个系统,增加一个系统到场景中,产生的影响绝对不是 N+1 。这就典型地体现了复杂系统的情况。而 SOA 方法论中最重要的一些组成部分就是这些原则的具体体现。
首先,《 SOA 实践 》作者在书中反复强调,建立 SOA 是一个演进的过程,“你买不来 SOA ”。为什么?买来的一揽子软件包限制太多,而且基本上软件商的目的是绑定你,所以,一旦上了某个软件商的战船,恐怕就很难再进行自由的演进。越是号称一揽子的东西越是如此。而复杂系统需要不断变化,需要快速采取不同方案,不断调整,不断地进行高自由度的演进。买来的 SOA 很难给你提供这样的对变化的适应性。
所谓自下而上地建立规则,指的是这样一种情况。在研究复杂科学的过程中,人们发现了一条有趣的规律:有些看似复杂的群体行为,其实只要一些简单的,自下而上的规则就可以得到实现。这里最关键的是“自下而上”这几个字。对于这一点,最有说服力的解释是电脑模拟群鸟飞行的程序。我们通常会看到鸟群和鱼群的行为非常复杂,但似乎总能得到精确的控制。在电脑模拟中,通过几条简单的规则,让每支鸟都根据旁边鸟的行为来做出反应,结果鸟群的行为得到了很好的模拟。试想一下,如果我们不是建立“从下而上”,而是建立“从上而下”的规则,先规定群体行为,再分解到每支鸟的行为,那么整个规则体系会非常复杂,而且无法模拟出所有情况。更严重的是,一旦出现任何意外情况,系统就无法处理了。让这些自下而上的规则发生作用,而且进行演化,就可以浮现出群体的组织,突现出结构来。
当然,这绝非说建立 SOA 的规则会非常简单,而是这种自下而上的方法论非常重要。事实上,在《 SOA 实践》这本书中就提到了建立 SOA 的两个基本方向——自下而上和自上而下,并且建议说最好采取自下而上的方式,从一个 SOA 先驱项目开始整个 SOA 的建立过程。
至于说“睁大眼睛,注意观察”,则体现在 SOA 的监管上。为什么对复杂系统要注意观察?因为复杂系统的建立和演化是个不断变化的过程,需要不断地根据环境的反馈作出调整。 SOA 正是如此。 SOA 的建立是个动态变化的过程,所以要随时留心 SOA 景观的变化和发展情况,不断作出调整。
嗯,此处的泛泛之谈也有神游太虚之嫌。不过要提供技术细节,不是几千字可以办到的事情, Nicolai M. Josuttis SOA 实践》中 花了小 20 万字说这些细节(该人曾写《 C++ 标准库》和《 C++ 模板》,技术功底雄厚)。喜欢技术细节的 ,等《 SOA 实践》出来后去看吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值