换个角度看SOA
我的观点是SOA前途无量,但SOA不是给小实体企业和小软件公司的,要在中国流行尤其困难。以下试论证之。
(各种数据资料收集中,盼有资料的朋友不吝提供)
在一个持续两年的SOA工具开发项目中参与了其中一年半的时间,现在也颇有些想法想要写一写。 即使在我们这个开发队伍中,真正对SOA的将来充满信心的也不过包括我在内的一二人而已。接触的大部分开发人员或者觉得SOA高深莫测,或者觉得不过是大公司又搞出的一个“大词”,推销东西而已。
为什么大公司热衷不已,且业界也是热闹无比,但我们很多开发人员却兴趣寥寥?我觉得,那是因为这个概念本身就不是要推销给小型企业和小型软件开发公司的。
有资料说,国内大部分企业活不过五年,而且总体来说信息化程度非常之低,而国外有几十年,上百年历史的大型企业则很多, 这些大型企业很早就开始信息化,在几十年的时间里,他们积累了大量的技术资产(各种信息系统,业务系统)。也同时产生了信息孤岛问题和遗留系统改造升级的大量需求。这些大企业的几十甚至上百个独立运行的系统建立于不同的年代,采用不同的技术,运行在不同的平台上,集成的困难非常大。这些企业也是国外大软件商和软件服务商的主要客户群体,以前看到过一份资料,系统集成和系统改造的业务在国外大型软件供应商的业务中占相当大的一个比例(TODO:数据数据!)。而国内大部分软件商和软件开发人员则面对一个又一个新项目,大部分都是新系统上线的业务。这一点上之差别极大。
因为有这样的业务特点,所以国外大厂商不断提出“跨平台,跨语言”的技术架构和编程模型,从CORBA到EJB到SOA无不打出这样的旗帜,而这一点对大量开发新系统的国内市场来说,吸引力显然没有那么大。
另一方面,这些大型企业内存在大量遗留系统,如果不能够解决信息孤岛问题,那么他们会逐渐成为企业的负担,而如果能够解决这个问题,就能够把这些技术资产“盘活”,使他们真正成为企业的财富,焕发出新的生命力。
SOA架构提出系统“服务化”,SCA架构又提出了服务组件模型,提出可以将组件部署为服务,服务又可以组合为更大的服务等等,其实这样的思路乍看上去跟CORBA,EJB也差不了多少。但关键在于这里的服务也好,组件也好,指的不是技术模块,而是业务模块。事务处理,O/R MAPPING,事件处理等等技术模块属于基础设施,在客户眼里毫无意义,而业务服务,比如“查询某用户余额”,“查询某商品库存”,“查询某用户消费记录”等等这样的业务服务对企业的业务管理人员却是含义丰富且极具价值的。通过将技术“服务化”,技术资产成为业务人员可以理解的业务资产,业务分析人员可以将业务服务组合开发出新的业务,也可以很清楚的知道企业现在拥有哪些业务服务(资产),想要推出一个新的业务还需要增加或修改哪些业务服务。对于大企业来说,他们拥有的技术资产非常丰富,一旦将这些原来几乎无法管理的技术资产整理(包装)成粒度大小合适,可以很方便访问和管理的服务组件,再加上可以动态调整和监控的流程(bpel, bpm等,在我看来SOA就是流程+服务),这些大企业就可以将之转化为强大的竞争优势,他们将即拥有强大的力量,又拥有灵活的身手,套句时髦话:“大象也能跳舞”。目前鼓吹SOA的开发商和支持SOA的企业基本都属于“大企业”这个群体,屁股决定脑袋。
以上是从业务上说。
从技术上说,SOA将带来软件开发方法上的一些变化。软件开发有自顶向下和自底向上两种思路,现在一般都是两种的结合而有所侧重。 几年前我搞过XPCHINA论坛,介绍和讨论极限编程,那时我认为自底向上,通过重构逐渐产生架构是最有效率的开发方法,现在经过十年的软件开发实践,我现在是架构驱动、逐步求精开发方法的拥趸。 传统的SOA实现方式(我是指BPEL+Webservice)在合适的开发工具(BPEL流程设计、模拟执行等)的支持下,为架构驱动、自顶向下的开发方法提供了非常好的支持,并且非常有利于人力资源的分层配置。对于新推出的SCA架构,我刚开始研究,还未深入,初步感觉更偏向组件化,是另一种(与EJB相比)跨平台,跨语言的组件架构。对开发方法的支持更平衡一些,自顶向下,自底向上皆可。 但不论那种实现方式,都需要有强有力的、有整个企业大局观的架构师来领衔才能真正发挥其效力。 而国内中小型软件企业恰恰非常缺乏架构师,国内有大量优秀的高程,在我看来他们与架构师的差距就在于大局观,而偏偏很多人就跨不过去这个不高的坎。 眼睛里盯着一个功能的人和眼睛盯着一个应用的人和眼界覆盖全企业的人会看到不同的东西,有不同的需要。
以上从技术上和开发人员的特点上看。
最后一个方面,中国经济发展非常迅速,那些打不到单子,难以生存的软件企业且不提,有单子在做的软件企业都是忙不过来,首先感到的是开发效率不足的痛苦,而解决开发效率问题的妙药不是SOA,而是组件化。
总结,国内中小软件企业,他们的客户还不需要SOA,他们自身还在解决开发效率问题和培养架构师。 但是环境迟早会改变的,SOA淡化了技术资产和业务资产的边界,SOA提供可灵活修改的,可组合服务,可调整流程的技术架构,这些优势终将反应在市场上。
分享到:
相关推荐
然而,二者却站在不同的层次看架构,SOA的角度偏向于战略;而REST的角度则偏向于战术。SOA给出了一组架构原则实现其战略目标,而REST则通过一系列约束实现其战术目标。 《SOA与REST:用REST构建企业级SOA解决方案...
SOA强调从业务的角度出发,通过对业务流程和服务的解耦合,使得业务能够更加灵活地应对市场需求的变化。在这种架构下,业务人员和技术人员可以更紧密地合作,确保IT系统能够快速响应业务变化。 **2.2 灵活适应变化*...
不同的参与者可能会从不同的角度看待 SOA,这就如同盲人摸象的故事一样——每个参与者都只能看到 SOA 的一部分,而无法把握整体。因此,理解 SOA 需要从多个维度出发,包括技术、业务和服务管理等方面。 #### SOA ...
两篇论文“965205002.pdf”和“965205001.pdf”可能分别从不同角度深入分析上述一个或多个方面,为读者提供全面的SOA理解和实践指导。通过阅读这两篇论文,读者可以对SOA有更深入的理解,同时也能获取到在实际工作中...
5个代码例子使用的是 Tuscany1.5版本。请在官网下载jar包。 下载地址:...5个例子从不同的角度讲解了tuscany的整体架构思想。文档区别soa框架的两个体系的区别。
而从IT角度来看,SOA也有其独特的好处: 1. 复杂性降低:SOA依赖于标准协议和服务接口,这减少了不同系统之间的集成复杂性,降低了维护难度。 2. 服务重用:通过重用已存在的服务,开发新应用或项目的时间和成本...
SOA(面向服务的架构)是当今软件领域中极为重要的一种...正如在“杀人游戏”中,每个玩家都需要透过他人的发言和行为洞察真相,企业实施SOA时也需要透过组织内部的沟通和协调来识别和解决问题,最终达成业务上的胜利。
- **缩小业务和技术的鸿沟**:SOA使IT技术重新回到支撑业务的角色,使得业务人员能够从业务角度即时构建应用,减少了业务和技术之间的差距。 - **软件资源的共享与重用**:通过SOA,可以将遗留系统或其他系统中的...
尽管不同的组织和个人对SOA的理解有所不同,但我们可以从多个角度总结出SOA的一些关键特性: 1. **粗粒度、松耦合服务架构**:SOA的服务是粗粒度的,这意味着每个服务执行的功能相对较多且独立。同时,服务之间的...
SOA的另一个优势在于简化企业应用的集成。传统的集成方法如点对点、EAI或基于业务流程的集成往往复杂且不易适应变化。SOA提供了一套模式,通过标准接口描述、发现和通信服务,使得集成变得更加简单和灵活。虽然许多...
SOA的生命周期分为几个关键阶段: 1. **建模(Modeling)**:这是SOA项目的第一步,主要是对业务流程进行分析和建模,理解业务需求,并确定哪些业务活动或流程可以被视为服务。这一阶段的重点在于业务而非技术细节。...
### 服务导向架构 (SOA) 的企业最佳实践 #### 一、理解 SOA:服务导向架构概览 服务导向架构(Service-Oriented Architecture,简称 SOA)是一种...无论是从技术角度还是业务角度来看,这本书都是一个宝贵的资源。
SOA(Service Oriented Architecture,面向服务的架构)无疑是当前信息技术领域的热门话题。著名咨询机构Gartner称,SOA将成为创建和交付软件的...如果企业是从架构及规划的角度考量SOA,就会对其优势有更深入的认识。
这需要从整体架构的角度来思考,而不是简单地购买或部署一个工具或平台。 其次,对于管理层,SOA不是一个短期的项目,而是一个长期的规划。SOA的实施应该是一个持续的过程,涉及到企业的战略决策和业务流程的优化。...
- **业务驱动的技术**:SOA与BPM的结合强调从业务角度出发,通过技术手段实现业务目标。 #### 五、SOA架构的实际应用场景 - **系统集成**:通过SOA实现不同系统之间的集成,如ERP与CRM系统。 - **跨组织协作**:...
- **从业务角度出发**:确保SOA项目的初期阶段就聚焦于解决具体的业务痛点,比如通过业务流程管理(BPM)改进现有流程的效率。 - **展示业务成果**:清晰地展示SOA如何通过提高流程效率、降低成本或增强业务敏捷性等...
- **SOA 的定位**:从设计角度来看,SOA 更关注于业务层面,通过业务建模将业务组件抽象为服务。从架构的角度看,则关注于如何将企业的内部系统以服务的形式连接起来,并确保这些服务之间能够以松耦合的方式交互。 ...