写点什么

小团队中微服务的可怕之处

  • 2021-06-01
  • 本文字数:2160 字

    阅读完需:约 7 分钟

小团队中微服务的可怕之处

本文最初发表于 Medium 博客,经原作者 Manuel Reinfurt 授权,InfoQ 中文站翻译并分享。

 

微服务听起来很棒,每一个团队可以彼此独立工作而不影响其他团队。你可以轻松地维护和扩展微服务。你也可以在同一项目中使用不同的技术。它们如此稳定,所以,你的产品会有极好的扩展。在 2021 年,不应该把任何应用作为单体来构建,对吧?

 

很遗憾,微服务并非在每一种环境下都可以发挥作用,在盲目使用之前,你必须确定它们提供了你所需要的价值。我见过几个典型的项目,有 4~6 名开发者,基本上是一个团队。客户想要构建微服务的应用程序,因为它们非常棒。IT 经理同意了,于是团队开始设计应用程序。

 

用户管理?是的,这是一个微服务。访问权限管理?也是微服务。管理和预约?同样是微服务!通过连接到几个第三方 API 来管理和发送订单?这绝对是一个微服务。不错,现在每个人都可以得到一个微服务了!有时候你可能会违反物理学法则,每个人都有多个微服务。

 

恐怖开始

 

当你开始这个伟大的旅程时,你的团队需要确保每一个微服务都可以独立开发。每一个微服务都有它自己的 CI/CD 管道,自己的数据库和自己的版本化 API

 

现在,在启动一个新项目时,你可能只有一个团队。将在同一个团队中构建所有这些微服务。这种情况经常发生:一个人为了实现一个新功能而承担多个微服务。让我们就叫她 Ellie 吧。Ellie 需要在任何地方进行一些调整,同时进行测试。当她遇到问题时,她可以开始对两个微服务进行并行调试,以尝试了解它们之间的通信。如果它实际上是应用程序的一部分,那么 Ellie 就拥有一个更简单的工作环境,并且可以直接在应用程序中进行调试。此外,她还不需要为这些微服务之间的分布式、可能是异步通信编写大量定义和代码。

 

之后,你的应用程序的第一个版本将提供给你的客户。当你更新应用程序并尝试开始滚动更新时,你将面临在某一时间内运行微服务的多个版本。要么它们都与其他版本兼容(这也需要在开发过程中进行一些工作),要么你需要以某种方式优雅地更新它们。

 

在最坏的情况下,你正在构建一个分布式的单体应用。而且,在你的小团队里,你会发现微服务的所有缺点,但是很可能并没有从这些中获益。

 

微服务的亮点在哪里?

 

亚马逊和 Netflix 是最早提到他们使用微服务的大公司之一,他们解释了微服务为何如此有用。亚马逊提出了两个披萨原则,并表示:“如果两个披萨不足以喂饱一个项目团队,那么这个团队可能就显得太大了”。每个团队都应该有自己的微服务,它绝不应该在两个团队之间分割。要获得完全的所有权,团队必须对其组件及其相关的所有东西拥有完全的控制权

 

在单体应用中管理代码和依赖项,面对庞大的软件和数百人的工作,是相当麻烦的。因为微服务与其他所有东西解耦,这是一个完美的方法,可以扩展开发团队的数量。他们可以在自己的微服务上工作,使用已经构建的 API,并扩展现有产品。他们无须与其他 80 个团队中的每个决策保持一致,而且他们可能不必选择相同的技术或保持版本一致。

 

微服务对于管理大型软件来说并不是必需的,而是管理大量使用这些软件的人。

 

我现在该怎么办?

 

但这并不意味着微服务就会陷入混乱。但是,我要你真正思考微服务对你的意义,以及你是否能从中获益。当然,它们可以为你提供许多好处,但同时也增加了许多复杂性。假如这些好处对你无关紧要,你就可以跳过它们。

 

一个很好的软件开发范式是保持简单。既然可以简单地实现相同的结果,为什么还要选择更复杂的方式呢?你只会让它变得更难理解,以后也更难改变。

 

微服务同样如此。既然你的团队必须处理所有微服务,并完全控制应用程序,为何还要增加微服务的复杂性?你的产品可能会增长,但是两周内它并不会成为下一个 Netflix。就像俗话所说的:“过早的优化是万恶之源”,所以不要急着优化!

 

相反,享受一个相当单一的应用程序的好处。尽情享用更快的开发速度,因为你不需要担心改进微服务间的通信,不需要花费更多时间调试和测试微服务间共享通用代码的意义,不需要尝试协调复杂的分阶段微服务发布,甚至不需要在每个微服务上处理巨大的 docker 映像大小和内存需求,因为你正在使用 Spring Boot。

 


你也不需要全心致力于单体或微服务。你仍可以将应用程序划分为有意义的部分 —— 甚至遵循领域驱动设计的指导原则。有了合适的架构,你的代码和模块仍然可以被恰当地解耦,并且你的应用程序符合 12 要素原则。可以在相同的应用程序中运行这些模块,可以共享相同的构建管道,只需部署一个版本即可进行部署。

 

但我如何扩大规模呢?

 

你发布了你的产品,而且非常成功。你希望构建更多功能并适当地扩展。你雇佣并组建了多个开发团队,你是否真的从微服务中获益?现在正是将你的应用拆分到微服务的绝佳时机。

 

若你的应用程序构建正确,且不同模块已经解耦并易于理解,则拆分它们应该不会太困难。是啊,得费点功工夫。当然,你可以从一开始就直接使用微服务来避免这个问题。但是在这种情况下,你也必须从一开始就直接处理复杂的事情,并且拖拖拉拉。

 

保证在适当的时候选择合适的架构并且保持简单。关注代码架构和质量

 

作者介绍:

 

Manuel Reinfurt,InCloud 首席技术官。负责技术领导与新工作。精通 Azure、.NET/C#、云计算开发。

 

原文链接:

 

https://medium.com/incloud-hq/the-horror-of-microservices-in-small-teams-208f6660dd5

2021-06-01 14:583839

评论 1 条评论

发布
用户头像
听君一席话,如听一席话。
2021-10-22 15:05
回复
没有更多了
发现更多内容

用先进算力,为智驾提速:华为云CloudVeo智能驾驶云服务正式发布

极客天地

突破性AI设计工具Subframe:可视化React/Tailwind代码生成方案

qife122

前端开发 React

态势感知:数字时代的安全前哨与战略支撑

沃观Wovision

态势感知 舆情监测 沃观Wovision 舆情监测系统

CAD提取图形外轮廓的方法

极客天地

开源能源管理系统 MyEMS:赋能能源高效管理的创新利器

开源能源管理系统

开源 能源管理系统

腾讯Youtu-Agent正式开源,加速推动智能体从研究走向应用

极客天地

【硬核干货】把 DolphinScheduler 搬进 K8s:奇虎 360 商业化 900 天踩坑全记录

白鲸开源

开源 Kubernetes 技术分享 Apache DolphinScheduler 奇虎360

9.4 直播预告|工业时序数据库:从采数到智能决策

Apache IoTDB

开源能源管理系统 MyEMS:技术深耕与实践赋能的深度解析

开源能源管理系统

开源 能源管理系统

K8s集群+Rancher Server:部署DolphinScheduler 3.2.2集群

白鲸开源

大数据 开源 Kubernetes 云原生 Apache DolphinScheduler

【跨国数仓迁移最佳实践8】MaxCompute Streaming Insert: 大数据数据流写业务迁移的实践与突破

阿里云大数据AI技术

阿里云 数据仓库 数据迁移 MaxCompute

腾讯再次出手,现在视频号里也能直接召唤元宝了

苍何

贝锐洋葱头一键分享:代理、账号、网站登录状态全搞定

科技热闻

超级精灵再进化 smart发布EHD超级电混技术:每一程,比增程更成

极客天地

(一)数据模型架构原则:四层七阶,数据湖仓建模的“第一块基石”

白鲸开源

大数据 数据仓库 数据湖 技术分享

小程序热更新赋能App动态引擎无缝迭代

xuyinyin

阿里云携手MiniMax构建云原生数仓最佳实践:大模型时代的 Data + AI 数据处理平台

阿里云大数据AI技术

阿里云 数仓 Dataworks Minimax

海外达人营销常见误区与破解之道

Wolink

海外社媒营销 海外营销推广 达人营销

当数据消费者从人变成 Agent,所有软件都将被改写!

白鲸开源

AI 数据仓库 数据 开源商业化 白鲸开源

CAD编辑文本的工具栏不显示该如何处理

极客天地

SeaTunnel 如何给 MySQL 表做“精准切片”?一篇读懂 CDC 分片黑科技

白鲸开源

MySQL 大数据 开源 CDC Apache SeaTunnel

通过工具增强 LLM Agent 能力:veRL+ReTool 的完整实践指南

火山引擎开发者社区

字节跳动

Coze教程 | 第2章:Coze开发环境搭建与配置

测吧(北京)科技有限公司

闲鱼商品列表API数据解析

tbapi

闲鱼API 闲鱼数据采集 闲鱼商品列表数据 闲鱼关键词搜索接口

什么是 Active Directory 迁移?

运维有小邓

AD域 AD域管理 AD域迁移

合合信息参编《数据产业图谱(2025)》,助力绘制中国数字经济发展新蓝图

合合技术团队

人工智能 大数据 算法

从零开始学MCP | MCP 协议核心原理解析

测试人

JNPF报表设计,解锁数据呈现新方式

引迈信息

从零搭建AI应用:Coze还是Dify?看完这篇不再纠结

测吧(北京)科技有限公司

从数据到价值:iPaaS如何赋能企业实时决策

谷云科技RestCloud

API 数据传输 集成平台 实时同步 ipaas

捷途汽车1-8月累计销售402992辆,同比增长27.3%

科技热闻

小团队中微服务的可怕之处_架构_Manuel Reinfurt_InfoQ精选文章