AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

微服务架构宜缓行

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

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

关注

评论

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

LED显示屏怎么翻新?

Dylan

LED LED显示屏 led显示屏厂家

Apipost正式发布《API行业白皮书》!

不想敲代码

API 白皮书 行业趋势 行业报告

如何从0开始搭建 Vue 组件库

京东科技开发者

npm UI vant Vue3 组件库

IoT Studio场景最佳实践——实践类

阿里云AIoT

阿里云 物联网 IoT

F5 2022财年安全营收10亿美金 服务应用安全做了哪些事?

F5 Inc

移动应用 安全 应用安全

OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%

阿里巴巴云原生

阿里云 开源 容器 云原生 openyurt

git使用ssh

刘旭东

git SSH

eKuiper 1.8.0发布:零代码实现图像/视频流的实时AI推理

EMQ映云科技

物联网 IoT 视频流 流式计算 企业号 2 月 PK 榜

Teradata的离开,是国内ToB服务转变的信号

ToB行业头条

分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

接口调试时如何实现接口之间的数据传递?

不想敲代码

从MVC到DDD转变过程中的一点碎碎念

为自己带盐

DDD CQRS

接口测试的测试要点

Liam

测试 接口测试 接口测试软件

深度访谈 Eolink 高管|研发团队如何更好地进行 API 管理?

万事ONES

项目管理 软件研发 API管理

聚焦现代化应用安全,F5的安全扩增,稳了!

F5 Inc

架构 安全 API 应用

打造自主可控云网算力,天翼云为湖南数字经济发展注入新动能

天翼云开发者社区

关于DataLeap中的Notebook,你想知道的都在这

字节跳动数据平台

数据库 大数据 数据治理 数据研发 企业号 2 月 PK 榜

人工智能 LLM 革命前夜:一文读懂ChatGPT缘起的自然语言处理模型Transformer

阿里技术

人工智能 自然语言处理

创建MQTT连接时如何设置参数?

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 连接参数

MQTT发布/订阅模式介绍

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 2 月 PK 榜

了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!

天翼云开发者社区

天翼云联合国际咨询机构IDC发布《中国医疗云建设与应用白皮书》

天翼云开发者社区

PostgreSQL:内存结构

天翼云开发者社区

serverless与容器优缺点

天翼云开发者社区

serverles

快速开发光伏电站数字孪生运维系统——实践类

阿里云AIoT

阿里云 物联网 IoT

如何在Excel中查找并高亮数据

Geek_249eec

C# .net Excel VB.NET

全网招募P图高手!阿里巴巴持续训练鉴假AI

阿里技术

人工智能

火山引擎数智平台的这款产品,正在帮助APP提升用户活跃度

字节跳动数据平台

大数据 客户数据平台 客户 客户数据 企业号 2 月 PK 榜

C#/VB.NET 如何在不同工作簿之间复制单元格范围

在下毛毛雨

C# .net Excel 文档操作

业务“兔”飞猛进,只因他们做对了这件事

华为云开发者联盟

数据库 华为云 企业号 2 月 PK 榜 华为云开发者联盟

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