2、Serverless 初探:什么是Serverless?它真的不需要服务器吗?核心概念(FaaS、BaaS)与价值主张。

好,咱们正式开始聊 Serverless。

我记得第一次听到这个词的时候,第一反应就是:“不用服务器?那代码跑在哪儿?空气里吗?” 说实话,这名字起得挺有迷惑性的。你想想看,一个叫“无服务器”的东西,怎么可能真的没有服务器呢?

说白了,Serverless 不是没有服务器,而是你不需要关心服务器。这个区别很关键。

2.1 它真的不需要服务器吗?

嗯,这里要注意。Serverless 的“无”,指的是“无运维负担”,而不是“无物理设备”。

在传统架构里,你得自己买机器、装系统、配网络、打补丁、监控磁盘…… 我早期带团队的时候,最怕的就是半夜收到磁盘告警,爬起来扩容。那感觉,真是一言难尽。

到了 Serverless 时代,这些破事儿全交给云平台了。你只需要写代码,然后上传。至于代码跑在哪个 CPU 上、内存够不够、要不要扩容——这些统统不用你管。平台自动搞定。

所以,下次有人问你“Serverless 真的不需要服务器吗?”,你可以告诉他:服务器还在,只是你看不见它了。

核心理解: Serverless = 服务器对你不可见 + 你只关心业务代码。

2.2 核心概念:FaaS 和 BaaS

要搞懂 Serverless,得先认识两个好兄弟:FaaS 和 BaaS。

2.2.1 FaaS(函数即服务)

FaaS 是 Serverless 的“脸面”。你写一个函数,上传到平台,然后给它配个触发器(比如 HTTP 请求、消息队列、定时任务)。一旦触发,函数就运行,跑完就销毁。

我个人的习惯是,把 FaaS 想象成一个“一次性打火机”。点完烟就扔,下次再用再拿一个新的。你不需要保养它,也不需要给它加油。

举个例子,一个简单的图片缩略图生成函数:

// 伪代码示例:图片缩略图生成函数
exports.handler = async (event) => {
  const image = await getImageFromS3(event.bucket, event.key);
  const thumbnail = await resizeImage(image, 100, 100);
  await saveToS3(thumbnail, event.key + '_thumb');
  return { status: 'ok' };
};

你看,就这么几行。没有服务器配置,没有进程管理,没有负载均衡。上传,配个 S3 事件触发,完事。

避坑指南: 我曾经犯过一个错,在函数里写了个死循环。结果平台一直重试,账单直接爆了。记住:FaaS 函数要设计成“无状态、短执行”的。超过 15 分钟的任务,别用 FaaS 硬扛。

2.2.2 BaaS(后端即服务)

BaaS 是 Serverless 的“后勤部”。它提供各种现成的后端服务,比如数据库、身份认证、文件存储、消息队列等。你直接调用 API 就行,不用自己搭。

说白了,BaaS 就是“别重复造轮子”。

举个例子,你想给 App 加个用户登录功能。传统做法:搭个认证服务器,写注册、登录、Token 签发、密码重置…… 一套下来至少一周。用 BaaS 呢?调用一行 API:

// 使用 BaaS 进行用户登录
const user = await authService.login('email', 'password');

搞定。剩下的密码加密、会话管理、防暴力破解,全是 BaaS 平台的事。

我建议你在选型时,把 BaaS 当成“乐高积木”。需要什么功能,就拼什么服务。别自己从头造,除非你有特殊的安全或合规要求。

2.3 FaaS 和 BaaS 的关系

它们俩不是二选一,而是搭档。

  • FaaS 负责跑你的业务逻辑(代码)。
  • BaaS 负责提供基础设施(数据库、存储、认证等)。

一个典型的 Serverless 应用,通常是 FaaS 函数调用 BaaS 服务。比如:用户上传头像 → FaaS 函数触发 → 调用 BaaS 存储服务保存文件 → 调用 BaaS 数据库记录信息。

一句话总结: FaaS 是“大脑”,BaaS 是“手脚”。大脑发指令,手脚去执行。

2.4 Serverless 的价值主张

聊完概念,咱们看看它到底好在哪儿。我总结了三句话:

价值点 传统架构 Serverless 架构
运维成本 需要专人管理服务器、网络、操作系统 零运维,平台全托管
弹性伸缩 手动或自动扩缩容,有延迟 毫秒级自动伸缩,从 0 到无限
计费模式 按资源预留付费(即使空闲也花钱) 按实际执行次数和时长付费(不跑不花钱)
上线速度 需要搭建环境、配置 CI/CD 上传代码即上线,秒级部署

说白了,Serverless 最大的价值就是:让你把精力从“伺候机器”转移到“写好代码”上。

我见过一个创业团队,三个人,用 Serverless 两周就上线了一个 MVP。要换传统架构,光搭服务器和数据库就得一周。这就是速度优势。

注意: Serverless 不是银弹。如果你的应用是长时间运行的、对延迟极其敏感的(比如高频交易),或者有严格的合规要求(比如数据必须留在本地机房),那 Serverless 可能不适合你。选型要理性,别盲目跟风。

2.5 一个简单的类比

最后,我习惯用一个类比来理解 Serverless:

  • 传统架构 = 自己买车。你得付车款、买保险、保养、找车位、加油。车停着不开,钱也照花。
  • Serverless = 打车。你只需要告诉司机去哪儿,到了付钱下车。车是别人的,保养是别人的事。你不打车,一分钱不花。

你想想看,是不是这个理儿?

好,这一章咱们把 Serverless 的“面子”和“里子”都聊透了。下一章,我会带你看看,从单体应用迁移到 Serverless,到底要迈过哪些坑。咱们实战见。