硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

专访与书摘:Nicolai Josuttis, "SOA in Practice"

  • 2008-02-14
  • 本文字数:3141 字

    阅读完需:约 10 分钟

InfoQ 发布了 Nicolai Josuttis 的新书——《SOA in practice》——的摘录。这次,InfoQ 的Stefan Tilkov 有幸采访了Nicolai,内容涉及他对于SOA 的看法,业界对它的一些主要误解和SOA 的关键成功因素。

InfoQ:您能简要的对 SOA 下一个定义吗?或者说,您对 SOA 的看法?

Nicolai Josuttis (NJ):就我来说,SOA 是一种维护系统环境(system landscapes)的方法。基于这种方法,你拥有了可以成功管理——以一种你可以实现和修改分布于异构系统的业务过程的方式——一个特定系统体系(system-of-systems)的全部概念。

SOA 既非检查表,也非秘诀。以关键概念“松耦合”为例。按照 SOA 的说法,你应该将松耦合应用在适合它的地方。但是,松耦合有很多不同的形式(在我的书中就列举了 11 种)。问题是应用松耦合总是有代价的。因而,在具体项目中还是应该由系统架构师来决定在哪儿、以哪种方式应用松耦合。

InfoQ:这似乎相当模糊。您如何判断一个已知的系统集合在何时遵循面向服务概念并形成面向服务架构?您认为有某种类似石蕊试纸的东西可以帮助判断吗?

NJ:在我看来,一个重要的方面就是是否涉及不同的拥有者。也就是说,你必须实现由不同公司、部门或团队维护的系统业务功能(以便他们可以一起协作完成一件事情)吗?如果是这样的话,许多适合小系统的设计原则将不再有效。例如,你不能简单地决定一个人是否可以修改公共数据类型。这儿不需要一个“天生的”数据管理者(想想两家公司共享同一客户数据的情形)。你有不同的进度安排、利益和预算。并且,突然之间你需要一种协作和信任的文化来把这些事情完成。

此外,我将尽力回答一些典型的设计和实现问题,示范好的设计人员所了解的在他们实现 SOA 时采用的方式。

例如:

  • 服务接口封装实现细节吗?

假设服务接口如下

customerOP(action, id, name, address)其中的 action 可以是“create”、“read”、“change”或“delete”,根据 action 的不同,其他参数有可能是 Null。我认为这种设计有一种技术驱动业务服务的味道在里面,与以上设计不同的是将服务定义成以下形式:

createCustomer(name, address)<br></br>readCustomer(id)<br></br>changeCustomerAddress(id, address, verify)<br></br>deleteCustomer(id)- 你的服务接口元模型是什么,你提供哪些 MEP(消息交换模式)?

这个问题的答案会严重影响接口设计和互操作性。

但是,我也经常会问这个元问题:为什么你想知道它是否是 SOA 的,或者说,拥有 SOA 为什么对你如此重要?我一般喜欢有一个合适的解决方案,而非一个拥有特殊名字的解决方案(嗯,除非客户或相应的管理层只为一个贴有“SOA”标签的有用解决方案付钱,这种事情在如今这个时候是有可能发生的)。

InfoQ:您认为业界对于 SOA 主要的误解是什么?

NJ:现在,对待 SOA 运动的方式有几个问题。

首先,我们没有一个 SOA 社区。SOA 完全由厂商、分析师和集成商驱动。这些公司往往只是想兜售产品和咨询成果,但是这个概念引起了如此多重要的问题,以至于我们需要严肃和诚实地谈论 SOA 应用的平台,而不是仅仅告诉你必须使用 SOA 完成你的业务。同样,问题不在于你是否使用 SOA,唯一重要的是一个特定的 IT 解决方案是否合适。

其次,SOA 的主要业务案例是更好地重用这一论调是不真实的。所有大规模的 SOA 环境(SOA landscapes)经验表明,一个服务的平均消费者数目介于 1 和 2 之间。这有助于我们认识到 SOA 的主要业务案例是不同的:投资松耦合来维护系统环境,以便你可以对需求变更反应迅速且便宜。

第三,另一个不真实的说法是:SOA 分别作为一个标准技术或架构被建立。大规模的 SOA 环境相对较少,并且几乎没有公司在关键任务应用中使用 BPEL 引擎。

InfoQ:您认为 SOA 的主要挑战是什么?

NJ:SOA 会导致很多的挫折,因为目前它被以太多不适当的方式使用。并且在这些我看到的已经建立的 SOA 环境中,我们面临的问题远远超出了许多当前 SOA 项目的范围。许多这些问题必须忍受分布式系统本身就会引入很多障碍这一事实(因而,本质上这不应该是一个终点)。例如,提供分布式测试数据和分布式调试的确具有挑战性。

InfoQ:那么,如果有些场合不适合 SOA,那么它们是哪些?一个组织如何判断 SOA 是否是一个适合他们的好战略?

NJ:SOA 作为一个概念不适合解决除了分布式业务过程之外的互联性问题。例如,数据库复制和数据库同步就是一些异类。但是,你可能从 SOA 原则中获益。

我目前所看到的大多数严重滥用 SOA 的情形是使用 SOA 分离用户界面和业务逻辑。服务总是提供自包含的后端功能。这意味着它们绝不应该包含一个运行中的用户会话状态。它们可以保存一个运行中的业务过程状态,但是这两个状态不是一回事。后者是一个过程服务(如购物车应用或一个订单),在它被处理时用户和其他涉众可以得到当前状态。

因而,我建议要非常小心地使用 BPEL 扩展,如 BPEL4people(当前正处于标准化进程中,如 WS-B4P 和 WS-HT,其中的 HT 代表“Human Task,人工任务”)。前端工作流不同于后端工作流。一个对应的分离有助于解耦事物。尽管原型可能看起来不错,但是长期看来你常常会付出代价。

因为分布式系统的代价往往高昂,通常我建议在你可以避免 SOA 的地方就避免它。但是,总是有足够的需求让你不得不连接属于不同拥有者的分布式系统。在大公司内,你不得不连接由不同部门和业务单位提供的不同系统。此外,我们越来越多地连接不同的公司。例如,移动电话公司和手机厂商、银行、信用卡公司,以及物流公司(运载手机)交换数据。他们甚至一起工作,与航空公司、仓库、零售商等共享客户数据。实现这些需求,除了应用 SOA 原则没有其他选择。

InfoQ:您能列举一些关键的成功因素吗?

NJ:我目前认为最重要的关键成功因素是:

  • 理解 SOA 确切的含义
  • 你需要最高管理层的支持
  • 你需要协作和信任的文化
  • 你需要非常小心地引入 SOA
  • 引入 SOA 的团队必须把他们自己视为业务团队的服务提供者

记住,以上因素没有一个是技术性的。尽管我们有一些问题也很重要(例如,使用 Web 服务),但是我不认为它们对于 SOA 战略来说是至关重要的,除非以上因素不再成为问题。

InfoQ:除了阅读您的书之外,您还能给那些开始了解 SOA 的人们一些建议吗?

NJ:就 SOA 来说,它全部都是关于维护大系统和系统环境的经验。一般来说,这很难教授。你可能找到其他书籍或培训,但是我能给出的最佳建议就是日常学习大系统的工作方式。除了在这些项目中工作,体力事实和经验也很重要。一个好的建议就是复查和回顾。

最后,我想给你一个关于 Web 服务和工具的一个好建议。SOA 提供了处理异构性的原则。这是很重要的,因为我们在谈论维护系统体系的解决方案。但是不要想当然的认为这种为异构性做的准备工作对于你的 SOA 工具和技术来说就不是必要的。当然,随着时间的流逝还会出现不同的中间件技术和基础设施,你也会使用不同的 BPEL 引擎和其他方式来编制服务(包括用你喜爱的编程语言实现它们)。就这个原因,小心不要让你的整个 SOA 战略太依赖于一种技术,例如 Web 服务,或一种特定工具。否则,在几年后你将不得不用其他别的东西替换你的解决方案,因为对你来说叫做 SOA 的这个东西不起作用。这个东西可能使用了所有的 SOA 原则,但是有不同的名字。只有你正确地应用 SOA,SOA 才会起作用。

InfoQ:非常感谢接受采访。

Nicolai Josuttis 是一名独立系统架构师、技术管理者、作家和咨询师。在编程社区和各种会议的与会者中他都有很好的声望,因为他不仅是权威的演说者和作者(“ SOA in Practice ”、“ The C++ Standard Library ”和“ C++ Templates ”(合)作者),而且是一名创新的提出者。目前,他是一家国际移动电话公司实现 SOA 的团队的头,该公司每天接受百万次的服务调用。

查看英文原文: Interview and Book Excerpt: Nicolai Josuttis, “SOA in Practice”

2008-02-14 03:361396
用户头像

发布了 255 篇内容, 共 66.6 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

Java多线程系列6:管程

BigBang!

Java多线程

1688订单详情API介绍(item_get-获得1688商品详情)

技术冰糖葫芦

API 接口

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

石头财经

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

BlockChain先知

2023 OPPO ColorOS 全球创客大赛收官,见证潘塔纳尔生态日益繁荣

极客天地

从零开始实现Go搜索引擎(二)FST构造算法

geange

Go golang lucene 算法 FST

软件测试/人工智能丨如何使用知识图谱实现精准测试效果

测试人

人工智能 软件测试

数字化转型对企业有什么好处?

天津汇柏科技有限公司

数字化转型

共建开源新里程:北京航空航天大学OpenHarmony技术俱乐部正式揭牌成立

科技热闻

GPT-4「变懒」问题将被修复;英伟达选择越南成公司“第二故乡”丨 RTE 开发者日报 Vol.104

声网

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

小哈区块

深度解读GPTs的创建,搜索以及高级选项到底怎么用

Bob Lin

openai ChatGPT GPT-4 #LangChain GPTs

技术分享丨Amazon Q,新一代生成式人工智能助手

伊克罗德信息科技

人工智能 Amazon 亚马逊云科技 Amazon Q

云渲染对高层住宅立面渲染图优势、作用、影响

Renderbus瑞云渲染农场

云渲染 渲染农场 瑞云渲染 动画云渲染 效果图云渲染

探索绿色之道:英特尔助力联想打造零碳智造工厂

E科讯

11月 Web3 游戏行业概览:市场回暖,未来趋势

Footprint Analytics

区块链游戏 gamefi web3游戏

区块链加持卡奥斯天彩抽奖平台,现邀您免费抽奖!海量奖品等你薅

Openlab_cosmoplat

抽奖

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

西柚子

包装效果图渲染技巧:怎么用云渲染省钱、省时间

Renderbus瑞云渲染农场

云渲染 云渲染农场 渲染农场

以不竭之动力 深耕人才沃土▕ 软通动力及子公司鸿湖万联共推开源人才培养

新消费日报

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

股市老人

AI 技术在前端开发流程中如何应用??3分钟带你一览开放原子开发者大会 OpenTiny 最新资讯!

OpenTiny社区

开源 AI 前端 开放原子

ETLCloud的应用策略——实时数据处理是关键

谷云科技RestCloud

ETL 实时数据

OpenHarmony打造下一代智能终端操作系统根社区,繁茂人才生态

新消费日报

边缘计算系统设计与实践

不在线第一只蜗牛

边缘计算 系统框架

降低检索系统搭建门槛,轻松实现 RAG 应用!Zilliz Cloud Pipelines 惊喜上线

Zilliz

Zilliz AIGC zillizcloud rag

专访与书摘:Nicolai Josuttis, "SOA in Practice"_SOA_Stefan Tilkov_InfoQ精选文章