1. 背景概述
深圳鱼传科技有限公司是专注以精准营销和互联网生态产品运营为核心的综合互联网营销推广服务商。通过整合全网优质媒体资源,并结合智能数据模型和 AI 标签算法,向企业提供包括流量矩阵搭建运营、媒介流量采买、投放模型设计、产品营销策划、数据监控分析、效果运营等多层次服务。
2. 需求分析
1 突增流量问题
“多多有礼”是公司旗下一款主打互动领奖的小程序,目前已经积累了百万日活的规模。为了抗住高并发流量,企业准备大概三、四台高配服务器做负载均衡,然而在业务并发高峰期,服务崩掉的情况还是经常发生。因为这个小程序涉及到的业务逻辑,和应用后端交互比较多,有很多复杂流程,比如打卡、签到、庄园运营等,所以遇到突增流量,单纯增加服务器数量很难扛住。
2 资源利用率低的问题
“多多有礼”在初期上线的时候,业务高峰期并发大概在 1000-2000,但业务低峰期可能也就几十,这是因为小程序设计的用户打卡、签到等动作,使得用户量非常容易在早上、晚上,或者某一个特定时间暴增。在这种情况下如果再用 ECS 的话,不仅需要按照峰值流量预留足够的 ECS 资源,维护起来也会变的非常复杂,资源利用率很难做上去,费用也会成倍的增加。
3. 解决方案
1 方便地开发流程
函数计算配合 Serverless Devs 工具支持了多语言 Web 框架的“0”改造迁移,每个开发人员会独立负责一个函数服务,服务下面每个函数会作为一个小的应用。函数计算支持层功能,后面会用层来部署公共函数、依赖,比如给用户发红包,代码只用写一份。另外对新招进来的开发来讲,函数计算上手门槛还是很低的,不用管理服务器搭环境,可以直接在线编辑代码、部署、测试。
2 流水线和灰度发布
之前本地一直采用的 SVN 存储代码,SVN 提交代码支持触发 Action,封装了函数计算的 API 接口,可以通过关键字触发函数和服务的发布。为了避免发布影响线上服务,还使用了函数计算的版本和别名的功能。正常线上业务会发布成新的版本,同时把 HTTP 流量入口绑定的 release 别名指向新的版本,这样就完成了发布过程,如果最新的代码出现问题,可以更改别名的指向,就能达到一键回滚到上个版本。同时也会创建一个测试别名,会先完成版本的测试后,才会把承载现网流量的 release 别名指向到新版本。这样通过别名的能力就区分出了线上环境和测试环境,非常方便。
3 运维管理
函数计算集成了 SLS,每次请求都会生成一条日志,可以比较方便的过滤出错误日志,对线上问题排查比较方便的。另外函数计算也提供了比较全的监控视图,最常用的就是请求量、错误次数、并发、执行耗时等指标,针对错误次数也加了告警,这样开发就可以直接兼业务运维,效率成倍增加。
4 . 用户价值
稳定性增强:开发不需要去关心后端服务的搭建运维,只需要编写函数就能够为小程序提供稳定可靠并且弹性伸缩的服务。
开发上手快,不用维护服务器:开发新人在生产过程中直接使用函数计算,上手非常快,他们只需要关心自己的代码就可以了。
价格低服务好,想买技术支持:支撑一个日活超过 50 万人的小程序,使用函数计算费用大约在 200 元/日左右,这个费用还是很便宜的。函数计算团队能及时、耐心的给予技术支持,服务非常好。