InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

对SOA实施者的实践忠告

作者 Boris Lublinsky 译者 黄璜 发布于 2010年1月4日

领域
语言 & 开发,
架构 & 设计,
运维 & 基础架构,
企业架构
主题
治理 ,
ESB ,
Web服务 ,
设计 ,
REST ,
架构 ,
SOA ,
数据访问

在"对目前从事SOA的组织的几点建议"这篇博客中,Ganesh Prasad基于他多年的经验,对于如何开展一个大型的SOA项目作出了建议:

...不要因为这一方式不是那么宏大而感到担心。复杂性让新手感受深刻,但结果才是最终能让所有人留下印象。

Ganesh的方法包括了以下几个要点:

  • 眼观全局。SOA不是关于集成或者是引入一种新技术来简化现有系统的连接。而是关于:
    ...精简企业的部件并且使它们易于理解和连接...所以始终应当谨记简洁性,并且不要把它与权宜之计搞混了,那是指的阻力最少的道路和。而精简可能需要付出努力。
  • 理解数据。服务互操作性需要用于交互的“语义”数据模型。Ganesh指出所谓规范的数据模型通常层次较高且对于实践应用来说过于抽象。作为代替,他建议将企业数据划分为几个逻辑域并为各个域定义字典。
    所有暴露它们的逻辑域的服务都应该当使用这些定义,而来自其它域的服务消费者有责任理解这些定义。由跨这些域的服务组合起来的流程应当在类似的数据元素之间执行它们自己的映射。这不象听起来这么恐怖,因为只有一个域所管理的数据元素只有一部分子集会通过服务接口暴露出去...不要尝试[构建]一个单一的规范数据模型。那只是徒劳之举,根本不要启动。
  • 选择正确的中间件。在Ganesh看来,大部分情况下,HTTP是SOA实现最合适的中间件。他建议,除了必须需要的情况下,避免使用消息队列并指出基于HTTP的数据库备份的通信模型通常能提供更简单的解决方案。
    HTTP是一个十分通用的协议,可用作你的SOA项目的逻辑基础设施的元素。ESB,服务目录以及其它的“治理”组件通常只在管理它们自身所引入的复杂性时才需要。用简单的web服务器群和数据库群所能做到的会让你惊叹,同时还能始终保持简单和明了。
  • 选择正确的服务实现手段。Ganesh认为基于SOAP的web服务很大程度上是“供应商提供”的宣传,并推荐尽量予以避免。他建议使用REST来代替:
    REST实际上是实现SOA的有效方式,它通常可以以极低的成本和复杂性来交付解决方案。采用REST的困难所在是找到用这种方式思考的优秀人员。
  • 选择正确的数据合约定义。 谈到领域模型的正式定义时,Ganesh建议道“标准”的XML方式是重量级的比较笨拙。相反,他建议好好看一下JSON模式提案
    在许多高级语言比如Java当中,已经有现成的JSON模式的库可用。应该能够可以以极低的复杂性,如XML一样严格的定义数据合约...避免XML的那些繁文缛节,由JSON开始,并且融合日趋成熟的JSON模式。你会发现这些与REST结合起来会工作得非常棒。
  • 解决SOA简洁性的悖论。 尽管SOA背后的主要驱动因素是精简企业架构,按照Ganesh的说法,典型的SOA实现的现实是,因使用重量级方案而导致集成了复杂性,又通过引入工具来管理这一复杂性。
    当然,如果你有官僚的倾向,你可以沐浴在高预算与大团队的声望中,并且可以基于你所交付的服务和流程和数量发表胜利的宣言。但如果你真的想成功交付SOA(例如,让你的业务更加灵活并且以一种可持续的低成本来运营),而这一路上不用烧钱的话,你得务必看看我上面列的这些烦人的,没什么印象的,甚至是不合潮流的方案和技术。让那些大卖主好好歇歇吧。你不需要买技术(除了你所拥有的web服务器和数据库)。你也当然不需要买任何复杂的技术,而这正是那些供应商要倾售给你的。

Prasad的文章讨论了一个典型的SOA实现会遇到的许多问题。它同样通过新的途径,摒除了现有的经常使用的解决方案遇到的问题。这引出一个话题:什么时候更适宜去理解和改进一个现有解决方案要,而什么时候又适宜摒弃现有方案而尝试新的途径呢?新事物是否总是最好?

查看英文原文:Practical Advice for SOA Implementers

译者 黄璜 糊口靠的是Java Web,赶过SOA的潮,追过Cloud的风,真正欢喜的是Linux,向往的事情是研究网格计算。

很好! 发表人 熊 军 发表于
  1. 返回顶部

    很好!

    发表人 熊 军

    很好!

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。