写点什么

与 Susan Fowler 探讨生产就绪微服务之问答

  • 2017-02-07
  • 本文字数:1848 字

    阅读完需:约 6 分钟

Microservices.com Practitioners 峰会是为从业者量身定制的微服务会议,峰会专注于介绍大规模采用微服务的实际应用。峰会将会于 2017 年 1 月 31 日在旧金山举行。演讲者包括来自 Uber、New Relic、Lyft、PayPal 和 Google 的微服务从业者。

Susan Fowler 是 Stripe 的工程师,她是《生产就绪微服务》一书的作者,并受邀会在峰会上发言。在 Uber 的时候,Fowler 致力于标准化微服务,并将微服务嵌入各种关键业务团队,帮助他们的服务变得更加可靠。

在峰会之前,InfoQ 采访了 Fowler,和她讨论了成功实施微服务架构的技术、业务和文化挑战。

InfoQ:可以在哪里看到微服务架构的理念和大多数组织的实际系统相关联,甚至是产生冲突?

Susan Fowler:在相关联方面,我认为采用微服务架构是很多软件应用程序发展的自然步骤。Monorepos(monoliths)很难大规模使用,许多工程组织可以发现,并确实发现现在规模化发展受到了限制(没有并发性,没有分区等等)。他们还发现,开发速度停滞不前,因为一旦应用程序很庞大且有很多工程师同时工作于相同的应用程序上时,在 monorepo 上部署开发就变得不太可能(从组织的角度来看)。一旦真的发生这种情况,最简单、最容易规模化的方法就是采用微服务架构。

这也正是大多数冲突发生的地方。由于采用微服务往往是软件系统发展的“下一步”,所以大多数系统的设计中都没有考虑到微服务架构,这会产生很多问题,其中一些是组织性的,另一些是技术性的。

比如说,从组织的角度上看,最终会有很多孤立的、没有关联的团队,除非你事先计划了很多跨团队协作,否则他们闷头做自己的微服务工作,但不知道系统的其他部分工作。最终微服务开发团队之间还会缺乏相互信任,他们不确定自己的服务所依赖的其他微服务是否是可靠的、稳定的、规模化的等等。

你也可能发现(与许多公司做的一样),很难在微服务生态系统中雇佣并运营单独的运营组织,开发人员需要学习接管他们微服务的运营职责(很多人可能会不习惯,或没受过培训,或准备开始做)。

在技术方面,比如说你可能会碰到很多奇怪的微服务,这些微服务没有什么意义,相互之间没有很好联系。这是因为它们之间的边界和它们的功能从没有在原来的 monolith 中恰当地定义过。

我经常能看到的另一个技术挑战是,微服务的基础设施需要非常复杂的微服务架构才能成功,许多习惯于运行 monolithic 应用程序的公司通常没有考虑到这些方面。

InfoQ:对于拥有传统 monolithic 系统工作经验的开发人员,他们想要转到写微服务需要学习的最重要技能是什么?

Fowler:当他们的组织开始采用微服务架构时,开发人员需要学习的最重要技能是他们最需要的操作技能。Monolithic 应用程序中,分离应用程序的开发和应用程序的维护相对容易,并且能在两个单独的团队之间拆分开发人员和运营人员的职责。在微服务架构中,情况并非如此,通常会有几十个、几百个或几千个微服务,因此对于微服务开发团队来说,分别雇佣开发人员和运营工程师是没有用的。此外,微服务架构允许开发者快速变动,因此从技术角度考虑也不需要有专门的运营工程师运行服务,开发者是最了解服务的工程师,他们能最好地运行它。

InfoQ:除了开发人员需要掌握的新技能,还要什么文化或组织的改变来支持微服务?

Fowler:真是很好的问题,要回答这个问题需要牵涉到很多内容(我写的书《生产就绪微服务》都是在回答这个问题!)我认为工程组织最要做的事情就是建立非常稳定的、可靠的、先进的应用程序平台基础设施(在微服务架构四层模型的第三层)。

InfoQ:正如你的博文《四层微服务架构》中所述的一样,成功的 MSA 需要成熟的基础设施层次。虽然单个微服务并不很有用,但每个系统都要从无到有。那组织如何管理好从遗留系统转换到微服务所需的开销?

Fowler:我认为大多数小公司不一定能从微服务架构中获益,而且我不认为大多数公司应该打破他们的遗留系统而转换到微服务。

在有些情况下,微服务真的非常非常好。首先,如果应用程序或是系统有点复杂,但是它的各种功能之间可以划分出非常清晰的边界,那么转为微服务并不会很痛苦(前提是,如你所述,所需的基础设施能够到位)。我觉得这是比较罕见的情况。

第二种情况是大多数工程师和公司经历的微服务故事:应用程序已经不能再扩展了,可扩展性的限制造成了严重的性能和稳定性问题,不能再对应用程序做些什么了,开发速度停滞不前。在这种奇特的常见场景中,调整微服务所需的额外基础设施工作非常容易:无论是构建基础设施,还是未来应用程序无法规模化。

查看英文原文 Q&A with Susan Fowler on Production-Ready Microservices

2017-02-07 18:0010538
用户头像

发布了 218 篇内容, 共 78.5 次阅读, 收获喜欢 76 次。

关注

评论

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

网站进行IPv6改造的步骤有哪些?一文看懂

防火墙后吃泡面

特权账号:企业安全的关键要素与防护策略

天翼云开发者社区

安全 特权账号

办公网络流量隔离:为高效办公保驾护航

天翼云开发者社区

安全 网络

CST如何生成简单通用的IBIS模型文件

思茂信息

cst CST软件 CST Studio Suite

用户实测YRCloudFile KVCache丨以存代算显著提升AI推理性价比

焱融科技

AI推理 大型语言模型LLM KVCache

“最近我给有代码洁癖的同事墙裂安利了通义灵码”

阿里巴巴云原生

TiDB 替换 HBase 全场景实践指南 ——从架构革新到业务赋能

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

HarmonyOS Next音乐播放器组件开发实践

知识浅谈

鸿蒙 开发工具 HarmonyOS HarmonyOS NEXT 实践分享

“全球金牌敏捷课程” · 7月19-20日CSM认证课程 · Jim老师引导讨论AI & Agility话题

ShineScrum

敏捷 敏捷教练 CSM认证 CSM认证培训 敏捷认证

葵花药业集团与用友战略签约,共启医药行业数智化新篇章

用友BIP

Blender 入门教程(四):动画制作

北桥苏

游戏引擎 blender CocosCreator

什么是零信任

天翼云开发者社区

零信任 SDP架构

区块链RWA系统开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

区块链ETF软件系统的技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

1688 商品数据接口终极指南:Python 开发者如何高效获取标题 / 价格 / 销量数据(附调试工具推荐)

tbapi

1688商品列表接口 1688API 1688商品数据采集

WebGL软件开发的技术方案

北京木奇移动技术有限公司

软件外包公司 webgl开发 webgl技术

针对大事务问题对业务存储过程改造

GreatSQL

TiDB 中新 Hash Join 的设计与性能优化

TiDB 社区干货传送门

“最近我给有代码洁癖的同事墙裂安利了通义灵码”

阿里云云效

通义灵码

你的产品功能真的必要吗?

Feedalyze

效率工具 产品开发 产品迭代 用户反馈 用户需求

WebGIS项目开发技术方案

北京木奇移动技术有限公司

软件外包公司 webGIS开发 webgl开发公司

AI大模型入门 三:5分钟速成Prompt公式,让AI生成代码的通过率从30%到90%

测试人

人工智能

让用户反馈成为产品迭代的动力源泉

Feedalyze

效率工具 产品经理 产品迭代 用户反馈 用户需求

中国电信重塑天翼AI云手机,为用户开启云端智能新生活

极客天地

区块链RWA软件系统技术方案

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

MCP与华为云CSE珠联璧合,打造AI时代微服务生态引擎

华为云开发者联盟

微服务 华为云开发者联盟 MCP 华为云CSE

深化合作!港华集团数智升级,构建一体化管控平台

用友BIP

0.4元/TB/月!天翼云HBlock打响软件定义存储价格战

天翼云开发者社区

存储 天翼云HBlock

【AI智能助手】轻松打造智能助手,定制专属个性风格

JEECG低代码

AI大模型 AI应用 AIGC AI智能助手

1688API接口终极宝典:列表、详情全掌握,图片搜索攻略助你一臂之力

tbapi

1688商品详情接口 1688商品数据接口 1688API 1688图片搜索接口

从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB

TiDB 社区干货传送门

开发语言 应用适配 数据库连接 8.x 实践

与Susan Fowler探讨生产就绪微服务之问答_SOA_Thomas Betts_InfoQ精选文章