Serverless 开发体验如何,梭哈还是只 Serverless 一点点

X1a0t,5 min read

2023 年,各大云厂商都提供了 Serverless 服务,有一些稍小规模的 SaaS 软件也提供了 Serverless。一个非常常见的 Serverless 场景就是 HTTP Request -> Serverless 服务 -> HTTP Response。

那么对于比较成熟的 Serverless 服务,开发体验到底如何,工具链齐全吗?部署是否方便?存储监控日志缓存等配套设施是否齐全?本文将从 Cloudflare worker 和 Google Cloud Function (只用过这两个) 来管中窥豹,看看 Serverless 开发体验究竟如何。

在谈开发工具链之前,Runtime 决定了可以直接复用哪些工具:

Cloudflare Worker 确实提供了非常好用的工具链 - wrangler (opens in a new tab), 可以 init project,一个 template project 的样子 (opens in a new tab), 打包(没错,是可以打包),deploy 到 cloudflare (好处是可以随时本地开发,deploy 上去检查效果)。

如果是非常轻量的处理内容,Cloudflare 提供了 Web 编辑器,可以随时修改随时保存(部署)。

而对于 GCP 来说,虽然没有工具链,由于 runtime 是 Node.js 环境,所以本地直接使用 Node.JS 工具链开发就可以,本地能跑,原封不动搬到(可以拷贝,也可以上传 zip) Google Cloud Function 也能跑;唯一不同的是,HTTP 触发器需要手动安装 @google-cloud/functions-framework (opens in a new tab)。Google Cloud Function 的部署是通过 Cloud Run CI 来跑的,每次更新 function 源代码都可以触发构建。

对于存储,云厂商本身有各种存储产品,Google Cloud Function 可以接 GCS(对象存储), Cloud SQL(database),等等;Cloudflare 有 R2(对象存储), CDN cache, KV, 甚至 D1(database) (opens in a new tab)runtime api (opens in a new tab)

Cloudflare 的监控,Metrics:

Log 目前只能看实时:

Google Cloud Function 的各种监控、性能指标体验非常完善,和正常部署在 GKE 的集群体验接近。

另外 Serverless 服务一般还支持自动扩容,这也和计费逻辑自洽 (按照资源用量,例如请求次数,执行时间,CPU 使用核数等等,自动扩容自然对应更高的计费)。

那么 Serverless 究竟 值得/可以 梭哈吗?

一个比较个人、片面的观点是

  1. 由于 Serverless 可以极大地减少开发时间

  2. 并且由于 Serverless 使用独立的存储服务,当有必要时,后续 migration 到自建的后端也非常丝滑。

因此对于想快速做出 MVP 项目的情况来说,完全可以直接梭哈。

对于已经存在后端的项目,就没有必要了,更常见的是写一些轻量的功能来配合原有的服务。

CC BY-NC 4.0 2023 © Powered by Nextra.