企業案例丨騰訊廣告助手 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

相關文章
相關標籤/搜索