算法平台:心动网络TapTap的Serverless探索之路

Serverless 应用引擎 SAE(Serverless App Engine)能帮助微服务应用极速上云,并能通过灵活的应用启停降低资源使用成本,降低运维难度。本文介绍SAE助力TapTap进行微服务改造并快速上云的成功案例。

背景信息

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

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

TapTap的Serverless实践基于上述业务场景的实际需求来推进。例如,搜索、广告、推荐都依赖的深度学习模型自动化更新、部署,以及组内算法人员都需要依赖的模型实验记录平台,还有站内新内容的一些NLP分析处理等。

业务痛点

早期,TapTap绝大部分的后端服务都是部署在ECS,通过Rundeck进行管理和部署,在效率和管理上有较大的改进空间。TapTap在基建升级方案的痛点如下。针对这些痛点,SAE逐一攻破。

业务痛点

为什么选择SAE

大幅提升开发运维效率。

SAE能够一站式开箱使用全套微服务能力,提供自动构建镜像能力,内置灰度发布、流量控制、环境隔离、应用监控诊断和权限管理等企业级高级特性。

以较低的人力成本来满足业务需求。

SAE支持Spring Cloud、Dubbo等微服务架构,具有微服务免运维特性,能解决微服务架构复杂的痛点,满足免运维的需求,从而节省人力成本。

服务可靠,性能良好。

SAE能够免运维底层基础设施,例如IaaS、K8s、微服务组件和APM组件等,无需自建ZooKeeper、Eureka、Consul和Skywalking等,极大降低开发运维成本。提供商业化稳定性兜底。

支持Go语言。

SAE支持Go、Java、PHP、Python和Node.js等多种技术栈语言,其中Go支持镜像部署。同时,SAE支持基于K8s ServiceName的多语言服务注册发现功能,通过ServiceName做服务间调用。

解决方案

TapTap解决方案逻辑图如下所示。dg_case_studies_taptap

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

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

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

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

使用效果

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

  • 不停机发布,分钟级上线:SAE支持多种发布策略,提供的OpenAPI可以集成到Git并快速部署,使TapTap的服务具备了分钟级发版的能力,尤其适用于新业务。

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

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