10 月,开发者不可错过的开源大数据大会-2021 WeDataSphere 社区大会深圳站 了解详情
写点什么

自顶向下还是自底向上—SOA 之争战火重燃

2010 年 7 月 21 日

开源 ESB 厂商 MuleSoft 在宣布其管理控制台发布时,声称支持使用自底而上的方法来实现 SOA 管理理念,在这之后,SOA 社区中一个一直以来争论不休的话题:使用自顶向下还是自底向上的 SOA 方法,又引起了大家新一轮的争论。

在 SearchSOA 上,Rob Barry收集了一些关于自底向上和自顶向下两种方法的观点:

当增建 SOA 时,一个自底向上的治理方法会关注于将围绕一些可以快速组装的 ESB 个体的服务集成起来。这种方法由于需要过度的更新和随后的返工而遭遇批评。与此同时,与之相反的“自顶向下”的治理方法包括了周密的计划和严格的政策规范。但该方法也存在缺陷,因为它需要花太多时间才能产生结果。

文章汇集的观点认为:基本上,如果主要的目标在于集成,自底向上方法是一个不错的出发点。他们也认同自顶向下的方法需要更多业务的介入。至于到底是使用哪种策略,他们的结论是这取决于业务和 IT 的关系。

Barry 在 ebizQ 上的一篇博文点燃了导火索,引起了不多但却很有意思的回复。在其中一个回复中,Avi Rosenthal 基于你正要构建的东西对两种方法进行了区分:

SOA 是一种架构风格。构建架构是自顶向下而不是自底向上的。Web Service,有时错误的被定义为 SOA,是技术性的。Web Services 是自底向上构建的。自底向上地构建 SOA 是错误的方法,有时也被称为 ABOS(一堆服务)。如果你自底向上的构建 SOA,那么很有可能你最终会得到很多冗余的东西,而毫无架构可言。尽管如此,如果仅仅通过自顶向下构建 SOA,其结果往往是得到不能构建在任何运行时产出物之上的感性架构,因此应该将 SOA 的一些工作放在自底向上的事情上。总而言之:最开始,SOA 是自顶向下的方法,但实际使用中需要同时结合自顶向下和自底向上两种方法。

在对该问题的另一则回复中,Michael Poulin 认为 SOA 以用户为中心的本质迫使了自顶向下的方法的使用:

如果从现在你已有的东西去构建服务——使用自底向上方法的话——最终很可能以你有什么而告终,而不是你的用户需要的。SOA 是以用户为中心、业务为导向的架构。以用户的需求为出发点将使你不得不去使用自顶向下的方法。这始终都可以作为出发点。但是,接下来,你最好评估你自身的能力,比如,挖掘你的最底层的资源来审视用户的需求。

这样的争论已经不是什么新鲜事儿了。早在 2005 年,John Crupi 就撰文称 SOA 是业务驱动的架构风格,正因如此只有自顶向下的方法才能获得成功:

自顶向下,意味着从问题,到架构,再到解决方案。它并不是指,从我们现有的东西着手,然后采用一些新技术对其进行包装,仅仅就因为我们可以使用这些技术。虽然自底向上的方法看起来是那么自然和简单,好像是治疗 SOA 失败的绝妙处方。

在那以前,还有其他一些诸如 Bill de hÓra 的博文那样反对“自顶向下或失败原则”的声音:

仅仅使用自顶向下方法的困难之处在于并不存在所谓的“顶”,现实中的 SOA 系统往往是分散式的——不存在架构杠杆支点或治理点,没有哪一个人有能力声称,“他可以十分钟之内做出决定或是下一个决定是有效力的,立刻就能付诸执行”。

这样的争论已经持续很多年了。到目前为止,看起来一些工具厂商已经选择了自顶向下的策略。


查看英文原文: The Top-Down vs Bottom-Up SOA Debate Revisited

2010 年 7 月 21 日 11:502275
用户头像

发布了 52 篇内容, 共 14.8 次阅读, 收获喜欢 2 次。

关注

评论

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

成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程

阿里巴巴中间件

阿里云 微服务 云原生 中间件 网关

校友录小程序开发笔记三十二:校友卡模块设计与实现

CC同学

机器翻译是否能替代人工翻译?从前世今生说起

博文视点Broadview

“828页Java面试手册”在我手,何愁offer不到手!

Java 程序员 架构 面试 后端

2021年9月国产数据库大事记

墨天轮

数据库 华为云 国产数据库 达梦 人大金仓

授人以渔,华为“开源雨林”计划致力推动开源生态发展

Geek_459987

专场预告 | DTCC数据库技术大会云溪数据库专场

浪潮云

云计算

明道云当选“中国电子商会数据资源服务创新专业委员会”理事单位

明道云

一加9 Pro怎么样?值得入手的全能旗舰

Geek_8a195c

我用 10000 张图片合成我们美好的瞬间

荣顶

JavaScript 前端 canvas 图形处理

百分点大数据技术团队:低代码平台实践

百分点科技技术团队

【优化技术专题】「线程间的高性能消息框架」终极关注Disruptor的核心源码和Java8的@Contended伪共享指南

李浩宇/Alex

Disruptor 10 月日更 异步执行 高性能框架

设计电商秒杀系统

木云先森

架构训练营

「 活动 」连续 3 天,企业容器应用实战营上海站来啦!

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 活动

浙江金华市正规等保测评机构有几家?在哪里?联系电话是多少?

行云管家

网络安全 等保 等保测评

万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践

JackJiang

websocket 即时通讯 IM

DCI架构是如何解决DDD战术建模缺点的?

华为云开发者社区

领域驱动设计 对象 建模 对象编程 DCI架构

教你用Java7的Fork/Join框架开发高并发程序

华为云开发者社区

算法 线程 高并发 Java7 Fork/Join框架

SSH是什么?怎么组成?有哪些优势?

行云管家

SSH 服务器 SSH工具 服务器管理协议

再见收费的Navicat!操作所有数据库靠它就够了!

云流

Java 数据库 架构 开源项目

每一个用到canvas的小伙伴都应该了解的fabric.js

荣顶

JavaScript 前端 canvas 图形处理 画布

Java 面试的“完美圣经”,有了这些还愁面试吗?

Java 程序员 架构 面试 后端

为绿色而生:智慧矿山可视化数治监管

一只数据鲸鱼

数据可视化 智慧矿山 煤矿 矿山

设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01

vivo互联网技术

自动化 后端 设计模式 软件架构设计 java

仅需三天,受人追捧的华为内部Java优化笔记登顶Github热搜!

Java 架构 面试 程序人生 编程语言

双减来了!人工智能如何促进教育领域转型?

京东科技开发者

人工智能 大数据 AI 教育行业

GitHub标星过万!阿里内部流传的JDK源码剖析手册到底有多强?

云流

程序员 jdk 面试 java

用21张图,把Git 工作原理彻底说清楚

git 架构 面试 后端

还在苦恼网络协议?阿里大佬这份笔记带你从入门到精通!

Java 架构 面试 程序人生 编程语言

Vue进阶(幺叁幺):父子组件传值实现数据深拷贝

No Silver Bullet

Vue 深拷贝 10 月日更

想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

华为云开发者社区

MySQL 运维 测试 MySQL数据库 Kubernetes 集群

自顶向下还是自底向上—SOA之争战火重燃-InfoQ