写点什么

微服务架构宜缓行

  • 2015-06-15
  • 本文字数:989 字

    阅读完需:约 3 分钟

前不久,ThoughtWorks 首席科学家 Martin Fowler 发表了一篇博文,探讨 MonolithFirst 策略。他写道:

除非你的系统太复杂,作为单体应用会很难管理,否则不要考虑微服务。绝大多数软件系统都应该构建为单体应用。要注重在单体应用中实现良好的模块化,但不要试图将其拆分成单独的服务。

Tyler Treat 是来自 Workiva 的一名软件开发人员,同时也是咨询公司 Clarion Media 的创建者。近日,他发表了一篇博文《非面向服务的架构》(DOA)。文中,他对Fowler 的观点表示了赞同,同时他指出,团队迫不及待地采用微服务架构,一个原因是像Fowler 所说的那样,他们不了解微服务的固有开销,另外一个原因是他们只看到了像Netflix 公司这样的成功案例,却没有意识到那些公司并不是从微服务开始的,也就是说,是“微服务妒羡(microservice envy)”导致团队作出了那样的选择。

微服务确实有许多优点:“反脆弱性(anti-fragility)”、容错、独立部署与扩展、架构抽象、技术隔离。但并不是说采用了微服务就自然地具备了这些特性。比如,要具备反脆弱性,需要充分考虑分布式系统的不确定性,清楚异步、网络划分、节点故障、平衡可用性与数据一致性等问题。同样地,要具备可维护性和可扩展性,首先要有恰当的基础设施和组织结构。理论上讲,微服务可以提高开发速度,但在创建组织依赖时,“微服务佣金(MicroservicePremium)”可能会降低开发速度。所以,采用微服务架构需要具备一些先决条件,包括恰当的持续发布管道、能胜任的DevOps 和Ops 团队、审慎的服务边界等等。此外,周密的测试和集成模式也很重要。

而提到“单体(monolith)”,人们就会想到不可扩展、不可维护、缺乏弹性。但实际上,只要规模合理,单体系统也可以具有模块化、可维护、容错等特性。

因此,Treat 认为,自下而上的方法是一种更好的微服务实施策略。像Fowler 所说的那样,从单体或一个粗粒度服务的小集合开始,在有了足够的服务维护和部署经验后,再逐步分离出更细粒度的服务。

总之,微服务需要很高的组织和系统成熟度。否则,匆忙采用只能创建出一个“非面向服务的架构(disservice-oriented architecture)”。


感谢郭蕾对本文的审校。

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

2015-06-15 21:302847
用户头像

发布了 1008 篇内容, 共 431.0 次阅读, 收获喜欢 346 次。

关注

评论

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

56张图入门操作系统——内功心法,适合所有程序员

执鸢者

大前端 操作系统

开发一款视频直播有多吃香?

anyRTC开发者

奈学:Executor框架的概述

奈学教育

Executor Executor框架

优雅快速的统计千万级别uv

架构师修行之路

哈希表 数据结构与算法

浅谈技术管理之团队管理

Geek_37rwst

团队管理 技术管理

9大训练营免费开营!阿里云大数据团队的独门绝学全在这了

Apache Flink

大数据 训练营

企业应用开发或迎新趋势 “低代码平台”备受追捧

爱极客侠

区块链技术与福彩事业结合的变革

CECBC

区块链技术 福彩平台

进击谷歌:多线程下程序顺序怎么稳定不乱?

架构师修行之路

数据结构与算法

Pulsar 联合 TiDB 推出大数据场景数据应用分析解决方案

Apache Pulsar

大数据 InfoQ Apache Pulsar #TiDB

微服务架构的整套解决方案

xcbeyond

架构 微服务 IT建设

SpringMVC-技术专题-支持可版本管理的Restful接口

码界西柚

springmvc

Apache 顶级项目 Apache Pulsar 成长回顾

Apache Pulsar

kafka 云原生 中间件 Apache Pulsar 消息系统

LeetCode题解:66. 加一,新数组求和再翻转,JavaScript,详细注释

Lee Chen

大前端 LeetCode

认识分布式系统

多颗糖

分布式 分布式系统 分布式存储

奈学:Executor框架的概述

古月木易

Executor Executor框架

法定数字人民币将成中国金融新名片

CECBC

数字货币 人民币

华为:新政务风口下加宽“护城河”

脑极体

为什么 Bash 脚本总是不稳定?

柴锋

bash Linux DevOps 运维 Shell

奈学:reaseShared共享式释放锁

古月木易

reaseShared 共享锁

奈学:reaseShared共享式释放锁

奈学教育

共享锁

浅谈如何做好软件研发团队的盘点

Geek_37rwst

团队管理 技术管理

跟我一起基于Karma搭建一个测试环境(下)

Jack Q

大前端 测试框架 Karma

Week11

一叶知秋

架构师训练营 - 第十周 - 总结

Anrika

极客大学架构师训练营

实用心理学之识人篇

代码制造者

低代码 零代码 职场成长 编程开发 职场搞笑

区块链技术助力基础建设

CECBC

新基建 区块链技术 国家电力

微服务-技术专题-设计原则AFK

码界西柚

知识点梳理:聊聊iOS SDK数据采集那点事儿

易观大数据

微服务-技术专题-使用 API 网关构建微服务

码界西柚

微服务

核查框架新的选择

柿子

jsr-303 核查框架 butterfly

微服务架构宜缓行_SOA_谢丽_InfoQ精选文章