从SOA到云计算 我个人理解


前言

---------------- 

我从个人资料收集为前提,去理解SOA和云计算。如有片面的地方,希望得到大家的扶正。

大大的SOA(面向服务架构)官方辞令 

----------------

SOA是IBM提出来的,是个很有霸气的计划,有点像国家领导人对各个小市民说:我提出了一套宪法,以后大家必须遵守这个宪法。无论从理论上,还是技术上,SOA都是非常前卫正确的。

但是,however, nevertheless, 事实并没有朝着IBM的计划前进。我先不考虑有多少政府、机构靠SOA的概念去强迫升级系统赚钱,然后转入个人帐户实现贪污。实际上,SOA并不常见。现在请随便说说,在中国,有多少大型服务商提供了SOA?如果不用搜索引擎,我一个也想不到。

例如淘宝,中国C2C的头,他提供的API是TOP,这算是算开放的了。其他的呢?腾讯的在哪?开心网的呢?人人网的呢?携程的呢?即使有,我也没有见到他们大肆的宣传。也就证明了服务粒度的整合并没有实现。

先看看SOA的一篇文章:

http://www.ibm.com/developerworks/cn/webservices/ws-esb1/ 来自IBM关于企业总线的介绍。

里面提到几个关键的定义和叙述: 

  1. SOA在相对较粗的粒度上对应用服务或业务模块进行封装与重用;
  2. 假定你已经按照SOA的思想提炼出了各种业务服务,公布出来,同样,你发现其他很多人也做了同样的事情。大家都很振奋,开始踊跃的尝试,我调用你的一个服务,你调我的一个服务。啊哈!大家都SOA了。 

文章中,还有一段非常漂亮的列举,介绍了IBM提出SOA的思路来源:

让我们通过回顾软件开发的演化过程来看一看SOA出现的必然性:

  • 面向机器语言(Monolithic)的开发模式:需要根据不同平台的机器语言来开发代码。
  • 面向过程(Procedure)的开发模式:独立于机器的程序语言(C, Pascal等)使开发过程变得简单了,用过程来代表一个抽象的代码集合,包装重用现成的代码。
  • 面向对象(Object)的开发模式:用更接近现实的对象来表述一个相对完整的事物。面向对象的语言(Smalltalk,Java等),提供了更抽象的封装和重用模式。面向对象的开发强调从现实世界问题域到软件程序的直接映射,更接近人类的自然思维方式。
  • 面向组件(Component)的模式:随着软件开发规模的扩大,在涉及分布式、异构等复杂特征的环境中,代码级别的重用性差,可维护性差,效率低的弱点是不可逾越的,因此人们以架构运行环境(如.Net,J2ee等)来提供完善的支撑平台,从而把开发者解放出来,更专注于业务核心的开发。而这些业务功能(Business Function) 以组件的形式(DCOM, EJB等)发布运行在架构运行环境中。软件开发的重用模式也上升到业务组件的级别。
  • 面向服务(SOA)的模式:当软件的使用范围扩展到更广阔的范围,往往会面对更加复杂的IT环境和更加灵活多变的需求。服务(Service)的概念出现了,人们将应用(Application)以业务服务(Business Service)的形式公布出来供别人使用,而完全不需要去考虑这些业务服务运行在哪一个架构体系上,因为所有的服务都讲着同样的语言。SOA考虑了业务发展的长期性,体现了"变化就是永恒"的思想。SOA的核心体现在企业应用或者业务功能上的"重用"和"互操作",而不再把IT与业务对立起来,这可以被视为在IT驱动业务的方向上迈出的重要一步。

这个是IBM所希望出现的未来,所以提出了SOA,然后提出了ESB(企业总线),希望能够进一步去松耦合各种服务。 这个是计算机不断进步的缩影,也是我们寻求不断偷懒的过程。 虽然,网上搜SOA,只看到褒奖,很少看到质疑,但是IBM的SOA实际上已经没落了。

从SOA到云

----------------

我先提炼一下SOA的模型,他假设的是,世界上存在了接近无数的服务商,他们各自实力、地位、技术平等,就像淘宝、腾讯等。通过SOA,淘宝能够获得腾讯的服务,等等等等,从而大家降低了运营成本,最终实现共产主义,世界大同。

但是,事实上,这些有头有脸的服务商是少数的,而且是不愿意共享的。

剩下愿意共享的,都是希望别人多干点,我少干点, 但是我赚的钱要比别人多的

这种现实,就决定了SOA(面向服务),是不可能再广大人民群众中普及的。为了挽回面子,IBM也许会把定位下降到了企业内部,说这个技术是适合企业内部运作的,例如中国移动、中石化、金盾之类的国家工程。

那么,SOA和以往经典的解决方案相比,有什么优势?没有!以往的系统,可能开虚拟专用网络实现内部互联;使用政府专线;开socket+私有协议实现数据互访。

从逻辑上,如果另外有新的服务要融合,代价是很高的。但是,有这种情况吗?没有! 

这些政府、大企业如果开发新功能,怎么做?在原有系统上,符合原有协议继续开发。就这么简单。当大家退回到同一起跑线,去遵守原来系统的协议和去遵守SOA协议,双方代价是一样的时候,为什么用SOA?除了能捞一笔钱外,看不到任何好处。

所以,既然这个世界的80%财富掌握在了20%的人手上,那么必然由这20%的人为80%的人服务。于是这个就是云计算。

云计算本质,就是由几个超级大户,提供了理论上接近无限的资源,让众多的小市民去使用。

也许云计算的官方辞令上,描绘着美好的未来,描绘着一个人人平等,相互合作的未来,大家把自己的服务接入到云,能实现互用等等的第二代SOA理想, 但是这个同样是不可能出现的。

云计算的本质,就是主从关系而不是平等关系。未来大部分服务依然由少数大型服务商提供,即使偶尔有几个天才提供了些不错的服务,也很快被大型服务商吃掉合并。

后记

----------------

在国外大玩概念的时候,技术学却没有发生很大变化。变的,只是我们看事物的切入点。web service最终也许只能沦落为另外一种传输协议,变成和ftp/smtp之类同档次的协议。人人平等、相互配合上是不可能实现的。 

原文地址:https://www.cnblogs.com/zc22/p/1698906.html