2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Serverless 比你预期要贵得多

  • 2021-04-06
  • 本文字数:2186 字

    阅读完需:约 7 分钟

Serverless比你预期要贵得多

在运营一个持续集成(CI)公司多年后,你会发现架构决策中的许多隐藏成本。在本文,我想谈谈 Serverless 和它的主要替代方案——微服务(容器化)架构,它们之间的实际区别。

架构介绍:Serverless 和容器+CDN

我们在过去几年看到的新产品中的绝大多数后端架构都属于这两者之一。

Serverless

serverless 核心思想是指定一个策略来创建新的 Web 服务器,而不是自己启动它们。这样一来,如果你的产品在某个地方出彩,获得巨大的流量爆发,你的云提供商可以启动许多 Web 服务器副本,然后在流量减少时关闭这些 Web 服务器。



serverless 通常与其 AWS 商标名 Lambda 互用


当然,serverless 最终还是会使用 Web 服务器。关键是你不必自己去创建这些服务器。你所要做的只是指定构建它们的方法,然后你的云提供商会随着并发请求数量的增加或减少来创建 Web 服务器的副本。即使对于用户很少的小项目,你也可以通过在夜间没有人访问你的网站时关闭 Web 服务器来节省资金。

容器 + CDN

你可以将托管网站的计算成本最高的部分包给其他人,而非指定一个方法来创建 Web 服务器。这就是 CDN 的思路。当一个 Web 服务器的运行速度变慢,通常是由数百个请求要获取相同的不怎么变的资源。CDN 会为你负责这些常见的请求,例如静态图片。



容器(左)和 CDN(中间)处理来自用户的数百个请求


在这种架构中,你的网站用户会从 CDN 请求资源,CDN 将响应大部分(大约 90%)请求。只有那些不能明显缓存的请求会被转发到你的容器。

概述:serverless vs 容器

  • serverless“Web 服务器”通常是如何创建真正的 Web 服务器的方法,然后你的云服务商会在一个访问者首次请求某些东西时启动一个 Web 服务器。

  • 容器通常启动速度慢得多,因此你需要保持至少一台 Web 服务器 24/7 运行,以防有人访问你的网站。

Serverless 理论上看起来更便宜

当 AWS Lambda 在 2014 年推出时,它听起来不可思议:1GB 内存,每毫秒 0.0000000167 美元的计算量。一个典型的 API 请求可能是 20ms,因此你需要为每个请求支付 0.000000334 美元。


由于大多数工作负载都非常“火爆”,因此即使是用 Lambda 托管一个非常流行的服务,你也只需要支付不到 100 美元每年。


相比之下,对大多数产品来说,一个类似的容器+CDN 架构可能耗费每年 500 美元。


当然,这是一个非常简单的比较(弹性负载均衡、CDN 入口/出口、serverless 也可以使用 CDN 等...),但对于今天的大多数在线产品来说是正确的。在其它同等的情况下,serverless Web 服务器的成本是类似的容器的 10%-20%。

开发者工资是 serverless 的隐藏成本

基础设施成本是一个很好的指标——很容易预测,是比较一个“好架构”与一个“坏架构”的便捷方法。


然而,基础设施成本与开发人员的工资相比却相形见绌。每年 500 美元的容器会由一名每年 75000 美元的开发者维护。


实际上,人力成本是很多公司低估的。如果你有一个本地无法复现的 bug,开发人员使用一个闭源的 AWS 账户会很难复现和调试它。


三个因素结合在一起让用 serverless 进行开发变得异常困难:


  • 你不能本地模拟 serverless 实例,只能在云上模拟。

  • 很少有公司能创建它们的生产环境的基础设施的副本。开发人员通常会花几个小时来申请合适的环境,并确保没有其他人同时使用这个环境。

  • 开发人员很少能访问生产环境资源,因此它们不得不花费数个小时协调一个编程会话才能在生产环境调试。



世界各地的 slack 工程频道的一个常见场景


如果单个开发人员每周修复一个 bug,并且由于上述因素,修复每个 bug 所需的时间延长一个小时,那么你的公司每年会为单个开发人员的生产力损失支付 1872 美元。这个数字已经是最初成本差异的 4 倍。


相反,一个容器架构可能完全运行在一个开发人员的电脑上,因此每个开发人员都可以在他们自己的笔记本上重现 bug,而不必使用一个演示(staging)环境。

另一项成本:serverless 会给客户带来更多 bugs

出于与前一点相似的原因,使用一个持续集成/持续部署系统自动测试一个 serverless 架构要困难得多。


容器化架构更容易进行测试,因为你可以在单个 VM 中运行它。想要运行持续集成,serverless 架构需要请求你的云服务商为每次更改进行部署。



系统的最终测试是端到端(end-to-end,E2E)测试:通过创建一个假用户,然后像一个真用户一样与整个应用程序进行交互,来验证通用工作流程。如果可以根据需要创建架构副本,这些测试就能针对提出的更改自动运行。


在许多公司中,demo 演示中的一个 bug 可能意味着损失 6-7 位数的销售额。这些 bug 通常是影响不同组件交互的看似无害的更改结果。如果开发人员不在每次更改后测试这些流程是否继续生效,那么就很容易损坏一个“立即支付(pay now)”按钮或者登入。


如果整个堆栈能运行在单个机器上,那么它就可以不怎么麻烦地运行在一个持续集成服务商上。相比之下,一个 serverless 栈可能需要为每个更改在你的云服务商中从头创建整个环境,这会花费 10 倍更长的时间。

解决方案

显然,对于服务器的解决方案是让供应商采用一个通用标准(AWS kubeless 或 AWS OpenFAAS)。只要 serverless 与闭源云产品同名,那么就会因为开发人员的生产力的损失而大大增加成本。


实际上,最好的解决方案是完全避免使用 AWS Lambda 或 Cloudflare Workers 这样的平台作为核心基础设施,直到能自行托管它们进行问题复现和测试。


对于几乎每一个架构决策,托管成本都比开发者行动缓慢的成本要重要得多。在考虑到需要使用基础设施工作的开发人员的时间成本之前,不要因为价格来进行架构决策。


原文链接:


https://layerci.com/blog/the-hidden-costs-of-serverless/

2021-04-06 14:283772
用户头像

发布了 165 篇内容, 共 80.4 次阅读, 收获喜欢 343 次。

关注

评论

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

送你一瓶好运喷雾,2024BAT大厂最新Java热门面试题及答案总结

Summer

Java 程序员 面试 架构师 大厂

鸿蒙原生开源库ViewPool在OpenHarmony社区正式上线

最新动态

Taro 鸿蒙技术内幕系列(四):JDImage 自研鸿蒙图片库

京东零售技术

taro 鸿蒙

【YashanDB知识库】update (子查询) set ORG_ID_STAN -ID 改写

YashanDB

数据库 yashandb

【YashanDB知识库】复合索引下in大量参数查询性能慢

YashanDB

数据库 yashandb

GPT 论文作者 Alec Radford 离开 OpenAI,曾参与开发 Whisper;闪极 AI 拍照眼镜支持全天候记录

声网

一份榜单带你重温2024年那些值得追的影视综漫

最新动态

产品品牌战略升级!原WorkPlus正式改名为BeeWorks,版本重要更新

BeeWorks

【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写

YashanDB

数据库 yashandb

【YashanDB知识库】XMLAGG方法的兼容

YashanDB

数据库 yashandb

Kube-state-metrics 可观测性最佳实践

观测云

kubernetes 运维

工作中这样用MQ,很香!

不在线第一只蜗牛

Java MQ 消息列队

Flink 2.0 存算分离状态存储 — ForSt DB

Apache Flink

大数据 flink 实时计算 数据处理 存算分离

怎么制作甘特图?10个甘特图模板案例盘点!

职场工具箱

项目管理 甘特图 办公软件 绘图软件 甘特图软件

豆包MarsCode上线新功能 | 告别复制粘贴,一键 Apply 让你编程效率再提升!

Trae

开发者工具 AI编程 豆包MarsCode 代码工具

数据云平台的可观测性

奇点云

【YashanDB知识库】YMP迁移过程中报错YAS-02143或YAS-02193

YashanDB

数据库 yashandb

深入解析 StarRocks 物化视图:全方位的查询改写机制

StarRocks

降本增效!阿里云相关业务团队助力小鹏汽车节省云上资源开支 | 龙蜥案例

OpenAnolis小助手

操作系统 龙蜥案例

从高代码到低代码,火山引擎大模型产品、能力再升级!

极客天地

让AI碰撞!“天翼云息壤杯”高校AI大赛江苏赛区交流会热力开场!

天翼云开发者社区

云计算 AI

【IoTDB 线上小课 10】为什么选择 IoTDB 管理时序数据?

Apache IoTDB

2024开放原子开发者大会龙蜥参会指南一览

OpenAnolis小助手

操作系统 龙蜥社区

京东大数据治理探索与实践 | 京东零售技术实践

京东零售技术

大数据

驱动性能提升,如何加速基于龙蜥和企业平台的Arm系统开发与部署进程?

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

“息 壤” 升 级 !

天翼云开发者社区

云计算 生态大会

科技是把双刃剑,巧用技术改变财务预测

智达方通

企业管理 科技创新 全面预算管理

荣誉|奇点云创始人行在入榜《2024中国数智化转型升级先锋人物》

奇点云

大数据

智源最新评测结果发布:豆包大模型“主观评测”排名第一,多榜单位居国内第一

极客天地

Serverless比你预期要贵得多_架构_COLIN CHARTIER_InfoQ精选文章