写点什么

架构的“顺势疗法”

  • 2013-01-31
  • 本文字数:1292 字

    阅读完需:约 4 分钟

来自 CapGemini 的 Steve Jones 在去年撰写了一篇文章,阐述了在他是如何看待“思考已死”与“ IT 界将技术凌驾于思考之上”的。文章引出了漫长和热烈的讨论,Steve 的观点得到许多人的赞同。为了证明其观点,Steve 以 REST 为例,认为它作为一个技术被过分讨论和滥用,却没有充分的思考或证据来解释它在特定领域的效益。这在文章的评论中引来了大量的讨论,其中有相当数量的人反对这个例子,并认为 REST 优于其他一些 Steve 曾经推荐的技术,例如如 Web Services。

于是,Steve 在近期通过一个非常具体的例子,从另一方面来解释这类缺乏思考的行为方式:

有时候我们会在会议中遇到来自某人的令人赞叹的发言,今天我也有同样的经历,有人写道“我们自己就是病人,我们能停止假装自己就是外科医生吗?”她的观点很简单,过去在公司里已经遇到过这样的挑战,人们依据一些个人观点并在没有数据支持的情况下做出一些关键的决策,而这些决策实施的成果没有被追踪。

Steve 将其形容为“架构的顺势疗法”,用于描述 IT 界中人们仅依据个人观点便做出架构决策的现象。这些决策缺乏事实或案例来说明为何它们能够成功,同时除了部署外,实施的成果也没有被分析。Steve 使用这一现象来说明他的观点:

一个好的架构的挑战是类似于“X 不可行,是因为我们不是用集中的方式工作;我们需要 Y,因为我们采用分治的方式,而且 Y 已经被证明是可行的”。而架构的“顺势疗法”则提出“X 不可行,我们应该采用 Y”或更像是“X 不可行”。没有证据来支持这一“反馈”,基于这一反馈也无法进行建设性的改变。但如果出现任何问题,架构的顺势治疗论者会说:“你本应按我说的做”。

Steve 相信这些“架构的顺势治疗论者”可以用这种方式来建立其职业生涯,宣称“这对我是可行的”,同时这些人不能理解更多的可能带来成功的选择。此外,他相信这些人通常基于臆想的缺点,对经过证明的方式吹毛求疵;他还阐述道,对于那些坚持在企业整合中使用 REST,而对问题空间缺乏完整理解,或是不知道为何其他的技术更合适的人,是一个典型的“架构的顺势治疗论者”。 这些人描绘了架构的美好前景,却没有过亲自动手或是指导他人进行实践的经历。

无论你是否相信“架构的顺势治疗论者”的存在,每个人都应该认同 Steve 的这一论断:所有的架构决策应该基于事实或数据。即使该选择最终被证明是错误的,我们也应该把这一结果记录下来并从中汲取经验教训。

我反对人们基于一系列演示文稿和仅被顺势疗法佐证的个人观点,进行架构决策的方式(或实际的商务决策方式)。这些顺势治疗论者基于无知且自我的“信条”进行评论,扰乱进程并热衷于宣称“按我的方法做会更好”,却不会详细解释他们的方法的必需条件。

Steve 文章中关于 REST 的部分很容易成为焦点,容易使人忽视他努力阐述的中心思想:一些架构决策是在缺乏充分依据的情况下被作出的,而且也许还有一些人在传播推广这种决策方式。

查看英文原文 Architectural Homeopathy


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-01-31 04:512532
用户头像

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

关注

评论

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

从一个HTTP请求来看网络分层原理

IT视界

计算机网络 网络协议 HTTP 网络层

高并发存储优化篇:诸多策略,缓存为王

Coder的技术之路

缓存 缓存击穿 缓存雪崩 缓存架构

千亿级数据迁移mongodb成本节省及性能优化实践

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

设计微博系统中”微博评论“的高性能高可用计算架构

9527

🔎【Java 源码探索】深入浅出的分析Mutex底层源码

码界西柚

Java JVM mutex Condition 5月日更

知乎的一次29.7元的咨询

why技术

Java 程序员

和12岁小同志搞创客开发:如何选择合适的传感器?

不脱发的程序猿

DIY 传感器 创客开发 如何选择合适的传感器?

一文带你搞懂RPC到底是个啥

万俊峰Kevin

c++ 微服务 RPC RPC 协议实现原理 srp

鸿蒙操作系统发布在即 万物互联时代将给开发者带来更多机遇

科技汇

6月日更,优质更文,“定制”来袭~

InfoQ写作社区官方

6月日更 热门活动

SphereEx 获数百万美元天使融资,接力 ShardingSphere 开启 Database Plus 新篇章

SphereEx

软件研发中的错误假设

赫杰辉

设计 低代码 研发工具 x-series

react源码解析1.开篇介绍和面试题

全栈潇晨

React React Hooks react源码

QCon 演讲实录 | 大型软件团队的数字化项目管理实践

万事ONES

研发管理 团队协作 数字化 ONES Qcon

.Net Core Configuration Etcd数据源

yi念之间

etcd .net core

Spring 实例化方式有几种?为什么会用到 Cglib?

小傅哥

Java spring 小傅哥 cglib 手写框架

长连接网关技术专题(五):喜马拉雅自研亿级API网关技术实践

JackJiang

Netty nio 网关

华云大咖说 | 华云数据助力高校建设实训室平台

华云数据

初探可编程网关 Pipy

张晓辉

代理 网关 服务网格

走近设计模式:写代码一定要用设计模式吗?

华为云开发者联盟

设计模式 代码 软件设计 面向对象软件 GoF设计模式

重庆区块链公共服务平台—“渝快链”2.0正式发布

六一特辑丨8岁小程序员献礼儿童节:我DIY了聊天机器人,做3D printer,还想和外星人对话!

华为云开发者联盟

编程 程序员 开发者 代码 机器人

带你读论文丨异常检测算法及发展趋势分析

华为云开发者联盟

深度学习 异常检测算法 深度异常检测算法 深度半监督 群体异常检测

开发人员应该害怕低代码吗?

禅道项目管理

程序员 低代码 开发 低代码平台

阿里面试题:MySQL 磁盘满了,怎么办?

Java架构师迁哥

Java 面试基础:Java 语言的特点

三掌柜

5月日更

JWT(auth0):RS256非对称加密算法实现Token的签发、验证

西门阿杰

Java Token RS256

带你看懂MySQL执行计划

Simon

MySQL 执行计划

震惊,PostGIS还可以这样用!!!

华为云开发者联盟

数据库 分布式 GaussDB 地理数据库 PostGIS

OpenResty入门

捉虫大师

nginx openresty

【Flutter 专题】117 图解 Dismissible 滑动清除 Widget

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

架构的“顺势疗法”_SOA_Mark Little_InfoQ精选文章