写点什么

微服务架构宜缓行

  • 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:302804
用户头像

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

关注

评论

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

GPU荒漠,算力短缺背后的时间竞赛与解决方案|TE解读

TE智库

前端开发进阶:前端开发中如何高效渲染大数据量?

袋鼠云数栈

大数据 前端

JMeter 接口自动化测试的使用技巧

Liam

测试 Jmeter 性能测试 自动化测试 测试工具

徐州堡垒机采购选择哪家?行云堡垒可以吗?

行云管家

网络安全 堡垒机 徐州

2023大健康博览会|2023广州国际健康产品展会

秋硕展览

对话英特尔院士Tom Petersen:持续优化锐炫驱动,游戏性能强劲提升

E科讯

私密信息管理工具 Vault 快速入门

极限实验室

加密 valut 安全工具

文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题

福大大架构师每日一题

福大大架构师每日一题

探析低代码开发平台的核心能力

互联网工科生

软件开发 低代码 企业级应用程序开发 JNPF

自带云盘的内网即时通讯软件,保障数据在公司局域网内安全流通

BeeWorks

数字藏品NFT系统开发

张泽🐟APP小程序开发定制

区块链、 数字藏品开发

链动2+1模式系统开发

张泽🐟APP小程序开发定制

商业模式 系统开发、 营销模式

软件测试|使用ChatGPT帮助我们生成测试数据

霍格沃兹测试开发学社

软件测试|如何使用ChatGPT生成自动化测试脚本

霍格沃兹测试开发学社

铜锁 SM2 算法性能优化实践(三)|快速模逆元算法实现

铜锁开源密码库

开源 开发者 算法 性能优化 密码学

五脏俱全,搭建部署多人语音厅源码功能分析

山东布谷网络科技

直播源码

ARTS打卡第一天

请务必优秀

私有化部署即时通讯平台,30分钟替换钉钉和企业微信

BeeWorks

OpenHarmony应用实现二维码扫码识别

OpenHarmony开发者

OpenHarmony

App备案来袭,开发者如何应对选型

Onegun

混合应用开发 app备案

Tongsuo 8.4.0-pre2 发布!

铜锁开源密码库

开源 密码学 版本更新 版本发布 铜锁

PolygonStore,一款“业务驱动”而生的 NoSQL 多模数据库产品

TRaaS

如何使用NLP库解析Python中的文本

互联网工科生

Python nlp Transformer

东郊到家APP系统开发

张泽🐟APP小程序开发定制

APP开发 系统开发、 预约小程序

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