11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

克服 SOA 实施过程中的障碍

  • 2008-09-30
  • 本文字数:1546 字

    阅读完需:约 5 分钟

Jonathan Mack 说,现在 SOA 实施“并不像许多分析机构或 Web 研讨会所指出的那样普遍”。原因很简单:成功的 SOA 实施是颇具挑战性的。Jonathan Mack 概述了三大挑战:

  • 解决早于 SOA 的架构——将现有企业资产整合到 SOA 里去。
  • 说服公司采用 SOA——用具体的事实(而不是总体的陈述)阐述为什么 SOA 能够产生与其成本相称的效益,得公司涉众(stakeholders)信服。
  • 设计最有效的 SOA 路线图——定义实现 SOA 愿景的过程。

虽然大部分 SOA 实践者们提倡在现有企业应用之上构建一个瘦服务层、尽量重用已经存在的功能,但这样实施的挑战性常常比通常认为的要大得多。Jonathan Mack 指出:

过去构建的遗留系统(legacy systems)是一些零散的批处理或在线处理程序,它们必须按特定的顺序组合起来才能产生有意义的业务功能。那些遗留的处理程序是用于满足实际需要的, 它们常常是根据实际开发流程得到的、而不是与具体的功能相对应。从服务的观点来看,这些程序缺乏一致性和含义。

关于解决这一问题的实际办法,Jonathan Mack 概述如下:

  • 为你将构建的服务增加一个瘦服务层作为过渡。所以要创建一些便于插入服务层的组件,以便遗留系统的程序员们可以按他们过去的方式进行工作(即用明确定义的输入输出来设计程序)。
  • 从一开始就在服务层中留好监控与异常处理钩子(hooks)。SOA 最重要的优点之一,就是它可以精确监控应用的活动。
  • 若服务(service)比点对点的交互(point-to-point interaction)更具优势,那就构建专门的服务。应为服务的构建定义和发布明确的标准。最重要的一则标准就是:该服务存在多个客户。
  • 不要迷信卓越中心(Centers of Excellence)。确保拥有一个小型团队,选择成员时应特别注重他们与其他开发者协同工作的能力。从一开始就通过合作共同构建将来作为服务层基础的公共服务。
  • 尽量构建直接与主机(mainframe)交互的原子服务,尽量用 ESB 软件来构建合成服务。保持原子服务层与合成服务层的分离。

可重用性(reusability)是 SOA 的一大卖点。不幸的是,这常常是一种信念,而非事实。能够支持这一观点的数据很少很少。Jonathan Mack 说:

要使重要涉众(stakeholders)信服,你的阐述要更加具体才行。虽然用图来解释“SOA 如何能帮助解决错综复杂的 系统所面临的问题”很不错,但公司里的涉众想更具体地知道这一努力将如何产生与成本相称的效益。而且,他们很擅长分辨 ROI 预估里数字的虚实。不论 你采用何种方式实施 SOA,假如你希望被认真对待的话,你就必须提供非常实在的数字。

至于 SOA 路线图,最近出现了两种流行的 SOA 实施途经:

  • 企业级(自上而下的)SOA 实施途经:风险很高,最初预算要几百万美元。另外,根据不同的规模与复杂程度,这类项目的耗费基本无法准确预估。
  • 草根级(自下而上的)SOA 实施途经:将 SOA 元素(包括服务和基础设施)作为现有业务驱动的 IT 任务来实现。这种途径一般不会成功。一来,最终得到的服务仅限于特定的业务问题,对企业的其他部分来说可能不适用(甚至是错的)。二来,构建 SOA 层所需的时间与开销将有损于项目里的其他业务需求。

Jonathan Mack 提出的另一种途径是:

逐步构建 SOA。大部分厂商已经觉悟过来,认识到了这是最合理的途径。然而,这做起来并不容易。企业服务总线 (Enterprise Server Bus,ESB)的核心元素——对不同系统间的信息进行转换与转化的能力,以及路由消息的能力——以及用于传递消息的消息传递基础设施,这些必须从一开始 就要具备。公共(共享的)服务(如登录、监控和异常处理等)也应该是最早实现的。

SOA 围绕 IT 业吵闹了将近 10 年,由于整体复杂性,至今仍没有万无一失的成功实施方案。每一个新的 SOA 项目“必须有明确的务实态度,必须对成功的实施步骤(及代价)有深入的研究和理解”。

查看英文原文: Overcoming Obstacles in Implementing SOA

2008-09-30 22:25635
用户头像

发布了 63 篇内容, 共 23.9 次阅读, 收获喜欢 8 次。

关注

评论

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

Vue基础语法--插槽(Slot)基础使用

Sam9029

Vue 前端 基础 9月月更

DDD领域驱动设计

源字节1号

软件开发 前端开发 后端开发 软件设计思想

对jdbc的讲解

楠羽

JDBC 笔记 9月月更

行业智能化走向何方?昇腾AICE带来的新范式,新起点

脑极体

数据治理的内核:数据质量

Taylor

数据治理 数据质量管理 数据质量 数据生命周期

为什么要用小程序容器做小程序生态

Geek_99967b

小程序 小程序容器 小程序开发

SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API

Jerry Wang

API 系统集成 SAP 微信开发 9月月更

业务应用小程序化,一种潜在的技术趋势

Speedoooo

小程序 移动开发 小程序容器

剖析智能运维的五大应用场景

穿过生命散发芬芳

智能运维 9月月更

2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。 package main import “fmt“ func app() f

福大大架构师每日一题

golang 福大大 选择题

SAP系统和微信集成的系列教程之一:微信开发环境的搭建

Jerry Wang

系统集成 SAP 微信开发 微信平台 9月月更

LeetCode-21. 合并两个有序链表(java)

bug菌

9月日更 Leet Code 9月月更

SD-WAN网络可靠性设计

阿泽🧸

9月月更 网络可靠性设计

跟着卷卷龙一起学Camera--AWB

卷卷龙

ISP 9月月更

深入学习SAP UI5框架代码系列之四:HTML原生事件 VS UI5 Semantic事件

Jerry Wang

JavaScript SAP SAP UI5 ui5 9月月更

时代变了,企业网站应该这么策划内容

石头IT视角

围绕“开源+深耕”策略和数字化监控手段,动态管理场景生态价值

易观分析

银行 易观 场景金融

ShareSDK Android端主流平台分享示例

MobTech袤博科技

an'droid

小程序容器技术加入到混合App开发队伍

Geek_99967b

小程序 混合开发

C++学习------iso646.h与limits.h头文件的源码学习

桑榆

c++ 9月月更

在小程序中开启直播的解决方案

Geek_99967b

小程序容器 小程序开发

深入学习SAP UI5框架代码系列之三:UI5 控件的渲染器

Jerry Wang

JavaScript 前端框架 SAP UI5 ui5 9月月更

轻松理解20种常用AI算法

Baihai IDP

AI 算法

动态规划-编辑距离

wing

小程序能否成为电商的突破口

Geek_99967b

小程序 小程序开发

计算机网络——速率相关的性能指标

StackOverflow

计算机网络 编程‘ 9月月更

设计模式的艺术 第八章建造者设计模式练习(开发一个视频播放软件,为了方便用户使用,该播放软件提供多种界面显示模式,例如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异。例如,在精简模式下只显示主窗口、控制条)

代廉洁

设计模式的艺术

技术团队如何高效落地代码CR

慕枫技术笔记

架构 后端 9月月更

LeetCode-26. 删除有序数组中的重复项(java)

bug菌

9月日更 Leet Code 9月月更

MVCC

周杰伦本人

9月月更

「工作小记」接口请求数据的缓存实践

叶一一

前端 设计思维 9月月更

克服SOA实施过程中的障碍_SOA_Boris Lublinsky_InfoQ精选文章