1、Serverless入门:什么是Serverless、Serverless的发展历程、Serverless的核心优势与适用场景
1.1 到底什么是Serverless?
说实话,我第一次听到「Serverless」这个词,第一反应是:「没有服务器?那代码跑在哪儿?」
后来我才明白,Serverless 不是没有服务器,而是你不需要关心服务器。说白了,就是云厂商把服务器、操作系统、运行时环境这些底层细节全给你包了。你只需要写代码,然后部署上去就行。
我个人习惯把 Serverless 理解为「按需付费的函数计算」。你写一个函数,上传到云上,有人调用它时才运行,没人调用时就休眠。你只管代码逻辑,不用管它跑在哪台机器上、内存够不够、要不要扩容。
核心定义:Serverless = 无服务器计算 = 开发者只关注业务代码,基础设施由云平台自动管理。
目前主流的 Serverless 产品包括:
- AWS Lambda — 最早也是最成熟的 FaaS 产品
- 阿里云函数计算 (FC) — 国内用得最多的 Serverless 平台
- 腾讯云云函数 (SCF) — 微信生态集成度高
- 华为云 FunctionGraph — 政企客户常见选择
1.2 Serverless 是怎么发展起来的?
嗯,这里我简单梳理一下它的发展历程。你想想看,十几年前我们是怎么部署应用的?买服务器、装系统、配环境、部署代码……每一步都踩坑。
第一阶段:物理机时代(2000年代)
买一台服务器放机房,坏了得自己去修。我记得有个前辈跟我说,他们当年半夜被叫起来去机房重启机器,那叫一个酸爽。
第二阶段:虚拟化时代(2010年代)
VMware、KVM 这些虚拟化技术出现,一台物理机可以跑多个虚拟机。但你还是得自己管理操作系统、打补丁、做备份。
第三阶段:容器化时代(2015年左右)
Docker 和 Kubernetes 火了。容器比虚拟机轻量,部署更快。但说实话,K8s 的学习曲线挺陡的,我刚开始学的时候差点放弃。
第四阶段:Serverless 时代(2014年至今)
2014 年 AWS 发布了 Lambda,正式开启了 Serverless 时代。之后各大云厂商纷纷跟进。到了今天,Serverless 已经不只是「函数计算」了,还包括 Serverless 数据库、Serverless 存储、Serverless 消息队列等。
一个小观察:我注意到一个趋势——越来越多的企业开始把「是否支持 Serverless」作为选型的重要标准。尤其是创业公司,能省掉运维团队的成本,太香了。
1.3 Serverless 的核心优势
我在项目中用过 Serverless 之后,最大的感受就是:省心、省钱、省力。具体来说有这几点:
| 优势 | 说明 | 我的体会 |
|---|---|---|
| 免运维 | 不需要管理服务器、操作系统、运行时 | 以前半夜被报警吵醒的日子,一去不复返了 |
| 自动弹性伸缩 | 从0到成千上万的并发,自动扩缩容 | 双十一期间,我们的函数自动从几十个实例扩到几千个,完全没操心 |
| 按量付费 | 只为你实际使用的计算资源付费 | 有个小项目一个月只花了 3 块钱,你敢信? |
| 快速迭代 | 代码即部署,几分钟就能上线新功能 | 我最快的一次,从改代码到上线只用了 8 分钟 |
| 高可用 | 云厂商负责多可用区部署、故障转移 | 某次 AWS 一个可用区挂了,我们的函数自动切换到另一个区,用户无感知 |
注意:Serverless 不是银弹。它也有冷启动延迟、不适合长时间运行任务、调试相对困难等问题。后面我会详细讲这些坑。
1.4 什么场景适合用 Serverless?
你可能会问:「那我是不是所有项目都应该用 Serverless?」
别急,我根据实际经验给你列几个典型场景:
✅ 非常适合的场景
- Web API / 后端服务 — 尤其是轻量级的 RESTful API,用 Serverless 再合适不过
- 数据处理管道 — 比如图片上传后自动压缩、转格式、生成缩略图
- 定时任务 / 批处理 — 每天凌晨跑一次报表、清理过期数据
- 事件驱动型应用 — 比如用户注册后发送欢迎邮件、文件上传后触发审核流程
- 原型验证 / MVP — 快速验证想法,成本极低
❌ 不太适合的场景
- 长时间运行的计算任务 — 比如视频转码超过 15 分钟,函数会超时
- 低延迟要求极高的场景 — 冷启动可能会增加几十到几百毫秒的延迟
- 有状态的应用 — 比如 WebSocket 长连接、游戏服务器
- 对底层有强依赖的应用 — 比如需要直接操作 GPU、特定内核模块
我的建议:如果你刚开始接触 Serverless,可以先从一个简单的 API 入手。比如写一个「用户注册」接口,用 API Gateway + Lambda + DynamoDB 搭起来。整个过程不超过 2 小时,你就能感受到 Serverless 的魅力。
1.5 一个简单的例子:Hello Serverless
光说不练假把式。我给你看一个最简单的 Serverless 函数长什么样。这是用 Node.js 写的,部署在 AWS Lambda 上:
// index.js
exports.handler = async (event) => {
const name = event.queryStringParameters?.name || 'World';
return {
statusCode: 200,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: `Hello, ${name}!`,
timestamp: new Date().toISOString()
})
};
};
你看,就是一个普通的 JavaScript 函数。没有 Express 框架,没有端口监听,没有进程管理。你只需要关心:输入是什么?输出是什么?
部署之后,你访问一个 URL,就能得到响应。背后的服务器、负载均衡、自动扩缩容……全都不用管。
关键点:Serverless 让开发者回归到了「写代码」本身。你不需要再花时间配置 Nginx、管理进程、做监控告警。这些事,交给云平台去做。
1.6 本章小结
好了,这一章我们聊了:
- Serverless 不是什么玄学,就是「不用管服务器」的云计算模式
- 它经历了物理机 → 虚拟机 → 容器 → Serverless 四个阶段
- 核心优势是免运维、自动弹性、按量付费
- 适合事件驱动、API、数据处理等场景,不适合长时间运行或低延迟要求极高的场景
下一章,我会带你搭建第一个 Serverless 应用。到时候你会亲手体验从 0 到 1 部署一个函数,那种感觉,比光看文档爽多了。
一个小作业:想想你手头的项目,有没有哪个模块可以用 Serverless 重构?哪怕只是一个很小的功能,试试看,你会打开新世界的大门。
公众号:蓝海资料掘金营,微信deep3321