ClapDB

恕我直言,你的业务不配用服务器

Leo

当今业界无论是 internet 还是 intranet ,即使没有任何负载,99.99% 的服务也都以服务的形式跑在服务器上。相比于浪费,带来的体验和稳定性的提升几乎可以忽略不计。

在之前的文章 名为“原生”,实则“排异”——有状态服务请对云原生say no云是一台新电脑 里,我们反复提到云的优势在于弹性,而云的弹性的最佳体现就是 serverless function。我们下面就聊聊为什么用 serverless 技术栈可以大幅度降低浪费,减少复杂度。

业务波动的挑战

业务波峰波谷的必然性

几乎所有的业务都有波峰波谷。下图展示了一个互联网业务一天内的 PV 变化情况,从中可以看出,业务的波峰接近波谷的 10 倍。如果按照波峰来做容量规划,将会浪费大量资源。

Daily PV traffic chart

更精细时间轴上的波动

放大上述图的一部分,只看30分钟的数据,即使将时间段缩小到分钟级,workload也不是平稳的。

Half of a Hour PV traffic chart

唯一不变的就是变化,随着 Page View 的上蹿下跳,业务对资源的实际需求也上天入地,请问为了峰值规划的计算资源有多少时间能派上用场呢?

Serverless 的成本优势

先直观的比较一下两者的成本

AWS Lambda 与 AWS EC2 成本对比

以 AWS Mumbai Region 的价格表为准,下面是 x64 架构的 Lambda 和 EC2 价格:

资源LambdaC5.4xlarge EC2
CPU2vCPU16vCPU
内存2G32GiB
存储512M0
网络0.6Gbps10Gbps
价格0.0000000333 USD/ms0.68 USD/h

我们用内存作为锚点, 用 16 个 Lambda 实例来对标 EC2,在 lambda 的 CPU 数量多一倍的情况下,双方成本比为 2.82 倍(RI 会严重影响云计算的弹性,因此不在本文讨论范围内)。从上面的表格我们可以看出,只要服务活跃时间少于 8.5 小时,使用 Serverless 架构的成本更低。大部分公司的峰值负载持续时间仅仅是几分钟最多不会超过一小时,而对于很多 To B 业务来说,非工作时间甚至只有个位数的访问 QPS。所以如果完全使用 serverless 技术栈,你的账单可能会被脚踝斩。

Serverless KO Service in billings

Serverless 与 Service 的运维成本

Service 的运维成本

过去 20 年,为了维护一套可靠的在线集群,需要做大量工作:

Serverless 的运维成本

只需管理配置,对函数性能日志进行监控即可。Serverless 没有服务,只要启动速度可接受,且能够保证资源池够用即可。CI/CD 就是部署新版本程序,可以在 LB 或 Gateway 层做流量切分,比服务简单。而且 Serverless 函数在物理上完全与其他函数的计算资源隔离,容量规划和性能监控都更容易。

Serverless 天生无状态,减少了状态检查、版本管理和状态一致性的相关负担。对于运维工作来说,只需复制数据,连跨区多活也变成了保证数据多区多备份的工作而已。

Serverless 与 Service 的开发成本

Service 开发的复杂性

基于微服务的开发工作一般会处理以下问题:

Serverless 开发的简化

Serverless 没有解决的问题

Serverless 代码与 Service 类似,代码错误、逻辑错误、死循环、循环依赖等问题依然存在。

Serverless 有所改善的问题

Service 遇到资源泄露会影响所有请求,而 Serverless 每次请求仅处理一次 query,隔离于其他 query,缓缓泄露的问题不会快速造成剧烈影响,可通过重启函数容忍。

Serverless 带来的新问题

复杂度的转移

无论用什么技术栈,业务本身的复杂度不会消失。但是任何技术栈都不可能不带来自己的复杂度,服务化技术栈在过去的 20 年里存在大量本身的限制带来的复杂度,而这些复杂度都会随着使用 serverless 而烟消云散,serverless 作为一个技术栈当然会带来新的复杂度,但目前看因为其天生的无状态限制,可以让开发者从主观上避免动用所有关于状态管理和维护的一系列奇技淫巧。从我们的实践来看,复杂度大幅度降低。

未来展望

Serverless 具有云计算最大优势,最灵活的弹性,但不能直接搬运旧代码使用。但因其天然优势,成为众多厂商持续投入的领域,未来可期。

Serverless 技术栈现状

Serverless 虽是多家云厂商重注押宝的技术方向,但用户代码大量存在于传统架构上,迁移到 Serverless 架构成本较高。前端技术栈已有 vercel、cloudflare 等厂商提供 Serverless 基础设施,其他技术栈每个云厂商都有自己的产品。冷启动最快的产品是 AWS lambda,其他厂商需继续努力。

Serverless 并不是免费午餐

和多核 CPU 的出现类似,不改变架构和编码方式,软件无法直接利用 Serverless 基础设施的好处。如何节省内存、状态外置、缩短执行时间与过去架构不一致,但与在 NUMA 架构服务器上设计软件相似。详情将在本系列后文中陆续说明,敬请期待。

结语

看到这里,你可能会有疑问,serverless 技术成熟了么?有什么成熟的应用?

本站和 ClapDB 官网 完全基于 serverless 技术构建,访问本站的同时您可以借此感受一下 serverless 的魔力,价格极为便宜,体验非常出色,几乎不用担心可用性问题,运维成本几乎为 0。

serverless 技术不止可以做网站,还可以打造复杂的基础软件,我司的核心产品 ClapDB 完全基于 serverless 技术打造,在没有查询和写入的时候,它不会产生任何除对象存储以外的费用。

欢迎访问 ClapDB 上手文档, 开始试用 ClapDB,欢迎来到 Serverless 时代。

← Back to Blog