写点什么

SOA 的好处、坏处以及尴尬之处

2009 年 11 月 20 日

如我们之前多次报道的,SOA 成功的一个主要先决条件是IT 与业务目标的对齐。在他们的新文章中,来自IBM 的Jens Andexer 和Standard Bank 的Willem Bekker 为我们带来了一些 SOA 的好处,坏处以及尴尬之处。

他们把对 SOA 的业务影响的分析分成若干类:

  • 敏捷性
    • 好处: 通过更快速地支持更加灵活的业务流程交付,SOA 为企业提供了更好的适应性去应对业务环境的变化,从而带来实际的市场利益。
    • 坏处: SOA 的实施通常需要引入一个新实体——卓越中心(Center of Excellence, 简称 COE),它为企业的其他部门提供技术专家。当涉及到 COE 的资源配给以及要做出关系整个企业的决定时,会引起 COE 与其他部门的冲突。
    • 尴尬:> 传统上以竖井方式组织的企业可能需要改变其组织结构才能完全享受到面向服务的优势。这种转变复杂且昂贵,并且阻力重重。
  • 对齐
    • 好处: 通过使 IT 服务与业务功能对齐,并且用业务的术语进行 IT 的服务功能的描述时,SOA 有助于业务和 IT 更加紧密地合作。
    • 坏处: 由于将服务的所有者及控制权转移到业务领域,SOA 改变了组织间的权利结构,这会激发来自哪些拥有既得利益并极力维护现状的人的反对。
    • 尴尬: SOA 实施需要组织结构的调整(往往是很大的调整) > 企业必须明白变得敏捷意味着什么,以及如何让自己能最好地利用敏捷。尴尬的事实是这本身就是最难学到的经验。
  • 业务流程改进
    • 好处: SOA 实施通常包括某些程度的流程的重新设计以带来提升业务操作效率的机会。
    • 坏处: 这对业务提出了新的挑战,并需要业务(部门或人员)更多地参与到服务的设计和改进中,由他们来驱动服务的开发流程,启动开发并改变生命周期。 > 这种角色并不是业务线的典型角色,而且会带来不和谐的角色变换。
  • 灵活性
    • 好处: 若没有好的软件工程实践,SOA 的实施基本不可能。好的软件工程实践通过缩短产品和服务进入市场的时间以及降低开发成本等方式让 IT 能更快速地响应业务需求。
    • 坏处: 一方面,服务的引入可以把服务实现隐藏在服务接口之后,从而为服务消费者创造了稳定的服务环境。另一方面,SOA 实施通常依赖于一组技术,比如业务流程的执行引擎或企业服务总线(ESB)等。 > 即使是优势超过成本,向原有的 IT 景观中加入新技术也不能让其更简单。但是,仅因为 IT 景观本身(即服务的实现)变得更复杂并不意味着其对外表现(即对外接口) 就不能更简单,服务的引入就使得 IT 内部的复杂性在外看来是个迷。
    • 尴尬: SOA 项目是基于它能比以往更快更低成本地交付业务价值的承诺而设立的。 > SOA 专注于技术以至于不太可能兑现这种承诺,因为他们不会以业务人员希望看到的术语去描述业务价值。只有当灵活性加速了业务需求的操作或者通过让运行系统更合理而减低其成本时,灵活性才能被看做业务价值。而关注技术的项目不会这么做。
  • 数据统一
    • 好处: 可互操作的服务的引入为创建统一的企业数据模型带来了机会。在这里,统一的意思是: > - 结构 —— 元素间的结构关系是相同的。
      • 语义 —— 语义指的是数据的使用。数据必须有统一一致的含义且不能被误用。
      • 格式 —— 数据的表现形式很重要
      • 类型 —— 类型是由数据的表现及施加在数据之上的一组行为决定的。
      • 时机 —— 何时更新某个属性,实时修改还是间期性批量修改。
      • 生命周期 —— 在什么情况下加入新数据、何时更新以及何时从数据库中最终删除它。
    • 坏处: 这样统一的数据模型往往并不存在,所以开发这样的模型通常会暴露出企业内部的数据是如何分歧的现状。
    • 尴尬: 获得所有数据特征的一致性几乎不可能: > 处理不一致性是设计服务接口过程中最大的挑战。尴尬的现实是统一的服务接口很难建立。
  • 运行监控
    • 好处: SOA 的原则自然地使业务流程监控更加容易,业务流程监控可用于度量业务执行是否沿着企业的战略目标的方向前进。
    • 坏处: 为业务流程开发反映企业目标的监控模型本身就需要很多专业性的工作。
  • 利用运行系统
    • 好处: 在多数情况下,SOA 能利用现有运行系统去实现服务的业务功能。这意味着现有系统的投资可以通过重新包装成服务的方式实现再利用。
    • 坏处: 有些运行系统本身并不容易被再包装成服务。
    • 尴尬: 在某些情况下,需要改造运行系统,或者添加一些逻辑或实现才能被再利用。

要获得 SOA 的成功,仅仅由 IT 引入一组 SOA 技术是不够的。它必须要由一组具体的业务目标和期望的驱动,并且需要业务和 IT 之间的紧密合作才能成功。

查看英文原文: SOA: The Good, the Bad and the Ugly

2009 年 11 月 20 日 22:263468
用户头像

发布了 184 篇内容, 共 65.8 次阅读, 收获喜欢 1 次。

关注

评论

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

记一次由Arthas引起的Metaspace OOM问题

闲鱼技术

Java 阿里巴巴

Angel推荐算法在游戏推荐中的应用

DataFunTalk

学习

explicit_defaults_for_timestamp 参数详解

Simon

MySQL 七日更

花火交易所软件开发|花火交易所系统APP开发

开發I852946OIIO

系统开发

LeetCode题解:42. 接雨水,双指针,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

Lambda【1】-- List相关Lambda表达式使用(上篇)

秦怀杂货店

Java Lambda

Mybatis【9】-- Mybatis占位符#{}和拼接符${}有什么区别?

秦怀杂货店

mybatis 预编译

星环科技助力商业银行机器学习平台建设

星环科技

FinTech

《爱奇艺安全应急响应中心漏洞评分标准2021》来了

爱奇艺技术产品团队

安全 安全漏洞

安卓开发快速学习!一个小例子彻底搞懂Android的MVP模式到底是什么?面试必问

欢喜学安卓

android 程序员 面试 移动开发

设计模式【1.1】-- 你想如何破坏单例模式?

秦怀杂货店

设计模式 单例 23种设计模式

一直在云上的星空联盟,“真”上云了

亚马逊云科技 (Amazon Web Services)

云计算 AWS

领域驱动设计DDD

积极&丧

Mybatis【8】-- Mybatis返回List或者Map以及模糊查询怎么搞?

秦怀杂货店

Java mybatis

架构师训练营第 10 周学习总结

菜青虫

极客大学架构师训练营

shark defi鲨鱼智能合约系统软件APP开发

开發I852946OIIO

系统开发

反垄断之下 区块链迎来新生?

CECBC区块链专委会

区块链

恐怖:这份Github神仙面试笔记,简直把所有Java知识面试题写出来了

Crud的程序员

Java 架构师 java程序员 java基础

开一个世界末日的脑洞

熊斌

我的世界 生活记录 七日更

Mybatis【7】-- Mybatis如何知道增删改是否成功执行?

秦怀杂货店

Java mybatis

WLAN网络规划和优化的必备知识点

架构师训练营第五周课后作业

万有引力

设计模式【1】-- 单例模式到底几种写法?

秦怀杂货店

设计模式

Android开发全套学习!不同层级的Android开发者的不同行为,学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

JustSwap交易所系统APP开发|JustSwap交易所软件开发

开發I852946OIIO

系统开发

字节跳动开源云原生机器学习平台 Klever

字节跳动技术团队

学习 字节跳动

附PPT丨如何构建数据库容器化PaaS

dbaplus社群

数据库 容器化

架构师入门感悟之十

莫问

Github标星5.3K,网易云的朋友给我这份339页的Android面经,附赠课程+题库

欢喜学安卓

android 程序员 面试 移动开发

爱奇艺用户分析平台实践:TB级数据查询秒级返回

dbaplus社群

大数据

毕业三年,如何达到月薪30K?我想跟你聊聊!!

冰河

程序员 程序人生 架构师 升职加薪 提升自我

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

SOA的好处、坏处以及尴尬之处-InfoQ