第一章:Serverless入门
什么是Serverless
我第一次听到Serverless这个词,心里想的是:「没有服务器?那代码跑在哪?」
其实Serverless不是真的没有服务器。服务器还在,只是你不用管了。你想想看,以前部署一个应用,得先买机器、装系统、配网络、搞监控……这些脏活累活,Serverless全帮你干了。
说白了,Serverless是一种架构模式。你只管写代码,平台负责运行。你不需要关心服务器在哪、配置够不够、要不要扩容。平台会自动分配资源,按实际使用量收费。
我个人习惯把Serverless理解为「函数即服务」。你写一个函数,上传到平台,设置好触发条件。剩下的,平台全包了。
核心定义:Serverless = 无服务器计算 = 开发者只关注业务逻辑,基础设施由云平台自动管理。
Serverless的发展历程
这条路走了十几年。我简单梳理一下关键节点:
| 时间 | 事件 | 意义 |
|---|---|---|
| 2006年 | Amazon推出EC2 | 基础设施即服务(IaaS)诞生 |
| 2014年 | AWS Lambda发布 | 第一个主流FaaS产品 |
| 2016年 | Google Cloud Functions、Azure Functions跟进 | 三大云厂商全部入局 |
| 2017年 | Knative开源 | Serverless标准化开始 |
| 2020年至今 | 边缘Serverless、容器化Serverless兴起 | 生态成熟,企业级落地 |
我记得2014年Lambda刚出来时,圈子里很多人觉得这是个玩具。跑个简单的图片处理还行,正经业务谁敢用?
但到了2017年,情况变了。我在一个电商项目中尝试用Lambda做订单处理。刚开始只敢放些边缘逻辑,后来发现稳定性出乎意料。嗯,从那以后,我对Serverless的态度彻底改观了。
Serverless的核心价值
为什么这么多人转向Serverless?我总结了四点:
- 零运维——你不用再半夜爬起来处理服务器告警。平台帮你搞定高可用、容灾、补丁更新。
- 弹性伸缩——流量从0到10万,Serverless自动扩缩。你不需要提前预估容量。
- 按量付费——没请求时不收费。这对低频或波动大的业务来说,成本能降80%以上。
- 快速迭代——写个函数,上传,配置触发器,几分钟就能上线。传统方式至少半天。
我的经验:有一次做活动页面,预估峰值流量是平时的100倍。用传统架构得提前两周申请资源。用Serverless,我当天改完代码直接上线,活动结束零故障。
适用场景
Serverless不是万能的。我踩过坑,所以想跟你聊聊哪些场景真的适合:
- 事件驱动型任务——比如文件上传后自动压缩、数据库变更后触发通知。这类任务天然适合函数模型。
- API后端——配合API网关,一个函数就是一个接口。开发效率极高。
- 定时任务——每天凌晨跑数据清洗、生成报表。用Serverless比维护一台Cron服务器省心多了。
- 批处理——视频转码、图片处理、日志分析。这些任务可以并行执行,Serverless天然支持。
- 原型验证——快速搭建MVP,验证市场。等业务稳定了再考虑迁移。
避坑指南:我曾经把一个长耗时的机器学习推理任务直接丢到Lambda上。结果函数超时了,数据全丢了。后来才意识到,Serverless有执行时间限制(比如Lambda最长15分钟)。长时间运行的任务,还是得用容器或专用计算资源。
不适合的场景
有些场景,我建议你慎重:
- 高并发低延迟——比如高频交易系统。Serverless的冷启动问题会导致延迟不稳定。
- 有状态服务——比如WebSocket长连接、游戏服务器。Serverless本质是无状态的。
- GPU密集型计算——大部分Serverless平台不支持GPU,或者成本极高。
- 强依赖本地资源——比如需要挂载本地磁盘、使用特定硬件。
你想想看,如果硬要把Serverless塞进不合适的场景,结果就是「看似省了运维,实则多了麻烦」。我见过一个团队把核心数据库操作封装成Lambda,结果每次查询都要等冷启动,用户体验直线下降。
小结
Serverless是一种思维转变。从「管理服务器」到「管理函数」,从「预购资源」到「按需付费」。它不完美,但在合适的场景下,能让你事半功倍。
下一章,我会带你深入FaaS和BaaS的底层原理。到时候聊聊冷启动到底是怎么回事,以及怎么优化。
一句话总结:Serverless不是银弹,但它是云原生时代最值得掌握的架构模式之一。