加载中…
个人资料
陈政2006
陈政2006 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:99,418
  • 关注人气:102
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

SOA让软件公司看到希望也看到灭亡

(2006-09-25 12:26:11)
标签:

soa

企业管理软件

企业管理

软件

咨询

分类: 探讨ICT与管理
SOA让软件公司看到希望也看到灭亡
 
刚刚看到金蝶和用友卖掉软件外包业务,说是要重新回归企业管理软件,原因就是SOA。
 
大家都隐隐感觉到SOA会给企业管理软件业和软件咨询服务业带来巨大的变动。
 
为什么呢?
1-咨询服务通过“流程自动化”,非常明确了自己在客户面前的价值:作为业务的咨询者,而非技术专家更具有价值;
2-软件越来越趋于同质化,客户要的其实不是软件,而是软件对业务流程的改善。最终来说,以贩售license为生的软件业整体会消亡,而转成服务业。而服务业根本不是软件公司的擅长,IBM等专业服务公司立在那里呢。
3-国内软件公司一宣传“概念”,我就想发笑。
 
下文摘自《ZD net》,值得一读。

#1:SOA并不是一个纯技术方法

面向对象架构(SOA)并不是一个纯技术方法,理解这一点对SOA是非常重要的,尤其要在实践中获得成功更要明白这一点。SOA模式的精髓在于对商业流程进行建模,而建模的过程并不一定有技术模块的支持。当然,最终,服务是被技术模块实现的,但是商业流程本身要比支持它们的这些服务重要得多。

作为一种技术,SOA是一个工具,虽然这种技术本身没有提供直接的价值,但是和EJB或者.NET组件比较起来,SOA是一种更为廉价在代码上构建服务的方式。SOA还能带来其它的利益,比如改进的和更广泛的重用性,更有效的商业流程重组以及对商业流程更好的协调。

#2:SOA并不意味着必须使用Web服务

很多技术人员对SOA存在这样一种误解,认为SOA意味着必需使用Web服务。事实上,尽管Web服务可以作为SOA策略的一部分,但是它并不是必需的,服务的定义可以通过其它的标准协议来实现,HTTP并不是唯一的选择。和具体的实现技术相比,关注商业流程和服务的需求是更加重要的,通常,服务的环境可以帮助确定技术上的实现。

例如,对于包含了关键商业事务的服务,使用Web服务是有害的,因为通过SOAP/HTTP协议来保证交易属性是很困难的。而且,很多服务需要进行异步操作,在这种情况下,基于队列和通道的消息系统是实现服务载体的更好的候选方式。当然,负载的数据和界面依然可以使用XML来定义。

#3:SOA可以使用现有架构进行构建

很多公司对于SOA可以使用现行架构这一点非常惊讶,比如.NET和J2EE平台都提供了对开发Web服务、解析和生成XML的支持,还提供了通过MSMQ和JMS与消息系统通信的支持。

在SOA中通常缺失的是流程管理层或流程自动化层,不过,很多公司已经在企业应用集成(enterprise application integration (EAI))工具上进行了投资,很多EAI工具提供了流程自动化和管理层的功能,它们可以在现有的软件或者.NET与J2EE平台之上对服务进行访问。

#4:SOA是一种(从组件、对象等)进化而来的方法

面向对象架构并不是一种全新的解决方案,SOA是技术与架构的进化。系统架构在不断进步,与商业的配合也越来越好,系统架构师与商业经营者在长期以来都深深地理解了技术与商业流程的协调的重要性,其中包括了对技术资源更好的使用与协调,以及对商业更好的支持。

SOA也在一定程度上源于企业架构理论。企业架构对技术进行评估,但是更重要的是它关注整个企业和全部的商业流程并提供了做出技术决策的信息背景。SOA工具则融合了互联网技术,比如HTTP和XML,以及综合技术,比如消息总线、转换技术和连接技术。

#5:流程自动化是SOA的关键优势

很多企业和技术专家的误解在于他们将焦点关注在服务架构上服务的实现和传递,但不幸的是,他们没有抓住重点,SOA的真正价值体现在它是一个商业自动化工具。最终,软件和系统将会创建商业或公司的效率,这可以被定义为企业实施的活动或者流程。对于SOA,不应该将焦点关注在服务上,而应该放在流程上,以及如何改进这些流程。

当然,服务在支持流程方面是必需的,但是对于提高效率和改进流程的目标而言,它们是第二位的,服务本身的价值是有限的。

#6:SOA架构可以是高度复杂的

从某一角度而言,SOA架构可以是相当简单的,例如,开发一个商业流程并发现其中所需的服务,这种思路的逻辑是非常直接的。但是,要在数据和服务之间进行平衡,并实现有意义的目标则要复杂得多了。

让我们来思考这样一个场景:用户使用订单服务在系统中下订单。这是很简单的操作,但是如果您希望将订单上的数据和来自其它服务的数据关联起来呢?如果所有的服务共享同一个数据源,您可以跳过服务层,并生成报告。但是如果有些数据来自其它服务自有的数据源,有些数据来自古老的主机系统,而另外一些数据来自商业软件(比如SAP),将这些数据集成在一起的工作将是非常非常复杂的。

#7:SOA需要对商业数据的深入理解

因为SOA关注于商业流程,因此理解这些与流程密切相关的数据是至关重要的。例如,一个订单流程会包含很多重要的数据信息,比如订单、客户、发货信息、发票、付款和收据;更重要的是能够以一种标准化的方式来描述这些数据信息,从而使流程中的每个服务都能按照相同的方式理解这些数据信息。

对于拥有信息架构的企业而言,这并不是一个大问题,但如果没有信息架构或者信息架构的支持有限的大企业中,这一问题会导致实施过程中的长时间中断。

因为大型企业通常拥有多种数据,所以通常建议他们采用进化的方式来定义信息架构,这是与“大爆炸”方式相反的方法。这意味着不必花费四年的时间来定义数据模型,而只需要在开发服务的过程中花费少量时间来定义与那些服务相关的数据。这样,在每个服务或者流程实现的时候,相关联的信息架构就可以同步展开并包含必需的数据信息。

#8:服务可以是简单体也可以是复合体

定义服务可能是一个艰巨的任务,在某些情况下,需要那些服务是清晰而简明的;很多时候,服务是相当简单的,例如一个查找客户的服务,可能需要使用一些标准来查找用户并为服务的使用者提供标准化的客户记录。

然而,服务是可以复合的,这意味着一个“超级服务”可以提供一个标准的接口,就像我们刚才查找客户的服务所提供的那样。但是这个在例子中,所有的客户信息都存储在同一个资料库中,这对于服务而言是很容易进行查找功能的。

但如果一些客户资料存放在大型主机中,一部分存放在SAP中,一部分存放在其他的应用软件中,而另外一部分存放在Oracle数据库中呢?让我们假定在每一种系统上已经构建了查找服务的接口,换句话说,我们拥有在大型主机、SAP、其他的应用软件和Oracle数据库上查找客户的服务。现在,我们新的查找客户的服务可以使用所有这些现有的服务来查找客户。

#9:SOA的自动化可能有很多层面

关于服务架构经常被忽视的一个特点就自动化可以发生在不同的层面,很多SOA架构的错误在于只看到某一个层面的自动化,然而,在一个SOA解决方案中,自动化至少可以应用到两个关键领域。

第一个也是最明显的是商业流程层,在设计流程的时候,其中的步骤已经进行了连接并用于创建自动化。因为这些流程通常是基于日常商业活动的,它们往往需要人机交互。在人机交互流程中实现自动化是一个重要的自动化层面。

另外一个重要的自动化层面是没有人参与的系统交互层,在多年以前,集成工具已经应用到这个领域了,通过对系统间任务的自动化,您通常可以获得流程整体效率的提升。

在这些层面上使用不同的工具也是很重要,对于人机交互、程序间的交互以及系统间的交互应当有不同的思考角度,从而采取不同的策略。

#10:服务应当遵循相同的界面标准(包括协议和数据)

使用标准化的方法进行通讯对于服务而言是非常重要的,在SOA的世界中,通讯是在两个组件之间进行的,第一个是服务进行通信的网络协议,就好比是人们每天使用的通讯媒介一样,例如,如果您想和老板通讯,最好搞清楚您的老板喜欢打电话还是收电子邮件。

第二个组件是通讯的数据或者语言,一旦您同意将HTTP或者JMS作为通讯机制,就等于确定了您说话的语言,例如,您的老板说法语而您说英语,那就会造成通讯困难,在服务的世界中,通常使用XML作为语言,但这并没有提供足够的信息。必需对服务需要的数据进行清晰定义并达成一致,这样无论是服务的提供者还是使用者都可能进行高效的通讯。

#11:服务是可以外包的

服务的另外一个优点就是它们不必作为整体组件购买,不必完全在内部进行管理,也不必从零做起。实际上,服务是可以外包的,这意味着在您需要一个服务来处理提交符合政府部门规范的文档时,您不必亲自编写,很多公司提供了这种服务而且几乎涵盖了所有的产业部门。通过平衡外包的服务,您可以将主要精力放在与最重要的流程相关联的SOA策略上。

外包方式的一个不足之处在于,如果您的竞争对手使用了同样的服务,您可能会丧失竞争优势。另外一个需要考虑的问题是性能,这依赖于很多因素,主要是网络连接性、可用性和延时。采用外部网络的服务可能会使您商业流程的性能降级。

#12 服务可以在现有的系统和软件基础上构建

很多企业误认为SOA方式没有考虑到传统系统,比如大型主机上的软件,而实际上,SOA的一个最强大的价值就在于它允许企业重用大型主机和其它传统资产,这一点是至关重要的,因为核心商业逻辑和核心商业数据通常保存在私有的传统系统上,通过服务来访问核心商业逻辑和数据,这些资产可以在自动化商业模型中被迅速重用。

当然,大型主机并不是唯一的传统数据来源,小型机,比如AS/400、VAX和HP3000等等,都可以通过所支持的服务来实现SOA,很多工具都可以帮助与这些私有系统进行通讯并将它们的信息作为标准化的服务来传递。

#13:性能是SOA系统的关键

尽管SOA为一个组织提供了很多利益,包括技术与商业的协调以及增强了的敏捷性,它需要在性能上进行认真考虑。在常见的SOA环境中,应用软件往往被分割在多个区间,而软件之间的数据通讯也往往很慢,这在决策支持和报告系统中是需要特别考虑的,因为以往这些系统只依赖很少量的数据源。

性能最大化的关键在于了解哪些部分的软件和系统性能对于商业是最重要的,构建一个高性能的系统来支持一个并不需要的商业流程是没有价值的。一旦关键流程确定了,您只需要在有必要的地方改进并提升性能。

#14:SOA系统构建基于四个组件

要想实现一个成功的SOA系统,有四个主要组件需要关注。第一个组件是定义商业流程,要确定需要哪些服务来支持它们以及那些数据是与它们相关的,这是关于SOA的商业分析。下一个组件是SOA的架构和模式,这是一系列规则描述了如何定义与实现服务,确定通用的传递与使用模式,并设定开发服务需要遵循的原则与标准。

第三个组件是SOA的基础结构,这包含了网络、服务器、存储、消息工具、整合工具以及流程自动化工具等等,它们都是用来支持服务与商业流程的开发与传递的。第四个组件是SOA的开发程序,这个程序确定了服务开发与流程实现的优先级,并且指导整个项目从而产生新的服务与流程。

#15:通向SOA的道路可能很艰难

尽管SOA是一个进步技术,尽管在SOA领域已经具备相当丰富的知识储备,但是通向SOA的道路可能依然很艰难。最主要的原因在于SOA所带来的变革和其他的变革一样:它需要一个高级别的沟通和群体化来为变革做准备。

在克服了变革的困难之后,还可能有新的技术问题,这包含构建适当的服务传递和使用模式,培训技术开发团队,以及用以支持SOA开发模式的潜在的企业结构变化。尽管SOA的技术组件可以在分离的情况下进行测试和验证,SOA依然是跨越整个企业的方式因而需要更多的努力来计划、组织与管理整个服务架构。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
后一篇:飞来飞去
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    后一篇 >飞来飞去
      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有