TapTap 算法平台的 Serverless 探索之路

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Serverless 在构建应用上为 TapTap 节省了大量的运维与开发人力,在基本没投入基建人力的情况下,直接把我们非常原始的基建,或者说是资源管理水平拉到了业界相对前沿的标准。最直观的数据是,仅投入了个位数的人力,就可以为TapTap整个搜广推相关的所有业务提供全套AI和大数据方面的支持。

作者:陈欣昊


Serverless 在构建应用上为 TapTap 节省了大量的运维与开发人力,在基本没投入基建人力的情况下,直接把我们非常原始的基建,或者说是资源管理水平拉到了业界相对前沿的标准。最直观的数据是,仅投入了个位数的人力,就可以为TapTap整个搜广推相关的所有业务提供全套AI和大数据方面的支持。

——陈欣昊  TapTap/IEM/AI平台负责人


心动创立于 2003年,是一家全球游戏开发和发行商,拥有丰富的研发、发行和代理运营经验。截至 2022 年中,心动运营 38 款免费和付费游戏,在全世界拥有 5,000 万月活跃用户,主要分布在大中华地区、东南亚、北美和南美。2016 年,心动推出手机游戏社区和应用商店 TapTap,玩家可以通过官方渠道免费或付费购买下载手机游戏,亦可在社区中与其他玩家交流,截至2022年6月,TapTap 在全球已拥有超过5,000万月活跃用户。


业务背景


TapTap 不同于传统的应用商店的分成模式,至今一直坚持做渠道零分成,这也决定了,TapTap 目前的商业化,主要由广告驱动。TapTap 的广告属于站内的原生广告,与其他非商业化在内容上形态保持高度一致,给用户更好的体验。比如首页的游戏推荐,发现页的内容推荐,搜索引导页的底纹词,以及搜索输入时会出现的搜索建议词,还有搜索最后的落地页等等,广告的部分就穿插在这些战略内容之间。


TapTap的 Serverless 实践也是基于这几个业务场景的实际需求来进行推进的。例如,目前搜广推都依赖的深度学习模型自动化更新/部署,以及组内算法同学都需要依赖的模型实验记录平台,还有站内新内容的一些 NLP 分析处理等。


早期,TapTap 绝大部分的后端服务都是部署在 ECS,通过 Rundeck 来进行管理和部署,在效率和管理上并不是那么理想。在基建升级方案的需求上,我总结了4点:


1. 能大幅提升开发运维效率

2. 以较低的人力成本来满足业务需求
3. 服务足够可靠,能够具备良好的性能
4. 因为 TapTap 工程目前主要是以 Go 语言为主,所以在后续基建升级上需要对 Go 有良好的支
持。


方案对比


我们考虑了两种主流的方案架构,一个是云主机+自建 K8s 全套的解决方案, 还有一种就是 Serverless 架构,使用 Serveless 应用引擎(SAE)和函数计算 FC。


经过对比后,我们选择了后者。一方面是 Serverless 可以免去机器的购买流程,不需要提前购买 ECS。而且本身也自带了一些可选的默认环境,如果没有特殊需求的话,可以基本免去环境搭建的繁琐;另一方面是 Serverless 已经集成了很多基础组件,基本上可以说是做到免运维直接上线的程度。


然后在后续维护上,Serverless 产品在计费精度上相比 ECS 有更高的精度,可以做到分钟级,甚至秒级的计费,做到真正业务使用资源时才进行付费,相比 K8s+ECS 的模式,在早期开发和后续运维上, 都能节省较大的人力成本。


1.png


TapTap 实际实验的体验来理解 Serverless 的两个产品的话。


函数计算 FC 把业务的调度和触发逻辑与业务逻辑本身解耦,开发、算法同学可以先在函数计算控制台控制整个业务逻辑的触发与调度逻辑,就不需要再额外地开发,可以更加专注业务逻辑本身的设计,这也决定了函数计算更加适用于有业务驱动的场景,在事件真正发生时去申请资源进行业务逻辑的运行。


而 Serverless 应用引擎 SAE 在我们看来类似于功能更丰富的、提供了全套微服务能力的增强版 K8s,可以极大降低维护成本,并做到真正的开箱即用。这个就比较适合做微服务改造,把原先在 ECS 上的旧服务直接迁移上来,可以在不投入运维人力的情况下获得一套完整的容器化运维方案。


基本上通过两者结合,可以覆盖掉 TapTap 绝大多数的业务场景,实现所有应用服务 All On Serverless。


业务实践


函数计算 FC


1)通过 OSS 触发的全自动模型部署/小时级更新服务。


2.png

TapTap 有一个通过 OSS 触发的模型自动部署与更新服务,实现模型导出及部署。算法同学在训练完自己的模型,无论是 TensorFlow 还是 PyTorch 以及其他格式的机器学习模型,只需要导出到指定的 OSS B 存储空间 ucket ,就会触发模型的更新与部署服务,实现完整的导出即部署。这样算法同学哪怕在不依赖其他工程人力的情况下也能自行进行模型的部署、更新以及后续的弹性缩扩容。


2)通过 HTTP 触发的模型实验管理平台(WEB 服务)


3.png

算法同学通过 HTTP 触发器实现的内部模型实验管理与参数平台提交模型训练任务之后,我们会自动地将它训练的参数以及日志地址、日志实例记录下来,实现所有的实验可追溯、可管理,这本身是一个 Web 服务,它是有前端的,但又是一个对内的服务,对 QPS 和性能要求不是很高,于是就放到函数计算上,在管理成本上相当有优势,尤其是近期函数计算有免费额度,所以基本没花钱。


3)通过 Kafka 触发新内容 NLP 处理/解析服务


4.png

TapTap 站内的用户发了一个新的帖子,我们会通过 Kafka 推送到 NLP 分析服务商进行NLP 的处理与解析,存下来用于之后的搜索,这可以实现用户发一条内容调一次服务,精确地控制成本。


4)每周/每日定时统计资源消费

5.png


每周/每日定时触发的 MaxCompute、EAS 资源消费统计,TapTap 会自动拉取阿里云后台的非结构化消费账单,然后将它聚合到每一位同学,每个任务以及每个模型上,推送给组内的同学,协助组内同学提升自己的成本意识,也帮助各个业务线更好地做成本管理。


Serverless 应用引擎 SAE


6.png


在 SAE 的落地上,我们选择了组内的预估服务,这个服务本身整合了搜索、推荐、广告都需要的模型推理、特征开发以及样本回传的能力,本身是一个中台型微服务,所有业务线都可以非常低成本的接入目前组内最成熟的线上预估服务。例如现在的搜索页的推荐词的点击率预估,国际版的游戏点击率预估等。


通过 SAE,TapTap 的服务快速具备了 Serverless 的能力,因为 SAE 本身屏蔽了很多资源管理、环境管理以及基础运维组件管理工作,使得 TapTap 可以快速地为国内国外的新场景、新业务上线一套独立的预估服务。


与此同时,TapTap 也集成了 SAE 的告警平台,事件中心以及日志服务,TapTap 通过钉钉告警就可以实时感知线上业务的状态,例如是否发生了 OOM 还是重启、错误日志之类的。


另外,本身这个服务也是接入了 Dubbo Go 框架使服务直接具备了服务注册发现,IP直连,优雅上下线等微服务能力。相比之前使用 ECS 的模式,这套方案在运维管理以及开发上线和后续的成本管控上都有较大的优势,基本可以覆盖从开发上线后续运维的全流程,大大节省的组内的开发成本。


业务价值


简单运维,省心省力开发可以轻松搞定应用开发、部署、管理全流程,让自己更专注于业务,也大大节省了运维的投入和成本。


不停机发布 +分钟级上线SAE 支持灰度发布、滚动发布的能力,还提供了较为完善的Open API,可以集成到 Git 中快速部署,使 TapTap 的服务具备了分钟级发版的能力,这个对于新业务尤其具有吸引力。


秒级弹性缩扩容SAE 支持配置像 CPU、内存、QPS、RT、定时等不同维度指标的扩缩策略,可以帮助提升资源利用率。尤其是业务规模大了之后,通过配置更加精细的弹性策略,可以显著降低机器成本。


多语言微服务能力SAE 提供了 PHP、Python、GO 等多种运行时,并且基于 K8s Service 多语言服务注册发现,实现了 Go 语言低成本微服务化。


(标题图片来源于视觉中国)

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
6天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
1月前
|
弹性计算 分布式计算 Serverless
全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
【7月更文挑战第6天】全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
23668 42
|
11天前
|
Cloud Native Java Serverless
一键上天!如何将Spring PetClinic瞬间迁移到云端函数计算平台
【8月更文挑战第8天】在现代云原生开发中,将Spring应用迁移到Serverless环境正成为趋势。本文通过对比传统部署与函数计算,指导如何快速部署Spring PetClinic应用。传统部署需手动配置服务器和中间件,而函数计算则免除了这些步骤,仅需上传代码。首先,准备好Spring PetClinic源码或jar包;接着选择函数计算平台,本文以阿里云为例;随后对应用进行适配,并使用Maven构建部署包;登录阿里云控制台上传jar包并配置HTTP触发器;最后测试应用确保正常运行。
24 3
|
20天前
|
人工智能 前端开发 搜索推荐
详解基于百炼平台及函数计算快速上线网页AI助手
通过阿里云百炼平台,企业可在10分钟内为其网站添加智能客服系统,提升用户体验并降低成本。流程包括:创建大模型应用、配置参数(如温度系数以控制回复的随机性)、发布应用获取API密钥;使用函数计算快速搭建示例网站,并通过简单的代码更改启用AI助手功能;还可导入私有知识库增强助手的能力。前端基于NLUX开发,支持定制化需求如样式调整和历史会话管理。服务端代码提供了调用大模型获取答案的接口。借助百炼平台,企业能迅速部署即时且个性化的在线服务,适应数字化转型的需求。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
|
26天前
|
Java Serverless API
云原生应用问题之将文档中的代码部署在函数计算平台上会提升用户体验如何解决
云原生应用问题之将文档中的代码部署在函数计算平台上会提升用户体验如何解决
28 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【CVPR2024】阿里云人工智能平台PAI图像编辑算法论文入选CVPR2024
近期,阿里云人工智能平台PAI发表的图像编辑算法论文在CVPR-2024上正式亮相发表。论文成果是阿里云与华南理工大学贾奎教授领衔的团队共同研发。此次入选标志着阿里云人工智能平台PAI自主研发的图像编辑算法达到了先进水平,赢得了国际学术界的认可。在阿里云人工智能平台PAI算法团队和华南理工大学的老师学生们一同的坚持和热情下,将阿里云在图像生成与编辑领域的先进理念得以通过学术论文和会议的形式,向业界传递和展现。
|
2月前
|
算法 搜索推荐 Java
基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)
|
3月前
|
运维 数据挖掘 Serverless
阿里云Elasticsearch Serverless助力某电商平台公司实现商品订单数据的实时写入查询
某电商平台公司采用阿里云Elasticsearch Serverless解决方案,实现商品、订单和其他关键信息的写入和查询的实时响应。
314 1
|
3月前
|
Serverless 云计算 Docker
SAE是全场景Serverless计算平台,深度融合微服务
【5月更文挑战第2天】SAE是全场景Serverless计算平台,深度融合微服务,提供SAE Job任务场景解决方案,具备便捷、节省、稳定、透明和省心的特点。而ECI是Serverless容器运行服务,结合云计算理念,仅需Docker镜像即可运行,支持细粒度资源计费,旨在降低成本和提升效率。SAE侧重应用管理和运营,ECI专注于优化容器资源使用。
48 0

相关产品

  • 函数计算