手淘雙11最新實踐:PopLayer彈層領域業務研發模式升級

阿里巴巴淘系技術發表於2020-11-23

背景

近年來,各大APP內的彈層需求逐漸增多,以手機淘寶為例,日常的彈層上線頻率為單端每月50次左右,而在大促期間可以達到240次以上。在手淘內,各類彈層業務都會通過PopLayer中介軟體的能力進行管理。但業務往往會遇到開發彈層難、慢、穩定性差的種種困難。對比於往年業務研發成本較高的現狀,PopLayer在今年提出了【低研發搭建模式】來解決這類問題,形成一套快速搭建+視覺化+多端多場景通用的解決方案,在日常與大促期間得到了廣泛應用:

  • 研發效率升級:彈層業務的上線成本從3天+,降低到2小時左右
  • 業務覆蓋率高:雙11大促期間的業務覆蓋率達到75%
  • 穩定性極佳:大促期間線上0故障

在各類APP都逐漸走向存量時代,精細化流量運營的今天,彈層作為一個可以隨時隨地產生內容並帶來高流量的強運營手段,已經從低頻需求,變成了面向各類人群觸達的高頻需求。作為業務支撐方向的中介軟體,如何為業務提效,將業務的關注重點從開發轉向內容運營,助力其完成觸達矩陣,成為了一件非常值得探索的事情。

(更多幹貨內容請搜尋關注【淘系技術】公眾號)

PopLayer

彈層,是一種強觸達使用者的互動形態。PopLayer的定義,則是一個可以在任何APP頁面上,在指定時間內,對頁面無侵入地彈出任何內容的彈層中介軟體。其業務定位,則為觸達各領域使用者的重要流量場。

為了便於理解,下面以手淘首頁近期Pop為例,將手淘內的Pop業務分類舉例介紹(本文中Pop即指彈層):

  1. 大促氛圍打造

image.png

開售倒數計時提醒

  1. 增強使用者體驗

死亡恢復.jpg

死亡恢復瀏覽飄條

  1. 紅包發放&提醒

互動權益.PNG

星秀貓開獎

催用倒數計時.png

紅包催用提醒飄條

  1. 使用者指引

可以看到,彈層業務的互動形態是靈活多變的,業務目標訴求也各有不同。其背後有著各自業務層面的複雜訴求和增長目標。PopLayer為此提供了一套端側彈層管理SDK+任務管理系統的整體解決方案。

image.png

PopLayer常規任務管理流程

注:PopLayer是以端側中介軟體為核心進行建設的,其中每個環節都有比較複雜的鏈路可以展開,本文不展開討論端側細節,主要討論研發效率方面。

在這套流程中,對業務方負擔最重的,也是研發耗時最重的,便是前端頁面的研發以及服務端介面的研發。且各個業務的曝光預判介面不斷累積,也帶來了非常大的資源浪費與QPS壓力。隨著彈層業務逐年增多,這套模式的弊端越來越凸顯:

  • 研發效率低下以日常期間觀察,研發一個圖文型別彈層,至少需要一個前端人員投入三天以上時間+一個後端人員投入三天以上時間+測試人員投入一天以上。
  • 運營效率低下。運營策略往往受限於研發成本、資源調控、以及上線時間等等問題,而無法靈活展開與快速迭代。尤其在大促期間,很多快速決策的運營玩法無法及時且穩定地落地,喪失了關鍵時刻獲取流量的機會。
  • 研發質量難以保證。不同於整頁研發,彈層存在一些特殊需要注意的問題。而研發人員接入PopLayer的流程熟悉程度往往有限,很容易因缺乏經驗而產生線上異常,比如只有背景黑色遮罩彈出而內容載入失敗(可以想一想會是什麼狀況)
  • 業務資料指標沒有統一標準,無法形成客觀統一的業務指標,無法通過資料快速定位問題,無法形成有效的資料沉澱與對比。
  • 整體方案難以沉澱複用。

這樣的研發成本,對於Pop這類往往需要快速響應的業務需求,是遠遠不能滿足的。尤其在大促期間,對時效性要求很高,一個Pop從決策到上線,可能僅僅只有1-2個小時的響應時間,一旦錯過時機對業務的流量損失是巨大的。

經過建設搭建模式,這套陳舊野生的研發流程終於得到了改變。如今,通過新模式,一個常規的單圖Pop幾分鐘就可以完成搭建。業務方可以徹底解放雙手,集中精力在更加優質的內容編排與製作上。

模板全域觸達技術模型111.png

PopLayer搭建模式對研發流程的影響

-

PopLayer搭建模式

Pop業務背景分析

經過長期與業務深入合作,我們發現彈層的需求往往有一定的規律可循。PopLayer領域下的業務特徵大體如下:

  • UI結構輕量:主要為底圖+內部圖文混合的UI結構,視覺複雜度有限
  • 點選互動可列舉:跳轉頁面、關閉Pop、傳送後端介面、切換內部子頁面等
  • 元件複用性低、整體複用性高:每個Pop內部可複用的元件幾乎不存在,更應該以一個完整的Pop作為一個模板進行維護和複用
  • Pop特有邏輯較多,比如疲勞度規則、各類資料來源變數解析等

那麼實現一套統一標準的搭建方案,從前後端等各個方面逐個擊破,來承載業務的大部分高頻需求,支援其快速、低研發迭代上線,便成了解決這類問題的首選方案。

得益於這套標準化的前端協議規則,我們可以將PopLayer的觸發範圍,從APP站內觸達,向其他流量場橫向擴充套件,比如Android桌面、H5環境等,這部分後文將會展開討論。

搭建模式架構

模板全域觸達技術模型.png

搭建模式方案框架圖

我們通過鎖定 低研發搭建+多端多領域統一觸達 的解決方案,支援運營與業務快速完成各類彈層小時級上線。其鏈路主要包括如下幾個部分:

  • 搭建
  • 設計一套Pop業務域內的統一業務描述DSL,來描述Pop的全部UI架構、資料提取規則、互動邏輯等等內容。以其為核心,完成搭建與各端各領域的解耦
  • 搭建IDE,提供友好的編輯介面、實時動態預覽、真機預覽等業務服務,最終產生標準DSL內容
  • 解析
  • 探索除APP站內之外的更多觸達領域,包括Android桌面環境、H5環境
  • 研發DSL執行時解析引擎,並完成統一體驗的Pop渲染及互動
  • 任務管理服務
  • 提供一體化人群曝光預判
  • 提供權益、AB與模板搭建的打包配置能力,無需業務方自建實驗、自研權益對接
  • 將單場景多Pop情況下的預判QPS壓力,降低為單場景組合預判模式,有效降低服務端壓力

搭建

搭建與DSL

DSL,即領域特定描述語言,是為了解決特定領域問題而形成的程式語言或規範語言。在Pop業務域下,我們無需形成程式語言,甚至追求儘可能低研發,所以這裡的DSL即為一種Pop業務域範圍內的規範描述語言。

Pop的DSL格式為常用的JSON格式。其整體結構為pages-UI動線、props-變數解析、requests-請求介面、env-環境全域性配置。

image.png

下面我們從互動動線結構、變數解析、事件結構、疲勞度幾個方面分別介紹DSL描述的主要內容。

  1. 互動動線與UI結構

互動動線

對應到DSL,我們提供了多子頁面+多版本的描述方案,即通過建立多個子頁面+每個子頁面的多個版本來完成動線素材,並通過設定事件動作,完成動線串聯。對應到DSL的結構,即通過pages+vers以樹形結構分別描述各個子頁面版本。其整體示例如下:

模板全域觸達技術模型.png

佈局版型

Pop的佈局版型是多種多樣的,但基本可歸類為如下幾種:居中、四角掛角、四邊貼邊。DSL設計中,每一個子頁面都可以單獨設定其佈局版型。不同的版型,會以不同的佈局邏輯計算其大小位置。

模板全域觸達技術模型1231.png

UI元件

Pop形態下的UI元件,基於圍繞著如下幾個型別展開:圖片、文字、視訊、容器、倒數計時、點選熱區等。即通過提供大圖或視訊為背景,並通過容器+內部元件形成內部複雜的介面佈局。我們針對各個元件提供了統一的佈局配置+各自不同的素材配置。以一個倒數計時元件為例:

2231313.png

  1. 變數資料提取與繫結

變數資料提取

Pop的內容與服務端資料做繫結時,需要提供一套提取資料的描述方案。而資料來源因Pop的整體鏈路設計,存在多個可能來源。我們通過 指定資料來源+提供插入式Mtop介面配置+介面資料提取Function 完成資料提取的設定,形成一個變數。仍以上述Demo為例,其中紅包金額的變數為服務端Mtop介面返回資料。其提取流程示例:

模板全域觸達技術模型11111.png

即通過預判MTOP介面資料來源,通過JSONPath,並指定其資料位置完成提取。在某些較為複雜的情況下,有時資料來源需要多層解析(JSONPath+URLDecode+URLParse),那麼也支援其設定序列多層解析。

變數繫結

解析結束的變數,即視為一種全域性資源,其可以繫結到各種內容與其他資料上,哪裡需要哪裡搬。比如圖片地址、文字內容、toast內容、跳轉地址、MTOP請求引數等等。其實現方案為常用的字串模板表示式${prop_name},進行執行時替換。

  1. 事件結構

大多情況下,Pop內的事件,即為使用者點選事件,但隨著業務複雜度的提升,例如視訊播放結束、視訊載入失敗、倒數計時結束等時機也需要響應事件,我們便提供了統一的事件描述,方便掛載到各個元件事件配置上。而事件的型別。即為跳轉場景、切換子頁面、傳送MTOP介面、關閉Pop等,我們分別對這些事件提供了對應的封裝描述。此處細節較多暫不展開。

  1. 疲勞度

疲勞度是Pop的重要組成部分之一。疲勞度的設計分為疲勞度規則+疲勞度消耗規則。例如Pop需要使用者每天曝光不設限,但點選後當天不再彈出。那麼其疲勞度規則為一天一次,而消耗規則即為點選時消耗。通過這樣的實現方式,則可以非常靈活的實現各類疲勞度需求,做到想怎麼彈就怎麼彈。

在DSL的曝光、關閉、以及每個事件結構中,均有疲勞度消耗規則,而疲勞度整體規則,則通過不同的疲勞度表示式完成配置。

搭建IDE

IDE的核心功能,即為業務使用者提供一個實時視覺化、隨時可真機預覽的一站式搭建編輯器。其產出,則是產生一份描述業務完整需求的DSL內容。目前已為業務提供包括頁面搭建、資料管理、曝光判定、疲勞度規則、降級策略、埋點配置等方面的搭建功能。

20201113135045.jpg

搭建IDE

解析

如方案框架圖所示,搭建模式的目標不僅僅是在APP站內完成Pop觸達,還需要在Android桌面、站外H5這樣的環境裡完成一站式多端觸達。我們可以把目前涉及的幾個流量域,稱為觸達領域。

APP站內的觸發流程,即PopLayer端側中介軟體,功能上有非常豐富的積累,可支撐幾乎所有Pop業務的各方面訴求,此處不進行展開,本文將從彈出Pop後的解析引擎、Android桌面的觸達領域支援方面進行介紹。

執行時解析引擎

針對不同的觸達環境,需要形成各自的執行時解析引擎,目前我們完成了APP站內引擎:負責站內+Android桌面的解析渲染,以及H5站外引擎:負責H5環境下的解析渲染。這裡我們主要針對站內引擎進行介紹。

PreDisplay + Running

解析引擎的主體工作流程,分為PreDisplay階段:獲取DSL、獲取各環境資料、解析變數、完成UI渲染並曝光,以及Running階段:在曝光後的事件互動處理。

模板全域觸達技術模型121231312.png

解析引擎工作流

在執行display之前,Pop為隱形狀態,使用者無感知。經過如上圖的DSL解析、同步各類環境資料、變數解析、曝光判定、素材載入等流程後,通過display介面,完成最終曝光。

為了達到雙端統一的渲染效果、高適配性、以及高效能渲染的要求,站內引擎的底層載體目前為Rax方案。基於Rax完善的工程化支援,我們得以完成一系列上層方案,無需過度關注動態性、適配性等問題。

Android桌面彈層

對於手淘這樣日活流量足夠大的APP,其Android桌面的觸達流量價值同樣是巨大的。相比APP站內的Pop觸達,其更加擁有包括加強喚端、二方流量交換這樣的獨特價值。在有規則規範的前提下,我們可以通過端側中介軟體建設,把Pop搭建的能力無差別的輸出到桌面環境,使其成為Pop觸達生態的一環。其具體的觸達形態,則可以是頂部訊息、掛角提醒等。其底層實現方案為Android懸浮窗。

桌面Pop的效果Demo如下:

20201115180521.jpg

模板全域觸達技術模型111.png

桌面Pop方案框架

首先,我們將桌面與站內進行了搭建能力對齊,使一個搭建產生的頁面,即可以在手淘裡彈出,也可以在桌面上彈出。為此我們抹平了底層方案不同帶來的差異,包括:

  • 搭建模式與站內一致,同樣採用標準DSL+解析引擎完成渲染
  • 通過控制Window新增次序來對齊層級管理
  • 通過控制視窗大小位置,控制其可繪圖區域;通過搭建輸出可視區域位移量,對視窗內容進行位移還原視窗內容

另外,我們提供了桌面環境的特殊處理:

  • 增加了切換桌面觸發時機(計劃觸發,適合計劃常駐),並打通了ACCS訊息觸發時機(即時觸發,適合訊息型別)
  • 增加了自由拖拽、邊側自動吸附功能

由於桌面環境的特殊性,應避免對使用者形成嚴重的干擾。那麼桌面觸達的規則管理則十分重要。目前我們設計瞭如下避免過度干擾的規則:

  • 桌面環境的Pop必須有明確明顯的關閉按鈕
  • 切換其他APP時,需要將Pop內容進行隱藏,對於Android高版本則進行倒數計時後自動關閉設定
  • 桌面的彈出管理底層與站內一致,採用分層分優先順序管理,並對一次桌面切換的曝光次數進行上限設定

任務管理服務

從上述任務管理流程圖可以看到,業務對於曝光預判、業務資料方面都是需要服務端的人力投入的。即除前端的研發成本問題,服務端同樣面臨類似的問題。我們梳理業務目前痛點如下:

  • 人力消耗大,大促時效性差
  • 機器資源消耗大
  • 全量配置下發+全量介面預判的模式,導致單活動機器資源消耗大
  • 單場景(比如手淘首頁)下的Pop往往存在多個,活動之間篩選獨立進行,導致機器消耗總量增長快(QPS總量隨活動數線性增加且無上限)
  • 穩定性風險高
  • 臨時開發的模式,加上人員開發質量層次不齊,穩定性很難保障。
  • 業務需要自己投入精力維護穩定性,特別是每次大促的時候應對突發流量

為此我們實現了對業務進行一站式託管。核心目標為:

  • 實現權益、導流這兩個業務領域的低研發極速上線
  • 降低機器資源消耗,線上活動數量不再受機器資源限制
  • 託管業務全年0故障

通過拆解上文的任務管理流程圖,可以看到服務端的工作主要包括曝光預判介面,以及頁面內的業務資料介面。我們針對兩部分分別進行部分託管建設,架構圖設計如下:

1587024041829-d573d633-5736-4b3b-9939-8b2285049b82.png

任務管理服務架構

  • 針對曝光預判介面,我們提供了單場景多活動的人群預判複用能力,即將人群圈選的預判模式統一集中管理,底層與奧格人群平臺二方包打通,上層單場景僅透出一個整合介面。從過去每次切換頁面觸發N次預判介面,變為僅觸發一次。業務也無需自研人群介面,僅需把人群包ID進行配置即可。
  • 針對內容資料介面,我們仍在建設中。計劃通過底層打通了拉菲權益平臺二方包,將權益型別(紅包、優惠券等)直接整合進搭建體系中,業務無需進行復雜的權益能力對接,僅需提供權益ID配置即可。

整體效果

除文章開頭提到雙十一期間的業務覆蓋率已經達到75%之外,得益於搭建模式對研發效率的提升,今年雙十一期間,手淘內Pop的業務量和整體流量也有了大幅度飛躍:

image.png

除此之外,今年我們快速穩定地響應了大促期間的全部緊急需求,避免出現過去幾年因封網、研發效率等問題帶來的無法上線Pop的情況。

寫在最後

PopLayer目前除手淘外,已經服務了集團眾多APP,包括天貓、淘寶特價版、閒魚、淘寶直播、餓了麼、Lazada、零售通、AE等等。後續也將繼續以手淘為核心,服務更多的集團業務。

通過雙十一大促期間以及日常的業務覆蓋率,我們印證了搭建模式對業務的價值。站在業務的角度思考,Pop這類“既輕量又複雜”的業務域,經過一番深挖的底層支援,可以大幅度破除業務的桎梏,讓其解放雙手,去快速通過“提出idea-搭建-AB-看資料-再次迭代”的模式得到最佳的業務結果。這套業務研發模式的優化,從思考如何研發變為如何儘可能封裝研發,對於相對輕量級的業務域來說也是有輸出價值的。

後續,我們一方面將會繼續完善相關建設,將AB、標籤+推薦系統、引擎載入頁面效能優化等等進行深度挖掘,從研發效率提升,升級到業務價值提升;另一方面也會將Pop的建設經驗沉澱成流量域方法論的一部分,輸出到其他流量域中,為業務探索與構建更有價值的流量增長矩陣。

手淘平臺技術

我們背靠淘系基礎架構和廠商,既有立足5G適配、網路加速、圖片體驗、閘道器呼叫、大內容上傳下載等核心技術支撐業務體驗升級和改造,

又為使用者增長提供訊息推送、浮層搭建、廠商觸達、外鏈拉端等流量端能力,並沉澱一系列如最小核、全鏈路資料等架構能力,為手淘及產品升級提供平臺支撐,併成為集團移動端基礎設施。

職位:Android研發工程師、iOS研發工程師

感興趣的同學可將簡歷傳送到:yangqing.yq@alibaba-inc.com,獲取優先內推資格!

相關文章