【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

微服务与单片应用之间的较量

  • 2014-08-22
  • 本文字数:800 字

    阅读完需:约 3 分钟

采用微服务是分解单片应用(monolithic application)的一种方式。这样做可以获得更高的解耦程度、关注点分离,以及快速部署等优势。但是,这并不是唯一也不是最好的方式。 Todd Hoff 对这两种架构方式进行了描述与比较

Todd 提到了今年早些时候在 twitter 上发生的一场辩论,这场辩论的参与者包括了 Adrian Cockcroft Sam Newman John Allspaw ( Etsy ),他们对微服务和单片应用之间的优缺点进行了比较。该辩论首先由 Adrian 发起,他声称在听了 QCon 伦敦 Etsy 的演讲之后,让他更清晰地认识到为什么单片应用是一个死胡同,而微服务应该可以取而代之从而能获得持续的可伸缩的部署。John 则指出,虽然微服务带来了更多的选择,但同时引入了更多的约束。而少量较容易理解的工具和模式反倒能带来优势。

Todd 将 Etsy 描述为一家成功的公司,因为该公司拥有着大约 150 个工程师,并且每天会部署超过 60 次的单个单片应用。在他的印象中,虽然很多人将单片应用视为反模式,但是 Etsy 通过采用例如持续集成、自动化部署、良好的监控等手段构建了这个大型的网站,并且做得很好,而且他们基本上都是从主分支进行部署的。

一个用于针对所谓的单片应用问题的解决方案是将它分解成一系列微服务,从而达到松耦合和独立部署这样的目标。但是 Todd 提出了质疑,微服务是达到上述目标的唯一或者最好的方式吗?他指出 Etsy 一天发布多次小型变更的方式也是可选方式的一个现成的例子。

Todd 强调 Etsy 目前一直在单片应用的方式下工作地很好,从而表示了对单片方式的支持。因为即使是在一个单片应用中,复杂度也可以被封装到每个服务之中。他将服务与代码库进行了比较,并表示只要是足够稳定的接口,也可以像拥有自己生命周期的独立产品一样对待。一旦接口发生变化,不管是使用代码库还是服务,新的版本就会创建。Todd 相信,只要基于合适的软件工程,单片的程序也可以工作地很好。

查看英文原文: Microservices vs Monolithic Applications

2014-08-22 00:391328
用户头像

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

关注

评论

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

跳转到@消息的位置

融云 RongCloud

即时通讯

阿里大师口述:让你可以在简历上写精通SpringBoot

编程 架构 springboot

融云 IM SDK 集成 --- 刷新会话界面和会话列表界面

融云 RongCloud

IM

Android 端如何添加自定义表情

融云 RongCloud

IM

金三银四跳槽阿里必备:分布式/高并发/Redis,不看我真的怕你后悔

比伯

Java 编程 架构 面试 程序人生

产品经理训练营 - 大作业

joelhy

产品经理训练营

融云即时通讯SDK集成 -- 定制UI(三) ——兼容Android Q

融云 RongCloud

即时通讯

融云如何把图片消息的图片上传到自己的文件服务器

融云 RongCloud

sdk

php的一些漏洞梳理

依旧廖凯

28天写作 3月日更

大作业

LouisN

融云即时通讯SDK集成 -- 通知检查

融云 RongCloud

即时通讯

一卷河图赋太虚:HMS Core CG kit与移动游戏新可能

脑极体

项目延期了,怎么办?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

短网址服务设计整理

程序员架构进阶

架构 设计实践 28天写作 实操案例 3月日更

LeetCode题解:91. 解码方法,动态规划(优化),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

融云即时通讯SDK集成 -- 定制UI(一) ——会话界面小改动

融云 RongCloud

即时通讯

融云清空历史消息 Android 端

融云 RongCloud

sdk

美丽的数学学习笔记(1)

方勇(gopher)

5 分钟部署一个 OIDC 服务并对接 nightingale

冯骐

CAS Nightingale 认证授权 OIDC Apereo

算法攻关-climbing-stairs(O(n))_70

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关

算命、运气和其他「Day 24」

道伟

28天写作

Wireshark 数据包分析学习笔记 Day13

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

融云即时通讯SDK集成 -- 定制UI(二) ——添加自定义表情库

融云 RongCloud

容器or虚拟机?

xcbeyond

Docker 容器 3月日更 专业术语

像这样操作 Python 列表,能让你的代码更优雅 | pythonic 小技巧

AlwaysBeta

Python

诊所数字化:医疗机构常见的系统整理

boshi

医院 医疗 七日更

假期无聊冰河开发了一款国民级游戏!

冰河

Java 游戏

融云 IMkit 拦截或监听所有发送消息

融云 RongCloud

sdk

唠一唠融云的消息扩展功能

融云 RongCloud

sdk

京东数科面试真题:常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?

Java 架构 面试

markdown如何插入图片、音频、视频?

xiezhr

markdown markdown语法 音频

微服务与单片应用之间的较量_SOA_Jan Stenberg_InfoQ精选文章