前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终于有人抨击微服务了

终于有人抨击微服务了

作者头像
春哥大魔王
发布2023-03-22 18:08:20
2210
发布2023-03-22 18:08:20
举报
GitHub前CTO Warner近日表示,“我确信过去十年中,最大的架构错误之一,就是全面使用微服务。”

Warner不看好微服务的原因,大致是以下几个:

  1. 整个团队在一个大型单体应用中工作,相比微服务会少很多精力去考虑服务之间调用失败的情况。
  2. 随着企业架构的发展,分布式系统越来越多(包括了基础服务的微服务和应用系统的微服务),如果过多的应用系统微服务,将会导致更多的稳定性风险。
  3. 为了适配基础服务微服务和应用系统微服务带来的风险,会建设非常多冗余的系统,这些系统最后会表现为债务。

Warner建议单体到微服务的顺序是:单体 -> 服务 -> 微服务。

Warner认为,一家5-50人规模的公司,只需要单体,而无需使用微服务。

当企业规模变大时,企业遇到的不是技术问题,而是组织上的挑战。

过多的微服务会导致权限边界问题。同时,为了处理过多微服务带来的问题,需要引入更多的工具。

代码过多是债务,服务过多会带来稳定性和体验的风险,这些都是开销和风险。

因此Warner鼓励企业不盲目选择微服务,尽可能延长单体应用使用时间。

微服务体系的搭建,应该从基础设施开始,而不是上层应用。

应该尽可能选择库,而不是微服务。

微服务的优点很多人认为是简单,但大部分人其实并不了解如何正确的设计他们。

经验表明,一个设计糟糕的单体架构,几乎总好过设计糟糕的微服务架构。

良好的架构应该始于模块化,拆分单体的第一步是考虑基于特性功能分割代码和数据,这部分工作不一定必须通过微服务实现,在单体中做模块划分也是可以的。

从单体转变到微服务,可以先在数据库模式中识别功能,依照边界将实际的库表分组。

进而,将拆分的数据拆到不同的微服务架构上。

github过去优先抽取的服务是身份验证与授权。

uber在2020年放弃了微服务,转而采用宏服务。

uber采用微服务期间,每个微服务承接了很小的需求或功能,以至于一个人维护很多微服务的情况。这些冗杂的微服务带来了新的复杂度和挑战,比如监控、测试、持续集成、持续交付、服务SLA保证等问题。

后续uber对于微服务的划分,采用了基于某一项业务功能,团队由5~10个工程师维护,这样的服务被称作微服务。

看到这里不自觉的思考,大家所说的微服务是一件事吗?

比如uber的意思是每个功能点都拆成一个微服务?不然怎么会出现一个人负责好几个微服务的情况。

其实这种情况在很多公司很常见,比如我见过一个团队20个人,里面有20+服务的情况,最后就会导致一系列文中所说的问题。

比如边界问题,经常一个需求来了之后,看下来这个需求在好几个服务都可以做,但是总感觉只在一个服务下做又不合适,结果这个很简单的需求被拆成好几个技术需求,提给不同的服务,每个服务只做非常小的功能点代码的改造,把一个非常简单的需求搞的巨复杂。

一边做着这样边界不清晰的划分,另一边又在聊着降本增效,看着就很魔幻。

另一个问题是稳定性问题,因为服务多了,势必需要做一些稳定性保障,服务多了,同样一件事就需要做很多次,调动很多人,成本巨大,一件挺简单的限流或者降级改造,因为服务多了往往需要推几个月。

服务多了,想做异地多活的调度就更复杂了,因为你需要考虑所有微服务之间的流量调度现状,同样的一个异地流量调度改造,微服务拆分合理与否效果差别非常大。

总之,我觉得合适的才是最好的,合适需要考虑团队能力、业务发展阶段、组织沟通形式,这个不是一个纯技术问题,在技术之外的成本,如服务器成本、沟通成本、协作成本都是需要考虑的。

写到这里,不得不佩服贝佐斯,他不是技术出身,但最初很好的定义了SOA架构,通过API做数据共享,两个披萨团队做服务拆分。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档