极客视点
极客时间编辑部
极客时间编辑部
113243 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/06:05
登录|注册

这些公司为什么放弃微服务?

讲述:丁婵大小:8.36M时长:06:05
你好,欢迎收听极客视点。
近几年,有无数的中小团队在微服务上陷入了挣扎。微服务有好处但也存在弊端和风险,业务不断发展,微服务也更加复杂,一些企业权衡利弊后甚至选择了退回单体架构。此前,Simple Thread 联合创始人贾斯汀·埃瑟里奇(Justin Etheredge)整理了很多公司放弃微服务的原因,InfoQ 中文站对其进行了翻译,重点内容如下。

Uber

4 月 6 日,Uber 支付体验平台的工程经理格格利·奥罗斯(Gergely Orosz)发布推文,表示其团队的架构方向已经发生了变化,放弃微服务,转而使用宏服务。奥罗斯表示,“最早,Uber 通过构建微服务来完成很小的需求或功能,以至于出现了很多由一个人构建维护的微服务。这些微服务的存在带来了新的复杂性和挑战,例如监控、测试、持续集成 / 持续交付(CI/CD)、服务级别协议(SLA)、跨所有微服务的库版本(安全和时区问题)等等。”
因此,在创建新平台的时候,Uber 支付体验团队对新服务进行了更加深思熟虑的规划:不再只是完成一件事,而是使其服务于一项业务功能,由 5-10 个工程师负责维护。奥罗斯把这样的服务规划称之为宏服务。

Botify

Botify 是一家从事 SEO 优化的公司,其平台于 2012 年在 Python/Django 技术栈上创建。2016 年初,整个 Botify 平台都是通过 Django 应用程序的负载均衡集群提供服务。
2016 年年底,Botify 工程团队想让工程师和产品经理拥有更多的局部所有权,从而可以快速轻松地将他们的产品和技术栈投入使用。为此,他们决定将他们的 Django 应用程序拆分为微服务。当时,他们的团队大约为 15 人。他们从身份验证和授权入手实现第一个微服务,将 Django 应用程序当前的一部分功能转移到微服务中。微服务模块也需要和其他的 Django/Python 单体模块进行通讯。
Botify 的平台是一个企业级 B2B 服务,帮助网络上最大的网站改善他们的 SEO,主要挑战在于对客户数据的分析。处理用户相关数据的微服务架构旨在服务于高流量的 B2C 平台,而 Botify 的挑战在于动态地聚合数以 GB 的 SEO 数据,使其在几秒钟内可用。对大约一万名客户的元数据以毫秒为单位进行响应,这项任务不需要高度可伸缩的微服务架构。恰恰相反,Botify 的后端到后端通信减慢了这些简单的检索过程,花费了更多的时间。
鉴于每天都要在 JavaScript 身份验证后端和 Django 模块之间频繁地来回切换,权衡架构的优缺点以及潜在的迁移成本后,他们做出了大胆的选择,将身份验证后端重新加入到 Django 单体中,并于今年 2 月停用了微服务。

Managed by Q

在 2017 年的时候,办公管理软件公司 Managed by Q 的技术团队大概有 20 名工程师,应用程序是一个部署在 ECS 上的 Django 单体。为了赶上现代化开发实践的步伐,他们开始转向了微服务架构。
但是,每多一个新服务,就会增加一些基础设施。CI/CD 的配置也会增加,还需要进行第三方服务(比如 Rollbar/Sentry)配置。依赖也需要更新,而且需要更新依赖的地方越来越多。基础设施团队在项目上花了很多时间,为每一个服务重复着枯燥无味的工作。而且小型的服务容易被人忽略,在运行起来之后,基本上会被搁在一边,最后就会过时。
如果服务边界没有搞清楚,还会显著降低功能的开发速度,这是微服务的一个很大的风险点。开发一个跨多个服务的功能需要做更多的工作,而重构一个跨多个服务的功能是一个噩梦。如果服务边界很清晰,大部分项目只会影响到一个服务。但是,对于初创公司来说,它们的发展方向是不可预测的。一个产品的两个部分在一开始可能是完全独立的,但一年之后可能会变得紧密耦合起来。所以,要完全清晰地定义服务边界不是件容易的事。
最后,在转向微服务两年之后,他们开始合并微服务。一些微服务被合到了单体中,其他的则合并成较大的服务。在一年中总共移除了 9 个微服务。大小合理的服务承担着相当大的责任,大多数功能开发都可以在单个服务中完成。
微服务已经被这代人当成银弹,不过,上面提到的这些企业已开始用更挑剔的眼光来看待它。这些例子中,他们认为转向微服务的工程开销太大,不值得。而这样的案例还有很多,重要的是,不要为了微服务而做微服务,尤其是中小团队,微服务或许不是最优解。
以上就是今天的内容,希望这些公司的踩坑经验能帮助到你。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • creasylai19
    还是没明白,比如botify中把权限验证服务又迁回单体,那不又是每个单体都要做一套权限校验么
    1
  • K战神
    微服务的划分是以什么作为边界划分, 业务功能?访问量? 每次独立一个微服务, 就需要重新集成基础设施,配置基础设施等工作。 每次需求变更真的让开发变得更快了么? 我们现在也存在一个人维护好几个系统和服务的局面,会不会造成火力分散问题? 就是每个人心里对这些微服务的必要性还是有一些顾虑的,运维重,开发紧,需求散。
收起评论
大纲
固定大纲
Uber
Botify
Managed by Q
显示
设置
留言
2
收藏
33
沉浸
阅读
分享
手机端
快捷键
回顶部