通过自下而上的WOA来部署SOA,或许会让你受益无穷。

  首席信息官(CIO)和系统架构师们为了在企业里部署复杂的服务导向架构(SOA),有时候真可谓是殚精竭虑不遗余力,但到头来等待他们的仍是 一股深深的挫折感。“只要你建好了,自然就会有人用,”这种自上而下的SOA部署策略往往是以失败而告终,并且有时还失败得相当惨烈。企业投入巨资好不容 易把SOA部署妥当了,但员工们却对它不感冒,因此业务流程与IT部门的接轨也就无法实现了。至于部署之前那些诱人的投资回报率,那更是想都不用去想。

  大多数失败的部署都告诉我们这样一个教训:简为佳。越来越多的公司发现,根植于底层运作的网络导向架构(WOA)虽然能见度较低,但却是通往顺 利部署SOA的一个更好途径。与SOA类似,WOA也是对系统设计的一种架构,只不过它是以资源为导向,而非以服务为导向。这两者之间有何区别呢?SOA 设计的核心单元是一种能够满足独特业务功能的重复使用型服务,而资源导向型服务则专注于数据,并且存在较大的局限性。

  SOA和WOA所作用的抽象层面也有所不同。前者是一种系统层面的架构模式,致力于实施可被多种应用程序消化的新业务功能;而后者则是一种接口 层面的架构模式,专注于各种服务功能以何种方式提供给应用程序。然而,不管是通过SOA还是WOA交付的功能,其治理方式、服务质量和安全性能都具有同等 的重要性。

  虽然有些权威人士声称,只有初创企业和以网络为中心的公司才会支持WOA,但国际商业机器公司(IBM)的WebSphere产品部首席技术官 (CTO)杰里·丘沃莫(Jerry Cuomo)却通过Project Zero向世人宣告,他也是WOA的拥护者。Project Zero是IBM的一个以WOA为基础的框架,目前正处于测试阶段,预计将于今年晚些时候作为产品发布。丘沃莫借帮助自己12岁的儿子做功课的例子,生动 地描述了WOA的神奇魅力:

  “我的儿子决定,要把他的作业做成一个网站。经过一番简单的培训之后,我成功地教会了他如何使用谷歌公司(Google,下称谷歌)和电子港湾 公司(eBay,下称电子港湾)的服务,他甚至还可以在所谓的作业中放置一些横幅广告,这让他感到非常有趣。谷歌和电子港湾的网络应用编程接口(API) 支持简单的REST URL,利用这些服务他可以轻松地剪切和粘贴所需的代码,将自己的网站连接到谷歌和电子港湾强大的SOA上。而更令他兴奋地是,几个月后,他竟然从作业中 的广告上获得了5美元的收入。这对于孩子做功课是一个多么大的动力啊!”

  MindTouch公司的创始人之一、CTO史蒂夫·比约格(Steve Bjorg)也是WOA的铁杆拥护者。MindTouch公司主要致力于研究如何将开源Wiki协作及内容管理平台与IT治理结合在一起。该公司于 2007年推出的产品Deki Wiki目前已被包括联邦快递公司(FedEx)、富士通公司(Fujitsu)、甘尼特公司(Gannett)、微软公司(Microsoft,下称微 软)、西门子公司(Siemens)以及美国军方在内的多家大型企业和组织所采用。“通过走网络导向服务与表象化状态转移 (Representational State Transfer,REST)相结合的路线,扩展应用程序的要求大大降低了,” 比约格说,“那些带有复杂WSDL文档和SOA注册的简单对象访问协议(SOAP)处理栈不存在了。现在人们可以利用任何计算机语言轻而易举地开发出 Deki Wik的应用扩展。”

  有些公司担心WOA不能完全替代SOA,但事实上,它们是两种互为补充的架构风格。在某些情况下,只要WOA就能满足企业的需要。而在其他情况下,你可能需要升级扩展到SOA层面。但有一点可以肯定的是,如果没有做好准备,千万不要鲁莽地部署SOA。

  SOA似乎有一个奇妙之处:用多种语言编写的运行在多种平台上的应用程序,在SOA下看起来就好像是用一种语言写成的运行在同一平台上的程序一 样,难怪它对于企业用户有这么大的吸引力了。分布式计算往往被认为是编程的理想境界。一些软件行业的巨头,如IBM、微软和太阳公司(Sun)等,都在这 一问题上进行了20多年的研究,并且各自取得了不同程度的成功。截至目前为止,SOA是业界为解决分布式计算问题而做出的最新、也是最伟大的一种尝试。不 过,那些基于Corba、DCOM和Java/RMI标准的方法在此前遇到过的难题,如今仿佛也同样困绕着SOA。

  对于SOA号称能带来的投资回报率,一些IT专家也表示了怀疑。2007年,《信息周刊》对278位IT专业人士进行过一次调查,结果32%的 受访者表示,在部署完SOA后,该项目达到的效果要低于期望值;58%的受访者认为,SOA给他们的IT环境引入了更多的复杂性;另外,还有30%的人 说,SOA的项目成本超过了预算。只有10%的受访者觉得SOA的效果超出了预期的目标。

  核子研究公司(Nucleus Research)2007年8月份发布的一份报告证实了《信息周刊》的调研结果。该报告指出,在106家公司中,只有37%表示在SOA技术和编程上的 投资实现了预期的投资回报。今年早些时候,伯顿集团(Burton Group)分析师安妮·曼妮丝(Anne Manes)就SOA目前的商业价值表达了类似的否定意见,她说:“到目前为止,在我所采访的所有公司中,能称之为成功部署了SOA的公司只有一家。”

  那么,怎样才能顺利部署SOA呢?让我们来看看从WOA出发来部署SOA会为我们带来何种惊喜。

  SOA与Web服务

  很多人都将SOA和Web服务混为一谈。事实上,SOA是关于设计方面的,而Web服务则是一套支持分布式计算的具体技术机制。Web服务让开 发人员能够轻松地创建基于服务的系统,但前提条件是开发人员使用的是SOA的设计准则。在此准则之下,各种功能被打包成模块化的、可共享的分布式服务,它 们可被多个应用程序重复使用。如果开发人员做不到这一点,那最终得到的只是一些受限的非集成应用程序。

  2000年,IBM 和微软推出了第一代的Web服务中间件框架,也就是所谓的Web Services Framework(以下简称WSF)。WSF基于一个非常小的规范集合,其中包括SOAP、Web服务描述语言(Web Services Description Language,WSDL)以及通用描述、发现和集成(Universal Description, Discovery, and Integration,UDDI)。一开始,开发人员对于这个Web中间件框架的简洁性赞誉有加,但随着时间的推移,WSF在经过多次完善和检审之后, 目前必须支持的规范数量已经增加到了50多个。

  为了应对WS-*标准的复杂性和流动性,一小部分颇具影响力的企业架构师已开始支持返璞归真的WOA架构方法,在HTTP协议之上使用古老而简 单的XML。这种方法是基于万维网(World Wide Web)和REST背后的架构,它要比WS-*标准简单得多,不过却没有它们灵活。

  对于某些领域,如安全性和可靠邮件传输,WS-*有一套标准的信息格式和定义参数,而WOA方法则意味着业务功能有时是被硬编码到组织的基础设 施中。为了弥补这方面的缺陷,WOA的支持者提出了一套基于REST原则的最佳实践,如使用统一接口访问所有的应用程序资源。最看好这套方式的倡导者自称 是“REST一族”,他们甚至声称REST是几乎哪儿都能用得上的“万金油”。

  关于WOA和SOA的争论是没有完全必要的。很明显,REST和WS-*风格的SOA都有属于自己的一片领地,所以IT部门应该将重点放在架构问题上,而不是抓住部署细节不放。

  亚马逊的案例

  开发人员对基于REST的轻量级Web服务表现出了极大的热情,这从各种各样的网络投票结果就可看出。2003年,亚马逊网站(Amazon) 首先在网上进行了公开测试,比较亚马逊网络服务(Amazon Web Services)的两个接口——SOAP 和 REST的受欢迎程度。最终85%以上的开发人员都选择了REST/ WOA接口,亚马逊Web服务主管杰夫·巴尔(Jeff Barr)说。

  “REST很容易演示——只需把一个网址加载到浏览器上即可,”巴尔说,“结果是显而易见的。人们看到操作过程如此简单,当然会为它投上一票。”

  从那时起,亚马逊的策略就发生了变化,它开始为开发人员提供极大的自由,无论他们是在公司的防火墙内部还是外部,几乎都可以不受限制地访问其产 品数据库。如此一来,亚马逊网络服务当然就像野火一般烧遍了业界。今年1月份,亚马逊的首席执行官(CEO)杰夫·贝索斯(Jeff Bezos)表示,如今亚马逊网络服务消耗的带宽比亚马逊全球所有零售网站的总和还要多。

  亚马逊的Web服务平台还可激发开发者及合作零售商的创造热情,它最近发布的几款产品就是明证,如简单存储服务(Simple Storage Service,S3)和Mechanical Turk。S3是一种在线存储服务,新兴公司和企业客户可以用它来进行Web托管及备份;Mechanical Turk则可通过网络帮助大型企业协调内部的各个工作单元。

  现在,成千上万的独立网站都整合有亚马逊的产品数据和编程工具,由亚马逊前程序员艾伦·泰勒(Alan Taylor)创建的Amazon Light就是其中之一。其他使用了亚马逊网络服务的新兴网站典型还包括WeoGeo和TuneCore。前者的业务是销售定制地图和航空图像,而后者则 主要从事独立音乐的上传业务,它把这些音乐转发给iTunes、 亚马逊 MP3以及其他一些数码零售商,从中收取一定的费用。你只需每年支付一笔为数不多的维护费用,就可以使用这些服务。

  除了利用到REST设计理念外,以上提到的TuneCore和WeoGeo两家网站都是用Ruby on Rails(RoR)框架来开发的。该框架与Java语言的Restlet和Python语言的Django一样,都整合了基于REST的多种模式和功 能。这些框架让开发者在整合网络资源时,能更轻松地进行基本的数据库操作。举例来说,最新版的RoR框架在HTML工具等各个较低层面上都添加了REST 技术,使得解析URL、XML和JavaScript对象符号(JavaScript Object Notation,JSON)变得更加简单了。JSON是一种颇受网站和新兴企业追捧的轻量级数据交换格式,但在大型公司中尚未获得普及。作为XML的轻 量级替代者,JSON无需繁冗的标记语言,就能将数据存储到磁盘上,或是通过网络传输数据。

  RoR框架的这些能力为它赢得了众多支持者。开发人员尤其喜欢RoR,因为它可以对本地或企业数据库模式进行分析,并能自动生成处理网上数据的 多种方法。对于创建遵循REST应用程序架构的WOA服务来说,RoR框架是一个很好的选择,不过,在开发基于SOAP和WS-*标准的Web服务上,它 的作用就比较有限了。

  双R组合

  人们一贯认为WOA应用程序只适用于简单的数据库操作,对于企业级的性能改善却无能为力。这似乎正是利用RoR框架创建的社交网站 Twitter目前所面临的主要难题。今年早些时候,在美国旧金山召开的苹果展览会上(Macworld Expo),苹果公司(Apple)的首席执行官史蒂夫·乔布斯(Steve Jobs)在主题演讲中使用Twitter网站的服务时,屡次遇到故障。这一事件让终端用户对该网站的信心大减,他们都对Twitter的现状和未来都表 示了担忧。许多专家都建议,Twitter网站应该停止将RoR用作Web框架,转而利用Java或PHP重新开发一个框架。

  虽然反对者众,但有一人仍然力挺RoR,劝告Twitter不要放弃原有框架,他就是Java和RoR专家布鲁斯·塔特(Bruce Tate)。塔特认为,REST应用程序能够随着RoR进行调整,并且效果还不错。“开发人员不应当在系统的规模上纠缠,”他说,“他们应该把精力集中在 生产力上。”

  虽然塔特承认,RoR可能永远无法像Java那样升级调整,但他仍坚持这一框架会很快走向成熟。“新的虚拟机将为此提供极大的动力,”塔特 说,“我的看法是,解决问题应当对症下药。如果你在生产力方面没有问题,那么就没必要使用RoR。如果你所面临的问题与技术不相关,那也就不需要寻找技术 性的解决方案。但是,假如提高生产力是你的重要目标,或者你正在创建受数据库支持、具备SOA特征的Web应用程序,那RoR和REST的组合就能给你帮 上大忙。”

  REST与SOAP之争

  致力于IT和业务转型的全球服务商Keane公司的企业架构师艾德·里昂斯(Ed Lyons)表示,如果亚马逊、谷歌和雅虎都从SOAP转向了REST,那么其他公司就应该考虑考虑随后跟进了。

  “我对大型企业客户说,他们的需求不可能比资产超过300亿美元的亚马逊等互联网公司还大,”里昂斯指出,“就大多数时候而言,人们根本用不到像SOAP WS-*规范这么复杂的东西。简单的标准虽然不能涵盖一切,但它的用途也很广泛,其效果也会更好。”

  当被问及开展业务转型的最好方式是WOA还是SOA时,里昂斯指出这并不是一个非此即彼的问题。WOA/REST可以说是一种自下而上部署 SOA的方法,而基于WSDL的SOA则是一种自上而下的SOA构建法,如果你一开始只是想试试水,并不想一个猛子扎入SOA的洪流中,那么采用 WOA/REST的方式来部署SOA应当是最值得推荐的办法。

  Mozilla公司的创始人之一迈克·谢弗尔(Mike Shaver)向我们介绍了为什么Mozilla会走WOA路线,并采用MindTouch公司的Deki Wiki来作为开发者社区的未来平台。“Mozilla拥有大量与开发工作有关的信息,其中既包括传统文件和示例代码,又有测试套件和漏洞跟踪数据,还涉 及到许多活跃的讨论论坛和RSS流,”他坦言说,“与我们曾考虑过的其他wiki系统相比,Deki Wiki给我们的感觉是特别适合作为Web应用程序的平台,利用它可以比较轻松地创建新的扩展或集成点。”

  IT业界此前一直存在一种说法:WOA非常适合简单的专案开发,但如果企业用户想拥有安全可靠、易于管理的服务,还是需要使用全面的Web服务 SOAP堆栈。现在,新一代XML硬件设备的最新进展已经向这种论断提出了有力的反驳。Cast Iron Systems、IBM DataPower以及Sonoa Systems等一系列产品可为XML的安全、加速和传输提供保障,并能使企业客户及其合作伙伴各自偏好的WOA、SOA、Web 2.0及SaaS实现共同运作。现有的SOA可以利用资源端点进行扩展,而新建的WOA则可利用以服务为导向的端点进行扩展。在多数情况下,混合系统可能 会更有意义。

  设计为本

  正如我们一开始所说的那样,SOA的本质并非技术,而是设计。各种类型的分布式计算技术,包括HTTP/REST、SOAP、Corba、 DCOM、RMI、Jini、Fax以及Telex等,都能用于部署以服务为导向的系统。但是,相对简单的REST也许会是搭建SOA架构的最佳方法,因 为它强调了在端点与座机之间建立通信的重要性,而对接收机和发射机的大小、形状和组成并不在意。让端点能够开口“说话”与确保通话的清晰度和保密性,这两 者的战略意义孰轻孰重,IT部门必须有个决断。不过,两者之间并不互相排斥,这只是一个优先顺序和资源分配问题。

  最后,还有件事情也同样重要:如果你选择了轻量级的自下向上WOA架构法,那就无须在网络的“装饰细节”上耗费太多时间,因为它们也许迟早会被 淘汰。这也就引出了设计与部署的根本区别所在:在网络时代,随着时间的推移,部署的系统本身总有一天会被束之高阁,但优秀的设计方法却是永不过时的。

SOA部署:反常道而行之相关推荐

  1. 数据仓库 — 07_Kafka的安装与部署(Kafka命令行操作指令、Kafka集群群起脚本、压力测试、节点数量计算、hadoop_zookeeper_flume_kafka群起脚本、默认端口总结)

    文章目录 1 Kafka的安装与配置 2 Kafka命令行操作 2.1 查看当前服务器中的所有topic 2.2 创建topic 2.3 删除topic 2.4 发送消息 2.5 消费消息 2.6 查 ...

  2. Kubernetes集群部署及简单命令行操作

    三个阶段部署docker:https://www.cnblogs.com/rdchenxi/p/10381631.html 环境准备 [root@master ~]# hostnamectl set- ...

  3. gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...

    常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...

  4. java毕业设计便行顺风车出行系统Mybatis+系统+数据库+调试部署

    java毕业设计便行顺风车出行系统Mybatis+系统+数据库+调试部署 java毕业设计便行顺风车出行系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  5. 基于JAVA便行顺风车出行系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA便行顺风车出行系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA便行顺风车出行系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  6. [译] 十大 Docker 反模式

    原文:https://codefresh.io/containers/docker-anti-patterns/ 容器已经遍地开花????.即便你尚未认定 Kubernetes 才是未来之选,单为 D ...

  7. 关于DNS反解的一些资料

    没有做DNS反向解析引起的邮件被国外拒收问题 转自<没有做DNS反向解析引起的邮件被国外拒收问题> 一般反向解析是和IP地址分配有联系的,所以isp直接申请反向解析的授权很难得到.而电信运 ...

  8. linux虚拟机启动网卡命令,命令行下无法联网怎么办,vmware下安装archlinux实现网络连接,实机grub引导启动linux...

    安装archlinux可参考: 百度·贴吧里也有置顶帖给出了官方维基: 由于用的电信宽带需要客户端(大学苦逼,需要客户端),无线网卡也不支持(cmcc和chinanet都需要登陆网页,命令行下无线网连 ...

  9. [SOA征文]SOA如何起步?

    SOA有多好,似乎已经无数的人说过了,但是怎么做,却是大家各执一词. 技术厂商自然是推广自己的产品,根据自己的产品提出不同的路线图,EAI也好,ESB也好,莫衷一是. 实际上,就技术层面而言,我认为具 ...

最新文章

  1. Pandas把dataframe的索引、复合索引变换为数据列:包含单索引到单列(重命名)、复合索引到多数据列、复合索引的其中一个水平变换为数据列、
  2. 使用synchronized修饰静态方法和非静态方法有什么区别
  3. python3.6.6有多少关键字_python中的关键字---6(os/sys模块)
  4. python字符串与列表的相互转换
  5. CentOS 6安装详解及PXE 安装
  6. Azkaban与Oozie的区别及如何调度spark任务
  7. Java异常日志的查询语句_java学习异常,断言和日志
  8. python编程对电脑要求_什么是集成开发环境和代码编辑器?优秀Python编程环境的要求(4)...
  9. java中子类与父类中隐含的this引用的分析
  10. 嗯,查询滑动窗口最大值的这4种方法不错....
  11. gevent开始学习-第一步
  12. Excel导入SQL数据库出现的问题
  13. 部署FIM 2010 R2——7验证不同林之间相同用户名密码同步
  14. vue 中使用axios的总结
  15. 获得每种调制方式中每个信噪比的准确度
  16. 桌面计算机图标双击打不开了,双击打不开图标怎么办 双击打不开图标解决方法【详解】...
  17. MySQL性能调优-使用ROLLUP代替UNION ALL
  18. IntelliJ IDEA 绝对好用快捷键
  19. 大数据BI可视化基础
  20. 2023年品牌惊蛰节气海报赏析

热门文章

  1. vue3 实现一个简易版日历
  2. 数据结构:区域染色问题
  3. python从键盘输入若干学生姓名、保存在字符串列表中_Python基础语法练习题
  4. 2036——改革春风吹满地
  5. 另一棵树的子树(LeetCode)
  6. 打开计算机界面怎么没桌面图标,电脑桌面图标都没了?详解如何轻松恢复桌面图标...
  7. ORA-01840: 输入值对于日期格式不够长
  8. Misc-登机牌[i春秋][150pt]
  9. C++模板特化和偏特化(二)
  10. 产品经理:你能不能让词云动起来?