1、Serverless 初探:什么是无服务器计算?Serverless 的发展历程与核心价值。

好,咱们直接进入正题。

很多人第一次听到「无服务器计算」这五个字,第一反应都是:没服务器?那代码跑在哪儿?

嗯,这个问题我当年也问过。说白了,这个名字确实有点误导人。服务器当然存在,只不过你不需要去管它了。你想想看,以前我们部署一个应用,得先买机器、装系统、配网络、搭环境……这一套下来,少说一两天,多则一两周。而 Serverless 要做的,就是把这些脏活累活全部抽象掉,让你只关心代码本身。

1.1 什么是无服务器计算?

无服务器计算,是一种云原生架构模式。它的核心思想是:你只管写代码,平台负责运行。

我个人习惯把 Serverless 理解为「按需执行的函数」。你写好一段逻辑,上传到云平台,然后就不管了。当有请求进来时,平台自动拉起一个环境去执行你的代码;执行完,环境自动销毁。整个过程,你不需要关心底层用了多少台机器、CPU 负载怎么样、磁盘够不够用。

核心特征:

  • 无需管理服务器:你不需要登录任何机器,不需要打补丁,不需要做容量规划。
  • 按实际使用付费:代码不跑的时候,一分钱不花。跑的时候,按执行次数和时长计费。
  • 自动弹性伸缩:从零到上千并发,平台自动搞定,你不需要写任何扩缩容脚本。
  • 事件驱动:通常由 HTTP 请求、消息队列、数据库变更等事件触发执行。

举个例子。你写了一个图片缩略图生成函数。用户上传一张照片到对象存储,这个事件触发了你的函数,函数把图片压缩成小图,再存回去。整个过程,你只写了大概 30 行代码。没有服务器,没有守护进程,没有负载均衡器。

避坑指南:

我曾经在一个项目里,把整个后端都塞进一个函数里,结果冷启动时间长达 8 秒。后来才明白,Serverless 函数应该是「小而专」的。一个函数只做一件事,做精做透。别想着在一个函数里又处理登录又处理支付又处理日志——那是在给自己挖坑。

1.2 Serverless 的发展历程

Serverless 不是凭空冒出来的。它的背后,是云计算不断抽象化的结果。

阶段 时间 特点
物理机时代 2000 年代 自己买硬件,自己托管,运维成本极高
虚拟化时代 2006 年左右 IaaS 出现,按需租用虚拟机,但仍需管理 OS
容器时代 2013 年左右 Docker 出现,应用与依赖打包,环境一致性提升
PaaS 时代 2010 年代 Heroku、Google App Engine,部署应用不用管机器
Serverless 时代 2014 年至今 AWS Lambda 发布,函数级抽象,真正按需执行

2014 年,AWS Lambda 正式上线。我记得当时圈子里很多人都在讨论:这东西靠谱吗?函数执行完就销毁,状态怎么保存?数据库连接怎么复用?

说实话,早期的 Lambda 确实有很多限制。比如最大执行时间只有 5 分钟,代码包大小限制 50MB,没有 VPC 支持。但随着时间的推移,这些限制被一一打破。现在 Lambda 支持最长 15 分钟的执行时间,支持容器镜像,支持 Graviton 处理器,性能已经非常成熟。

2016 年之后,各大云厂商纷纷跟进。Google Cloud Functions、Azure Functions、阿里云函数计算、腾讯云云函数……Serverless 从一个概念变成了主流选择。

注意:

不要以为 Serverless 只适用于小项目。我见过一些大型企业,把核心的图片处理、数据清洗、消息推送等模块全部迁移到了 Serverless 上。关键在于,你要清楚哪些场景适合,哪些不适合。比如长时间运行的 WebSocket 服务、需要大量本地磁盘 I/O 的任务,就不太适合 Serverless。

1.3 Serverless 的核心价值

说了这么多,Serverless 到底能给我们带来什么?我总结了三句话:

  1. 降低运维复杂度:你不用再半夜爬起来处理服务器告警了。
  2. 降低运营成本:没有流量的时候,成本为零。流量波峰波谷再大,也不用提前买机器。
  3. 缩短交付周期:你只需要关注业务逻辑,基础设施的活儿交给云平台。

你想想看,传统架构下,一个简单的 API 接口,从开发到上线,要经过多少步骤?写代码、打包、配置服务器、配置反向代理、配置域名、配置 SSL、配置监控……而在 Serverless 下,你只需要写一个函数,绑定一个 HTTP 触发器,就完事了。

一个真实的对比:

我之前帮一个创业团队做技术选型。他们要做的是一个图片分享社区,初期用户量不大,但增长预期很高。

  • 传统方案:两台 ECS 实例,一年费用约 6000 元,还需要一个兼职运维。
  • Serverless 方案:函数计算 + 对象存储 + API 网关,按量付费,初期每月不到 100 元。

而且,当用户量突然暴涨时,传统方案需要手动扩容,而 Serverless 方案自动就扛住了。这就是核心价值——弹性 + 成本 + 效率

1.4 什么时候该用 Serverless?

不是所有场景都适合 Serverless。我个人建议,以下场景可以优先考虑:

  • 事件驱动的任务:比如文件处理、数据 ETL、消息通知。
  • 轻量级 API:CRUD 接口、表单提交、Webhook。
  • 定时任务:每天凌晨跑一次报表、清理过期数据。
  • 原型验证:快速搭建 MVP,验证业务想法。

而以下场景,我建议谨慎:

  • 长时间运行的 WebSocket 服务:函数有超时限制。
  • 需要大量本地状态的应用:Serverless 是无状态的,状态需要外置。
  • 延迟敏感型应用:冷启动可能会带来几百毫秒的额外延迟。

我的经验:

刚开始接触 Serverless 时,我犯过一个错误:把所有逻辑都写在一个函数里,结果代码又臭又长,调试起来非常痛苦。后来我学乖了,按照「单一职责」原则拆分函数。一个函数只做一件事,参数清晰,返回值明确。这样不仅好调试,也方便复用。

1.5 小结

Serverless 不是银弹,但它确实解决了很多传统架构下的痛点。它让开发者可以更专注于业务本身,而不是被基础设施拖累。

接下来的章节,我会带你一步步搭建一个完整的 Serverless 应用。从函数编写、触发器配置,到监控告警、性能优化,咱们一个一个来。

准备好了吗?咱们开始动手。