作者:孟岩 来源:CSDN博客   酷勤网收集 2007-11-30

摘要
  SOA监管的意图,就是要让各种服务以清晰有条理的方式组合协作起来,并清晰地度量每一个服务的开销,评估每一个服务的开发和 维护所需的技术,确定当服务失效时采取的必要措施。总之,就是要把服务管起来,让它们有组织有纪律的共同工作。

      SOA监管(SOA Governance)是SOA实施中的一个重要话题,但是很多人都搞不清楚其含义。我采访过很多人,也阅读过一些资料,才基本弄明白。总的感觉是,如果 直白地去讲SOA监管的问题,必然引进大量的新术语,一般开发者实在不容易听懂。如果能够举一个例子,那么大家就容易理解得多。恰好昨天在书上看到一个真 实的故事,很形象地说明了SOA监管的意义。所以不妨跟大家分享一下。这个故事是关于Sun的,当然这类事情实际上曾经发生在很多大型公司里。

      在90年代后期,Sun推出了一系列产品,包括Java、Solaris等,他们希望能够尽可能地鼓励用户去使用这些产品,但是当时网速太慢,通过 Internet下载几百兆的软件根本不现实,于是Sun在网站上推出一个电子商务服务,下面我们不妨称之为服务A,你只要通过信用卡付10-20美刀快 递费用,就可以免费获赠Sun的超值产品光盘。被叫去编写这个电子商务服务的程序员当时隶属与内部IT部门,他写了一个在线服务,用来完成信用卡付账交 易。当然,这是一个“子服务”,我们不妨称其为服务Z,这个在线服务Z运行在内网上,采用了今天看来都不落后的体系结构——直接通过HTTP传输加密的 XML消息。很快,服务A对用户见面了,并且工作得很好。

      不久之后,这个程序员被调到了Java开发组。当时Sun的Java网站提供一个类似MSDN的Java产品光盘订阅服务,下面不妨称之为服务B,这个服 务每季度向订阅者寄送最新的Java产品光盘。当然,订阅者也要通过信用卡付订阅费。碰巧这项工作又交给了这位程序员来完成。他当然不愿意重写那个很麻烦 的信用卡结帐服务Z,既然原来的那个服务是通过HTTP暴露在内网里的,何不复用之?他就简单地复用了这个信用卡结帐服务Z,完成了任务。这样,在90年 代后半期,这位程序员就率先实现了企业服务的复用。而十年后,服务的复用正是今天SOA追求的目标之一。

      这样就形成了一个有趣的局面,即服务A中包含一个子服务Z,而服务B又依赖于服务Z,Z实际上成为了一个公共服务,但是这个秘密只有那个程序员和少数几个人知道,Sun的经理们对此懵然不知。

      几年之后,这位程序员离开了Sun,随着他的离去,这个秘密变得更加不为人知。

      随着互联网的发展,人们已经习惯于从网上直接下载软件,服务A已经变得越来越过时了。于是终于有一天,Sun的一个经理决定,关闭服务A。结果意想不到的事情发生了,随着A的关闭,服务Z也被关闭了,这就导致服务B全面崩溃,所有的订阅者都无法付款了。

      这就是一个缺乏监管的情况下产生的典型事故。在传统的企业IT架构里,当系统仅仅是部门级烟囱系统时,软件模块之间的关系简单,监管不是一个很突出的问 题。而当各部门系统进行整合时,如果采用EAI/ETL方案,则也不大有监管的问题。只有在实施SOA的时候,把传统的烟囱系统打散成为一个个可复用的服 务时,监管的问题就突出了。SOA监管的意图,就是要让各种服务以清晰有条理的方式组合协作起来,并清晰地度量每一个服务的开销,评估每一个服务的开发和 维护所需的技术,确定当服务失效时采取的必要措施。总之,就是要把服务管起来,让它们有组织有纪律的共同工作。如果没有一个监管的制度和计划,那么就会出 现这样的局面:服务与服务之间有什么关系?不知道。服务之间彼此是否依赖?不知道。这两个服务的功能是否重复?不知道。这个服务是否冗余?不知道。开发维 护这个服务需要什么技能?不知道。当用户量增加时,维持这一服务的QoS所需的硬件消耗怎么变化?不知道。当服务崩溃时,谁来接替?往谁那里打电话?是否 有手工流程紧急应对?不知道!一大堆无法无天的服务以谁也想不到的方式攒在一起,任何一个点风吹草动都有可能会天下大乱。这就是缺乏监管的SOA将发生的 局面。这样的SOA,与其说是一个系统,不如说是一团乱麻,一场灾难。

      因此,SOA监管对SOA来说,不是可选的,而是必须的,甚至是决定SOA实施成败的关键。

来自:http://blog.csdn.net/myan/archive/2007/08/09/1734343.aspx

评论

#   lyanry 发表于2007-08-10 10:31:44  IP: 202.110.209.*
埃,读过之后,还是没法明白 SOA 是个什么东西。

现在有众多基于 apache 的服务,比如 svn、mediawiki 等,那么 apache 也算是一个公共服务了吧,这个也叫做 SOA 么?

实在无法感知 SOA 的先进性在哪里。特别是对于那些不是搞 WEB 的人。

#   应该好理解 发表于2007-08-10 11:08:22  IP: 220.187.38.*
应该好理解,SOA,你理解PC的硬件总线结构吗?声卡,CPU等都是可插拔的小的有机体,只使这类软件产品个人用户很少会接触的到!

#   myan 发表于2007-08-10 11:08:42  IP: 221.218.160.*
to lyanry:
看来SOA的概念普及还是很不够。不过也请不必着急,以后这方面的信息肯定会越来越多、越来越丰富,你迟早会明白的。

Apache这个例子不算SOA意义里的服务。

其实纯搞Web的人可能更不容易明白SOA的真谛,搞企业IT的人应该最容易理解SOA。


#   wishfly 发表于2007-08-10 11:19:21  IP: 221.218.28.*
>>myan
能否说说SOA与组件编程的本质区别?
感觉是一回事啊!

#   zcpro 发表于2007-08-10 12:44:43  IP: 125.120.229.*
to sishfly:
我的理解是其实soa里的服务就是粗粒度的组件,是应用级别的组件,而传统的组件粒度更小。soa里基本的服务可以是由传统的组件实现的。

#   wishfly 发表于2007-08-10 13:03:55  IP: 221.218.28.*
>>zcpro
什么是应用级别的组件?组件聚合/包容别的粒度小的接口,然后以粗粒度的接口暴露给用户,这个接口因该可以达到所谓"应用级别"吧.

另外,既然要将SOA成为革命,这种"接口粒度的大小"上的分别,好像说服力不够!

其实我的理解,SOA就是将组件Internet化了.使得"接口或或者说服务"可以透过防火墙,实现远程快平台的组件调用.

不知这样理解对不对?

#   宇文拓 发表于2007-08-10 13:31:07  IP: 220.231.23.*
要是有像主外键一样对服务进行约束就好了

#   winking 发表于2007-08-10 20:19:54  IP: 58.33.101.*
写得不错,但是实际上SOA Governance远远不止dependancy, 更重要的包括policy, contract management等等。

#   pass86 发表于2007-08-10 21:13:59  IP: 60.212.244.*
不知是否可以用Windows的服务类比呢?

#   shoutor 发表于2007-08-11 19:05:00  IP: 221.222.27.*
不错,面向服务的系统整合,监管的确是非常重要

#   天下有敌 发表于2007-08-13 09:33:53  IP: 220.248.123.*
SOA一般应该实在系统整合的时候发挥作用吧,
如果是新开发的系统SOA有什么知道意义吗?

#   hackee 发表于2007-08-13 13:45:54  IP: 218.22.16.*
觉得SOA就是个对外的接口,跟一些企业的那啥客户服务热线类似,一旦实施便不能轻易地撤销的. 大粒度的东西

#   blackbrod 发表于2007-08-13 16:56:44  IP: 207.46.55.*
明白了一点点,如果在具体举个服务中的例子,就完美了,谢了,大哥,

#   烟雨.江南 发表于2007-08-13 20:34:42  IP: 221.222.190.*
哥们,不错的例子,我是一家SOA厂商的工程师,感觉有时候的确不好向客户解释SOA监管的意义,呵呵!

#   firingme 发表于2007-08-13 22:25:23  IP: 219.236.32.*
搞了老半天,服务 A 和 服务 B 都依赖于 服务 Z 这样的事实竟然只有写代码的程序员一个人知道?而且更可怕的是服务 Z 还是牵涉到信用卡付款这么关键的环节。如果那个写程序的程序员在服务 Z 里面埋了后门,那可能所有在 Sun 消费的消费者的信用卡号都已经被盗了。
而这样的一个问题的根源并不在于原来采用的技术有多么的落后,更本质的原因是大公司一贯的“官僚习气“以及“反正总有人会知道”的思想导致了这样的恶果。
SOA 解决不了这样的问题,我相信也没有一个技术能够解决这样的问题。

#   helloworld 发表于2007-08-14 00:51:51  IP: 222.85.76.*
CSDN Blog:Webå¼€å ‘(è„šæœ¬å’ŒåŠ¨æ€ è¯è¨€)

http://blog.csdn.net/rsspages/46.xml

通过google reader 订阅web方面blog文章的时候

全是乱码 怎么办呢?

#   1000copy 发表于2007-08-16 17:16:41  IP: 220.167.25.*
例子举的形象生动.

#   danoyang 发表于2007-08-17 09:57:51  IP: 222.212.209.*
SOA监管是一个单独的职务,还是CIO的工作职责之一

听了这个例子之后,我觉得是后者,CIO应该组织好每个业务的验收测试,类似这样的服务终止活动,验收测试应该先于最终用户暴露问题吧

#   gcq5506@163.com 发表于2007-08-22 14:10:25  IP: 122.6.67.*
求助:孟先生,您好。财帮子是您开发的是吗?谢谢!确实好用。可是为什么我的电脑无法登陆了,输入用户名和密码后,显示为“非法请求”。在别的电脑上却很正常,急!

分类: 软件工程 项目管理 系统架构 软件测试

上一篇:从SaaS到S+S:以退为进   下一篇:麦中凡教授对中国软件和软件工程的精彩观点