1996年,Gartner提出了SOA概念。

Gartner还曾提出两个很著名的概念:

ERP,企业资源计划。以企业资源的角度来组织企业的人、财、物、信息。此概念产生于大生产时代MRP之后,号召把企业的上下游也纳入到企业通盘战略考虑当中。因为社会已经变成了产业链,从原材料到生产到物流到销售到售后服务,每个环节都影响生产企业。生产已经变的不是第一重要了,供不应求时代已经结束。进入营销渠道的时代。

CRM,客户关系管理。以客户服务的角度出发来重新组织企业的人、业务、流程、信息。此概念在ERP的基础上,把眼光从供应链上游和生产企业转移到了客户终端。生产时代结束,营销推销时代也快结束,不考虑客户感受,不和客户交互交流,一味生产和推销,是不可能获胜的。

(从什么角度来组织资源和流程,颇像技术界的面向过程、面向对象、面向组件、如今面向服务了)

在这样的大背景下,Web2.0也是顺应这个概念产生的,口碑营销、精确分众、圈子、即时通信、短信、博客,各种交互工具顺应时代而产生。

ERP和CRM都是应用层面的产物。

这样的应用,在信息化方面如何落地。

于是,SOA概念随即而出。

1996年的美国,互联网已经很发达了。但是互联网技术并没有跟上。企业仍然封闭在自己的信息化世界。虽然有CORBA、COM+、RMI/EJB这些技术模型在支撑,但向互联网公众提供信息服务,而非上下游合作伙伴提供信息服务,CORBA、COM+、RIM/EJB仍然在穿透防火墙和通用数据格式传输上仍然存在问题,三个体系都有自己的通讯协议和数据传输协议,普通消费者无法参与其中。

2000年,XML产生。随机基于HTTP的SOAP、WSDL、UDDI产生,Webservice作为一个基于互联网通用技术基础上发展的数据通讯协议和数据传输访问协议体系产生了。

但是Webservice只是定义了基于通用互联网技术的数据通讯和数据传输访问。就相当于底层通路通了。但是基于上面的应用呢,还是没有一个规范。就相当于,路通了,但是在这条路上什么样规格的车跑起来最顺畅,还没有这个规范。(当然你可以不要规范,自己造个自己的车,以后在和拥有统一规格的车一起管理和运行时交互时就有了问题。这个描述也为了回答相当一部份人提出的那个问题:我们既然有了Webservice,那干吗还要SCA/SDO呢?)

SOA就是干这件事的。

但是,SOA,业界大佬太急。就如同在.COM大潮中,每个企业都急于申明我们是一家.com公司。于是,这个市场混淆了各种视听。

做工作流的、做OA的、做业务基础平台的、做组件的、做中间件的、做EAI的,都号称自己已经是SOA了。有的说SOA是为了业务敏捷(可以灵活调整系统以适应快速发生变化的业务竞争。现摘录一段话:SOA通过把传统应用模块分解成更小的构件,并把这些构件当作可以重用的Web服务,CIO们就能通过选择和安排所需构件,来生成最贴合的系统。这和当年我们做WINDOWS DNA架构是多么相似。但当年SOA已经提出,但并没有人说WINDOWS DNA架构是SOA架构。没流行这个名词的原因??),有的说SOA是为了系统整合,有的说SOA是企业总线,有的说SOA是种业务分析设计思想,有的说SOA是技术架构模型,有的说SOA类似UML的作用,可以使业务设计人员和技术设计人员有共同语言,有人更说SOA就和web2.0一样,就是个概念。颇像当年微软急于把自己所有产品都打上.NET标志一样,最后弄的大家都搞不清楚什么是.NET了。直到2007年发布WPF、WCF、WF之后,.NET的技术走向才算基础架构定型。SOA和当时的.NET非常相似。

如今,SOA规范才真正落地为SCA和SDO。工作流规范业界已经成型,WF也符合业界工作流规范,所以SOA中并没有定义工作流规范。而对应WPF的SOA显然也不需要,毕竟SOA考虑的是业务接口服务层面,而非这个服务以什么样的图形界面规范来让客户存取,没有必要(中国普元补上了这一环节。中国普元也是OSOA顶级成员之一。光有接口没有UI,还是需要程序员动手写这个UI,业务人员不可能没有UI去做灵活改变业务功能和流程,即使有BPEL和DSL也不行。别给业务人员任何技术的东西,别想着DSL和UML就能让业务人员用起来)。所以,SCA和SDO已经够用了,SOA架构真正成型。

但SCA和SDO是2007年8月才定型的(虽然2005年已经草案了)。所以之前急于号称是SOA产品的厂商不知作何感想。

我阅读了SCA和SDO标准,我也对比了过去我研究的CORBA,我也对比了微软的WCF,架构思想居然非常类似。

当年DEC和IBM主导定义的CORBA,太复杂,SUN和微软都做了定制化裁减,发展了自己的RMI/EJB和COM+。由于Webservice的出现,微软立即发展了基于Webservice的架构体系:WCF。但是JAVA世界由于标准制定牵扯了大量厂商的利益,发展缓慢。而IBM也不愿意尴尬的在SUN的JAVA世界做个影子巨人。IBM一直盘算着如何做领袖。

于是SOA真正架构,吸收了CORBA的教训(IBM由于当年的CORBA没有带起业界标准很是懊恼,这次要卷土重来,更加学聪明了,谁说大象不能跳舞),也结合了Webservice,也借鉴了WCF(WCF也是在Webservice基础上发展起来的架构,很多技术借用了Webservice的技术,而非另起一套底层),终于产生。

而OSOA组织,最近才出现SUN的踪影,而SCA和SDO标准中并没有SUN提交的草案。

JAVA和.NET两大平台,封闭而专有。而IBM需要的是一种业界标准制定者。SOA这回达成了IBM的意愿。无论是JAVA,还是.NET,甚至是PHP,只要符合SCA和SDO,就可以提供业界标准服务接口。

挣脱了语言和专属平台优缺点的樊笼,IBM蓝色巨人又成为自由的业界之神。


我为什么这么关注和信任和理解SOA。其实和我自身所处的软件行业非常有关系。

我是做企业管理软件的。很早业界就都有共识:软件不能这样卖了。我们把一套办公系统卖给了运营商,人家用我们的软件做服务,收费比我们卖软件还多。

所以,就连卖软件老大微软也在喊着软件服务化。

过去是在企业内部运行的软件,一个企业不外乎也就那么多人那么多数据。但是,一旦把软件服务化、互联网化了,就不抵有多少人访问了。

所以,我们如何应对软件服务化、互联网化。

上亿人访问的Webservice,其架构就不能象搭建企业内部运行的软件架构,你看Google,都有几十万台PC集群的计算资源才能支撑互联网服务。我们过去的传统的企业内部机房磁盘阵列和计算机集群架构不适合在公网上了,我们的数据库也不适合服务几亿人了。

所以,我特别关注我们如何软件服务化,软件服务化的架构是什么样的?

其实,业界都在往一个方向跑,不管是Google、还是Yahoo、还是微软、还是咱们的百度、QQ、盛大、阿里,大家都在往软件服务化、互联网的方向跑。(如果你仅仅是把眼光放到SAAS,放到和过去的ASP[应用服务托管]去对比,眼界显然需要更高一些)

应用软件运行需要基础设施。首先,基础硬件设施,几十万台PC的集群如何虚拟文件系统和计算资源分配,这就是云计算要解决的问题。现在云计算是个热门,Yahoo、Google、IBM、微软都在研究和建设。但微软慢了一步(微软在互联网计算上一直不敏感,用传统软件的方式看互联网),所以WFS没有出来(可能没想通作为集群中的一个节点资源,如何加入集群,和集群同构,还能符合个人桌面计算管理)。

有了云计算硬件基础,还需要数据存取软件基础。有了分布式文件系统,文件存取应该没什么问题,但关系数据的存取,这是现在所有数据库产品都没有解决的。Amazon看到了机会,推出了S3服务。全球互联网就是个超级计算机,而S3就是这个计算机上的数据库。

而所有的SOA应用,都必须在一个容器中运行,否则,有外界调用这些服务,这些服务运行中使用的资源谁来管理呢(很多人不明白容器是干什么用的,不明白中间件的来历,也不明白为什么JAVA和.NET都要做容器。如果你做应用,你自己还要负责那么多底层的分配与释放与并发,那么你做的既不专业,也累,也不稳定,不如交给系统商去管理)。容器负责内存、资源的分配、调度、回收,负责安全,负责事务,负责并发,负责池化。而这些SOA服务,也必须能随时升级,就必须具备软件热插拔的功能。现在热的OSGi研究就属此类。

有了这些基础设施,我们的应用就必须SOA化,成为软件服务,让所有人来使用。使用者一方可能是一个C#写的客户端,可能是一个PHP网站,可能是一个JAVA网站,也可能是一个FLASH。

全球大大小小的公司提供了这么多Open API,如何调用。用各自的语言?JAVA?C#?PHP?Javascript?

我想会产生一种新的语言来组织这些Open API,而不是这么技术化的程序员使用的开发编码语言。

它,会是DSL。Domain Specific language。它可能会高于Javascript,但和Javascript类似,但又低于JAVA,C#这些重型开发语言。但它肯定是动态语言。这样随时改变流程,随时改变应用。这就是业务敏捷。

这就是我预想中的未来SOA时代计算环境。

你,还在用传统的业务基础平台思路搭建企业管理软件架构吗?

未来SOA时代,未来软件服务化时代,你,准备好了吗?

后记:
20%的企业在上第一代系统,不需要SOA。但软件产品提供商需要考虑SOA,以防未来的集成。但现在对于企业没有需求,不会因为SOA加分买单。
30%的企业在全部替掉第一代系统,不需要SOA。但软件产品提供商需要考虑SOA,以防未来的集成。但现在对于企业没有需求,不会因为SOA加分买单。
30%的企业在整合自己内部的第二代系统,可能需要SOA,但实质上采用的少。但软件产品提供商需要考虑SOA,以防未来的集成。客户可能会因为SOA加分买单。
10%的企业在整合自己的上下游,需要SOA。
10%的企业开始为最终客户提供信息交互服务,如同我们看到的Google API一样,需要SOA。

现在关注和编写SOA时机正确吗?正确,因为你看上面的比例,有50%的企业有SOA需求。
但如果你面临的客户市场恰恰不是这50%,而是另外的50%,那么奉劝你继续做好现在的产品,SOA还不需要。

posted on 2008-11-03 21:58  david_lv  阅读(1837)  评论(5编辑  收藏  举报