企业案例丨腾讯广告助手 X 云开发CloudBase

腾讯广告(ad.qq.com)是一站式广告投放平台,坐拥腾讯生态流量,拥有丰富统一的投放能力,广告主在该平台上能够进行微信、QQ、腾讯联盟、应用宝、手机QQ浏览器等渠道的广告投放。前端

本文讲介绍腾讯广告如何结合云原生一体化开发平台~云开发 CloudBase,发布了“腾讯广告助手”小程序端,实现下降广告主盯盘成本、提升广告优化效率的目标。node

1、项目背景

为了下降广告主盯盘成本、提升广告优化效率,腾讯广告基于这一痛点,在云开发 CloudBase 能力的帮助下,发布了“腾讯广告助手”小程序端,提供多帐户登陆与切换功能、直观的数据报表、轻量化的操做和及时的新消息提醒,为广告主、服务商打造整合式的移动端优化管理解决方案,帮助广告主实现更高效便捷的广告管理。npm

2、架构设计

一、业务架构设计

“腾讯广告助手做为一款腾讯广告投放平台的工具,但愿为广告主提供在移动设备上管理广告的能力。因此在小程序端里面,咱们为广告主提供了 PC 端上的基础能力及高频使用的功能,业务功能设计以下:小程序

二、技术架构设计

腾讯广告投放服务主要是经过开放平台的MKT API (对外) 和 GDT API (对内) 提供服务,在小程序端引入 CloudBase 的云函数做为 BFF (Backend For Frontend) 层,调用层级以下图所示:后端

总体上来讲,BFF 是一层设计来知足在特定客户端场景的API,它可以将多个后端微服务经过聚合、裁剪和编排等方式将处理后的数据提供给客户端使用,至于产品业务的功能、数据模型等则应该收敛在后台 API 实现,不落地在 BFF 中。前端工程化

在项目立项前,团队就对多种小程序开发框架进行了对比,从性能、开发效率和稳定性等方面比较后,最终采用了原生开发框架配合云开发服务,理由以下:api

  • 对于小程序端有较强的性能要求,不管是第三方框架的编译仍是运行时方案,在健壮性和性能上,原生的小程序开发模式都相对更适合;
  • 咱们的小程序端无需支持多个不一样小程序端,并且也没有历史代码迁移包袱,使用原生开发与第三方框架开发成本差异不大;
  • 对于原生开发与使用框架在开发体验上的差别,如小程序不支持 less 等,后续采用前端工程化手段解决。

目前使用到的技术栈以下所示:浏览器

3、云开发 CloudBase 的应用及实践

一、聚合接口

在小程序开发初期,对是在小程序前端直接调用中台服务,随之而来遇到了些问题,例如对于某些页面或功能,须要调用多个接口得到数据后,再拼接成最终须要的数据。这个逻辑若是是在前端来作的话,那么就加大了整个请求的调用链路,是多个客户端到服务端的请求,若是有一个数据请求慢了或失败了,那么都会影响到最终的数据,比较影响用户体验。而若是放到 BFF 层上来作,那么则变成是1个客户端到服务端的请求和多个服务端到服务端的请求,调用链路相比小程序前端请求要短许多,并且稳定性更好。微信

在”腾讯广告助手“小程序上展现的报表数据会包含汇总、环比、同比等数据,那么就须要组合调用不一样的中台接口才能获取到最终的数据。因此,团队将小程序上的报表相关的接口切换到直接调用云函数,由云函数并发调用中台服务接口并将数据作聚合返回到小程序端。同时对返回的数据按照小程序端所须要的按需返回。好比对于帐户列表页面的请求,原先前端须要并发进行3个请求才能获取到最终的数据,而经过云函数,则小程序端只需调用一个接口markdown

拉取报表数据的云函数运行数据聚合后云函数接口请求耗时数据

二、提高云函数的开发体验

目前 CloudBase 上官方是推荐以层来管理公共依赖库和代码问题,可是从开发的角度来看,仍是但愿可以作到源码本地依赖,减小引入更多的概念及操做成本。

抽离公共代码一般须要将代码上移到公共目录或者发布成 npm 包,而在小程序的云函数中,每一个云函数就是一个独立的目录,没有公共目录。而若是采用 npm 包的方式,那么调试,发布和更新版本号等操做上的成本就比较大了。

因而咱们将公共代码抽离到项目内单独的目录中,同时在开发和代码构建时,经过构建工具实时同步公共代码到每一个云函数的目录中。

同时,团队在项目内基于 cloudbase-manager-node sdk 实现了云函数本地的模板建立、代码及配置更新、查询状态等,提高开发体验。

查看云函数状态:

npm run cf:list
复制代码

实时更新代码并部署到指定的环境:

npm run cf:watch -- --func=getUserInfo,mktapi --env:preview
复制代码

三、多环境部署及蓝绿发布方案

”腾讯广告助手“的云开发环境目前有5个,分别对应主环境、备环境、测试环境、研发环境和预发布环境,在开发的时候能够经过命令行指定代码编译时链接是哪一个环境,好比:

npm run dev -- --cloudEnv=development
复制代码

那么咱们的小程序就会链接到云开发的开发环境,同时在小程序页面的悬浮球上也会显示链接对应的环境。

对于云函数的发布,采用的是蓝绿发布策略。主环境和备环境同时在外网可用,每当发布的时候,就会将流量从一边逐渐切换到另一边,若没有问题再逐步全量,大体流程以下图所示:

这里的流量切换逻辑,能够经过小程序发布时的按微信号灰度策略来控制,同时也能够经过在小程序上使用特性开关来控制。

4、项目总结及成果

一、影响力

”腾讯广告助手“小程序自2020年5月底上线以来,使用人数不断攀升。

同时从下图中能够看到,小程序端很好的弥补了上班高峰时段及下班后广告主不在电脑旁边的场景。有了小程序端,广告主能够随时管理广告。

二、使用云开发 CloudBase 的收益

借助云开发能力,”腾讯广告助手“小程序项目得到了许多收益,包括:

  • 云函数提供了私有的传输协议,为数据传输提供了保障;
  • 提高了总体的开发效率,可以在人力成本有限的场景下完成需求的开发;
  • 经过集成 cloudbase-node-sdk 实现了一键部署,同时也免去了运维成本,无需考虑负载问题;
  • 云开发方式给联调带来了极大的便利性,无需再去配置代理;
  • 云开发提供了完整的生态及强大的监控体系。

参考

开通云开发:console.cloud.tencent.com/tcb?tdl_anc…

产品文档:cloud.tencent.com/product/tcb…

技术文档:cloudbase.net?from=10004

相关文章
相关标签/搜索