当前位置: 首页 > Web前端 > HTML

TapTap算法平台Serverless探索之路

时间:2023-03-27 23:34:09 HTML

Serverless为我们在构建应用时节省了大量的运维和开发人力。不投入基础设施人力,直接利用我们非常原始的基础设施,或者说资源管理水平已经达到了行业比较前沿的标准。最直观的数据是,我们的团队只需个位数的人力,就可以为TapTap的搜索、推广、推广相关的所有业务提供全套的AI和大数据支持。————陈鑫浩鑫东介绍鑫东成立于2003年,是一家全球游戏开发商和发行商,在研发、发行和代理运营方面拥有丰富的经验。截至2022年年中,心动运营着38款免费和付费游戏,在全球拥有5000万月活跃用户,主要分布在大中华区、东南亚、北美和南美。2016年,信动推出手游社区和应用商店TapTap。玩家可以通过官方渠道免费或收费购买和下载手游,也可以在社区中与其他玩家进行交流。截至2022年6月,TapTap在全球拥有超过5000万玩家。每月活跃用户。业务背景TapTap不同于传统应用商店的共享模式。至今一直坚持零渠道共享。这也决定了目前TapTap的商业化主要靠广告拉动。TapTap的广告为站内原生广告,在内容上与其他非商业内容高度一致,给用户更好的体验。比如首页的游戏推荐,发现页的内容推荐,搜索引导页的底纹词,进入搜索时会出现的搜索建议词,搜索结束时的着陆页等等。广告部分穿插在这些战略内容之间。我们的Serverless实践也是基于这些业务场景的实际需求来推动的。比如目前搜索推广依赖的深度学习模型的自动更新/部署,以及组内所有算法同学需要依赖的模型实验记录平台,以及一些新的NLP分析处理网站内容等等。早期我们的后端服务大部分部署在ECS上,通过Rundeck进行管理和部署,效率和管理上都不是很理想。关于基础设施升级方案的需求,我总结了4点:可以大大提高开发和运维的效率。它可以以较低的劳动力成本满足业务需求。该服务足够可靠并且可以具有良好的性能。因为我们的项目目前主要是以Go语言为主的语言,所以需要在后续的基础设施升级中对Go有很好的支持。方案对比我们考虑了两种主流方案架构,一种是云主机+自建K8s完整方案,另一种是Serverless架构,使用ServelessApplicationEngine(SAE)和FunctionComputeFC。经过比较,我们选择了后者。Serverless一方面可以省去机器的购买流程,不需要提前购买ECS。它还带有一些可选的默认环境。如果没有特殊要求,基本可以避免繁琐的环境搭建;另一方面,Serverless集成了很多基础组件,基本上可以说是免运维。直接访问的程度。那么在后续维护方面,Serverless产品比ECS的计费精度更高,可以做到分钟级甚至秒级计费,只在真正业务使用资源时才付费。与K8s+ECS模型相比,在前期开发和后续运维中可以节省大量的人力成本。从我们自己的实际实验体验来理解这两款Serverless产品的话。FunctionComputeFC将业务调度和触发逻辑与业务逻辑本身解耦。开发者和算法同学可以先在函数计算控制台控制整个业务逻辑的触发和调度逻辑,无需额外开发,可以更专注于业务逻辑本身的设计,也决定了函数计算更适合业务——驱动场景,并在事件实际发生时申请资源运行业务逻辑。在我们看来,Serverless应用引擎SAE类似于K8s的增强版,功能更丰富,拥有全套微服务能力,可以大大降低维护成本,真正做到开箱即用。这样比较适合微服务改造。通过直接迁移ECS上的旧服务,无需投入运维人力,即可得到一套完整的容器化运维方案。基本上两者的结合可以覆盖我们大部分的业务场景,实现所有的应用服务AllOnServerless。业务实践功能计算FC1)OSS触发的全自动模型部署/每小时更新服务。我们有一个由OSS触发的自动模型部署和更新服务,实现模型的导出和部署。算法同学训练好模型后,无论是TensorFlow、PyTorch还是其他格式的机器学习模型,只需要导出到指定的OSSB存储空间桶,就会触发模型更新和部署服务来实现完成导出和部署。这样算法同学即使不依赖其他工程人力,也可以自己部署、更新和后续弹性扩展模型。2)HTTP触发的模型实验管理平台(WEB服务)。算法学员通过HTTP触发器实现的内部模型实验管理和参数平台提交模型训练任务后,我们会自动上传其训练参数、日志地址和日志实例。记录下来,让所有的实验都可追溯、可管理。这本身就是一个网络服务。它有一个前端,但它也是一个内部服务。对QPS和性能要求不是很高,所以我放在FunctionCompute里面,在管理成本上,有相当大的优势,尤其是近期FunctionCompute有免费额度的情况下,基本不花钱。3)通过Kafka触发新内容NLP处理/分析服务当我们站点的用户发送新帖子时,我们会通过Kafka将其推送给NLP分析服务商进行NLP处理和分析,并保存以备日后搜索。可实现用户发送一条内容一次调整服务,精准控制成本。4)资源消耗的周/日定时统计对于MaxCompute和EAS资源消耗统计的周/日定时触发,我们会自动从阿里云后台拉取非结构化消耗账单,然后聚合到每个学生,每个任务和每个模型,推送给群里的同学,协助群里的同学提高成本意识,也帮助各个业务线做好成本管理。Serverless应用引擎SAE在SAE的实现中,我们选择了组内预估服务。该服务本身集成了搜索、推荐、广告所需的模型推理、特征开发、样本返回等能力。它本身就是一个中间平台。所有业务线都可以以极低的成本接入集团内最成熟的在线预测服务。比如当前搜索页面推荐词的点击率预估,国际版游戏的点击率预估等。通过SAE,我们的服务很快具备了serverless的能力,因为SAE本身屏蔽了大量的资源管理、环境管理和基础运维组件管理,让我们可以快速推出一套面向国内外新场景、新业务的独立服务。估计服务。同时,我们还集成了SAE的告警平台、事件中心、日志服务。通过钉钉告警,我们可以实时感知线上业务的状态,比如是否出现OOM或重启,错误日志等。另外,服务本身也接入了DubboGo框架,让服务直接具备了服务注册发现、IP直连、优雅上下线的微服务能力。与以往使用ECS的模式相比,该方案在运维管理、开发上线、后续成本控制等方面具有很大优势。基本可以覆盖从开发上线到后续运维的全流程,大大节省了团队的开发成本。商业价值运维简单,省心省力:开发轻松搞定应用开发、部署、管理全流程,让您更专注于业务,大大节省运维投入和成本。不间断发布+分钟级上线:SAE支持灰度发布和滚动发布的能力,同时也提供了比较完善的OpenAPI,可以集成到Git中进行快速部署,让我们的服务具备分钟级发布的能力。对新企业尤其有吸引力。二级弹性伸缩:SAE支持针对CPU、内存、QPS、RT、时序等不同维度指标配置伸缩策略,有助于提高资源利用率。尤其是业务规模大之后,通过配置更细化的弹性策略,可以显着降低机器成本。多语言微服务能力:SAE提供PHP、Python、GO等多种运行时,基于K8sService多语言服务注册与发现,实现Go语言的低成本微服务。