腾讯手游助手是腾讯推出的新一代安卓模拟器,在性能、稳定性、兼容性等方面表现优异,帮助用户在电脑上畅玩各类手游的全能型手游平台,用户可以通过手游助手快速体验最新最热的手机游戏,感受大屏显示、键鼠畅快操作的劲爽体验。
本次案例中,腾讯手游助手结合云原生一体化开发平台——云开发 CloudBase 打造了与业务配套的自定义插件,突破了业务场景中遇到的瓶颈,有效提升开发部署效率。
腾讯手游助手在市场端、运营活动页都大量应用到诸如数据组装、活动玩法拼接等基于 FaaS 的逻辑流程可视化平台(下文统称“FaaS 平台”)。此前,业务使用此类能力,存在着一些痛点:在开发层面上,有服务不稳定、配置复杂、开发上手难、无法脱离平台复用等问题;在人力层面上,每次使用服务,都需要服务端的人力来帮忙应对服务的稳定和排查的问题,在运营活动节奏愈发紧凑的趋势下,大量人力耗费在重复工作上是难以接受的。
基于以上问题,我们希望通过 Serverless 的能力去重构我们的 FaaS 服务,将服务的伸缩运维交给平台,解放后端 FaaS 服务的日常维护压力,同时扩展 FaaS 平台提供的 API 复用能力,降低其开发及配置复杂度,进而实现释放人力的需求。
而云开发 CloudBase 是腾讯云提供的云原生一体化开发环境和工具平台,其为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等 Serverless 化能力。结合业务背景,我们期望在基于云开发提供的能力上,实现提供给开发人员,更加便捷的开发、部署服务的业务能力。
组卡服务是 营销系统 中,将规格化的客户端组件(比如 nutty 组件,以及未来的小程序组件,客户端 native 组件等),与规格化的数据源(后台业务接口的数据格式要标准化),进行数据内联的系统。
介于腾讯手游助手有动态排版的需求,组卡方案在其中的应用场景有比较广泛的需求,比如:国外国内官网、国外国内市场。组卡的应用可以达到一套代码可以解决多个运营场景的效果,极大的降低了手游助手的开发成本。效果如图:
组卡服务中很重要的一个工作流是数据处理,数据处理函数之前是通过 eval 的方式执行,使用 eval 在多种不可控数据源的场景下难免会存在安全问题,且数据处理函数可由模板或者开发通过自定义规则去生成,不规范的使用方式容易造成内存泄漏,在转换服务被大量使用的情况下,整体服务的稳定性必然受到挑战。
因此我们将数据处理的函数放到云函数中处理,将组卡的运行环境与数据处理服务隔绝,提高组卡服务的稳定性及安全性,并且通过云函数的能力,未来我们也能支持多种语言来进行数据处理。
vega-cloudbase-framework-plugin
在使用 CloudBase 提供的云函数服务过程中,我们也遇到不少开发上的痛点:
在寻找解决办法的时候,发现云开发推出的前后端一体化部署工具 CloudBase Framework 支持插件机制,可以处理应用中的一些独立单元的构建、部署、开发、调试等流程。因此,我们采用了自定义插件配合流水线的方案解决上述痛点。
结合 CloudBase 设计的插件,为业务提供了以下能力:
插件由:配置层、协议层、调度层、部署层组成。
这里的设计遵循了约定优于配置的原则,协议层中的协议指的是基于一定的约定,根据功能差异将代码放到不同的目录下管理。协议层则是实现这一套约定,并对相关约定进行抽象。
开发者使用插件时,插件提供了默认的协议,新手开发者无需理解过多的开发配置项,只需要按照约定,编写代码即可。同时,协议层需对约定进行抽象,提供了一定的配置能力,这使得开发者不仅仅可以基于约定开发,也可以修改约定抽象后的配置项,进行自定义配置,使之更加适配业务场景,或者更加兼容。
这样使得插件不仅遵循约定优于配置的原则,也保证插件的扩展性。
配置层分为三部分:
调度层是是整个插件最核心的部分,主要职责为:
负责处理函数的部署,根据用户配置,创建云函数以及触发器,并部署到开发者配置的云开发环境下。
组卡服务通过云函数的能力,支持多种开发语言编写数据处理脚本;
基于云函数,实现一个逻辑可复用的,面向函数的,流程可视化的 API 自定义工具,架构设计如下:
云开发 CloudBase 为项目带来的收益:
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等 serverless 化能力,可用于云端一体化开发多种端应用(小程序,公众号,Web 应用,Flutter 客户端等),帮助开发者统一构建和管理后端服务和云资源,避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
开通云开发:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite
产品文档:https://cloud.tencent.com/product/tcb?from=12763
技术文档:https://cloudbase.net?from=10004
技术交流群、最新资讯关注微信公众号【腾讯云开发 CloudBase】