首页 / m.itcdj.com / 正文

Serverless从来不是运维甩锅工具

上次和南京河西做电商的朋友在江边喝啤酒,他去年刚把618大促的订单回调接口全迁到Serverless,当时拍胸脯说以后运维再也不用半夜爬起来扩容,结果今年大促刚过三点,函数直接触发了冷启动超时,用户付完款等十分钟都看不到订单成功页,客服直接被骂到宕机。他那天喝了三瓶啤酒才缓过来,说早知道就不被销售忽悠了。

别被厂商的宣传海报骗了

厂商的宣传页永远只说Serverless零运维、按量付费、自动弹性扩容,半句不提那些藏在文档三级页面里的限制。比如默认的单地域并发配额,很多初创团队刚开通的时候只有100,你以为流量上来了就能自动扩,结果到了阈值直接给你并发限流,找客服提工单,人家说这个配额要付费申请,还要提前一周报备。

云函数冷启动延迟链路示意图

我上次帮他排查问题,翻了三页监控,才看到那个被折叠在二级菜单里的限流告警,红得晃眼。真的,当时差点把手里的烤串签子扔了。更气人的是,你根本看不到函数运行的底层环境——CPU是共享的还是独占的,同节点上其他用户跑的任务占了多少资源,有时候你函数跑的慢到离谱,根本不是你代码写得烂,是邻居的批处理任务把CPU占满了,你连申诉的地方都没有。

真用得顺手的团队,从来不会全量迁

之前认识的南京本地做社区团购的技术负责人,聊起Serverless的使用经验,第一句话就是“谁全量迁谁是傻子”。他们现在的Serverless应用,全是挑出来的边缘场景:用户上传头像的自动压缩、每天凌晨跑的订单对账报表、大促时候临时上线的抽奖接口。这些场景的特点太明显了:平时没多少流量,到了节点上突然堆上来一堆任务,根本没必要平时养着几台服务器空转烧钱。

业务场景上云选型对比表
业务场景上云选型对比表

不过话说回来,谁第一次踩坑的时候没觉得自己是天选之子呢?我三年前第一次用Serverless做线下活动的报名后端,当时觉得再也不用提前买服务器扛流量了,结果活动刚上线十分钟,接口被恶意刷了两万次请求,账单出来的时候我差点把刚买的机械键盘退了——那时候我连请求量告警阈值都忘了配,根本不知道什么时候被刷的。

我见过最离谱的团队,把整个用户中心全迁到Serverless上,光配置VPC连接的权限规则就搞了三周,安全组错一个字符,数据库连接就超时。排查问题的时候也不像以前那样直接SSH到服务器上翻日志,要在控制台一层层捞,日志默认只存7天,你要是忘了开长期存储,出了问题连回溯的依据都没有。

真要落地,先把这几件事提前捋清楚

别信什么未来所有应用都会跑在Serverless上的鬼话,就像现在还有人在用物理机跑核心数据库一样,技术从来没有银弹。真要把Serverless用出价值,先把几件事捋明白。

先把业务分层划清楚,核心链路比如支付、实时订单查询这种,对延迟要求在100毫秒以内的,别碰Serverless,冷启动那几百毫秒的延迟,在高并发场景下就是致命的。那些边缘的、流量波动大的、对延迟不敏感的任务,先拿出来试错,成本最低。

再就是把监控和告警配全,什么冷启动时长、并发限流阈值、费用预警,一定要比你预估的最高请求量再低20%的时候就发提醒,别等账单出来了才拍大腿。上次有个做工业互联网的朋友,把设备心跳上报的接口迁到Serverless上,因为设备是7*24小时在线的,每分钟都在发请求,按量付费算下来,比以前用三台固定配置的云服务器贵了三倍,就是因为忘了配费用告警,等月底看到账单的时候已经晚了。

还有,别把所有函数逻辑堆成一个几百行的大泥球,拆成最小粒度的独立函数,不然你改个小参数就要重新部署整个包,冷启动时间又要涨好几秒,用户体验直接掉一半。

对了,前面那个做电商的朋友,后来怎么解决的?他把大促期间的核心接口切回了原来的容器集群,只把临时的抽奖、分享接口留在了Serverless上,今年双11算下来,整体成本比去年买服务器的钱省了60%,也没再出现半夜被告警叫醒的情况。

技术这东西,好用就行。没必要追着概念跑。