【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

Martin Fowler:SOA 的敏捷之路

  • 2008-09-25
  • 本文字数:1098 字

    阅读完需:约 4 分钟

在最近的一篇文章中,Martin Fowler 尝试探索演进式设计——一种极限编程的常用实践——对于 SOA 实现的适用性。他从两种常用的设计范型(计划式和演进式)着手开始讨论:

计划式设计于某一阶段做出设计并在此之后构建(编程)。在这种情况下,一旦你开始建造,设计改动将十分困难。演进式设计假定设计变更是一种常态,即使你已经完成了重大编程亦不例外。我将其概括为,XP 的实践为演进式设计提供了受节律的方式,因此使其比人们所认识到的更加实用。这一变化并未摈弃软件设计(它仍未消亡),但是确实深刻地改变了我们思考设计的方式。

计划式设计于 SOA 中得以支持的主要理由在于:它通过互联、可重用的服务向企业暴露它们公开接口的形式创建了企业 IT 系统的架构性蓝图。援引 Martin 的说法:

公开接口很难更改,因此你必须对其进行正确的计划式设计以保证不用去改动它们。计划式设计同时也是对人们在大多数组织所看到的那种混乱系统互联的一个回应。这种混乱就是设计不力的结果,所以感觉上似乎更好的计划式设计将使这种情况在将来不会发生。

但这就提出了关于 SOA 实现的真实稳定性的问题:

所以当我检查 SOA,或者其它任何设计上下文的时候,我提的最基本的问题就是:“变更是可预测的吗?”。只有当变更是可预测的,计划式设计方法才有效。我的感觉是,如果预测在单一应用的上下文中是不可预测的,那么跨越整个企业的可预测性根本无从谈起。如若我们在一个不可预知的上下文中使用计划式设计,我们会发现,无论计划得多么完美,终将被不可知的变更而削弱,带来的仍将是我们现在所处的这种混乱。然而,通常情况下,这种混乱将更加糟糕。因为在计划式设计中有着相当的沉没成本,很容易地就抵消掉了一个 SOA 成果试图创造的商业价值,特别在市场响应速度(time-to-market)悠关的情况下。

因此,SOA 实现的一个基本面应当是演化服务契约作为整体需求来实现变更的能力。Martin 提出了增量 SOA 实现将为实现的每一步产生业务价值这一论点来完成这篇短文:

演进式设计对于 SOA 的规模也有良好的伸缩性吗?我的观点是,我们已经有一个比大型 SOA 项目还要大得多的现成证明——Web 本身。Web 的构建是以非常松耦合的方式,并充满着许多不可预知的变更。它确实,从很多层面上来说,是一团糟——但于这个大杂烩工作得很好,每天都为许多人交付真正的价值。

在 SOA 实现中运用演进式设计并没有错。这里的问题是要能够把握好计划式与演进式两部分之间适当的平衡。纯演进式自底向上的方式通常会导致基于SOA 的集成,往往从长期来看无法交付真正的价值。一种计划式并兼顾演进的方式将会带来更大的成功。

查看英文原文: Martin Fowler: Can SOA Be Done With an Agile Approach?

2008-09-25 21:53822
用户头像

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

关注

评论

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

使用 yo 命令行向导创建 SAP UI5 应用

Jerry Wang

前端开发 SAP SAP UI5 ui5 8月月更

工程师如何拥抱数字化转型?

星策开源社区

工程师 产业数字化 数字化时代 智能化转型

程序员被京东淘汰转身痛哭,HR扎心了

千锋IT教育

图灵访谈 | Vue.js官方团队成员霍春阳:跨专业做程序员,是什么感受?

图灵教育

阿里P8 架构师耗时几个月编写的这份微服务深度学习宝典,GitHub 星标10K+

了不起的程序猿

Java 阿里巴巴 微服务架构 JAVA开发 java程序员

搜索引擎分布式系统思考实践

得物技术

搜索引擎 分布式系统

大咖说 | 云采销助力中小企业获客提升300%,交易提效58%

大咖说

数字化升级 云采销

Apache顶级项目Ranger和Alluxio的最佳实践(附教程)

Alluxio

Ranger Alluxio Apache 分布式 大数据 开源 8月月更

DR882-Qualcomm-Atheros-QCA9882-2T2R-MIMO-802.11ac-Mini-PCIe-Wi-Fi-Module-5G-high-powe

wallys-wifi6

今日头条三天点击破亿!四天精通springcloud微服务架构

退休的汤姆

社招 java架构师 秋招 #java spring、

DR600VX-Atheros-QCA9880-2T2R-MIMO-802.11ac-Mini-PCIe-Wi-Fi-Module-Dual-Band-2.4GHz-5GHz

wallys-wifi6

ONES 团队版50人以下免费,助力中小企业「弯道超车」

万事ONES

这个让全网眼红的红利行业,还需要人才吗

千锋IT教育

基于 Flink 构建大规模实时风控系统在阿里巴巴的落地

Apache Flink

大数据 flink 编程 流计算 实时计算

大厂面试真的很难吗?字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

程序知音

Java java面试 程序员面试 后端技术 八股文

天翼云为这场酷炫的元宇宙会议做了这件事

天翼云开发者社区

高效的工作从取消汇报开始|敏捷实践

LigaAI

高效工作 Scrum 敏捷开发 研发团队 每日站会

攻击面管理:企业向主动安全转变的开始

SEAL安全

攻击技术 黑客攻击 软件供应链安全

百度App 低端机优化-启动性能优化(概述篇)

百度Geek说

性能优化 运维 服务器

云成本支出不受控制怎么办?教您一招!

行云管家

云计算 云资源 云成本

语音交友APP:搭建部署流程及主要功能介绍

开源直播系统源码

软件开发 直播系统源码 语音直播系统

MobTech ShareSDK Android端快速集成

MobTech袤博科技

android Android Studio SDK 教程

人工智能应用落地的两难

felix

人工智能 开放api 算法模型

金山云团队分享 | 5000字读懂Presto如何与Alluxio搭配

Alluxio

金山云 presto Alluxio 大数据 开源 8月月更

基于 Flink x TiDB,智慧芽打造实时分析新方案

Apache Flink

大数据 flink 编程 流计算 实时计算

RT-Thread记录(十二、I/O 设备模型之UART设备 — 使用测试)

矜辰所致

RT-Thread 8月月更

RedisSyncer同步引擎的设计与实现

京东科技开发者

同步代码 key 引擎 redis 底层原理

中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结

阿里巴巴中间件

阿里云 开源 云原生 dubbo

Zebec社区利好频传,Galaxy Project上领取专属Zebec OAT

小哈区块

Zebec社区利好频传,Galaxy Project上领取专属Zebec OAT

西柚子

什么是外网?外网需要做等保吗?与内网的区别是什么?

行云管家

等保 等级保护 内网 外网

Martin Fowler:SOA的敏捷之路_SOA_Boris Lublinsky_InfoQ精选文章