淺談小程序開源業務架構建設之路
一、業務介紹 1.1 小程序開源整體介紹
百度從做智能小程序的第一天開始就打造真正開源開放的生態,我們的愿景是:定義移動時代最佳體驗,建設智能小程序行業標準,打破孤島,共建開源、開放、繁榮的小程序行業生態。百度智能小程序的生態玩家有三類,分別是:聯盟合作伙伴、開發者和用戶。對于聯盟合作伙伴,滿足合作伙伴的生態共建、流量共享、商業共贏訴求,使得合作伙伴App內缺失場景得到高效補充,拉動合作伙伴App用戶使用時長,共享小程序的變現收入。對于開發者,滿足了開發者一次開發,多端運行訴求,使得開發者流量獲取更加便捷高效、并且增加開發者商業收入。對于用戶,滿足用戶的無需跳出即可享受一站式服務訴求。百度搜索做為小程序的十分重要分發入口,通過構建統一的小程序行業生態, 提升百度的搜索生態中的用戶體驗、服務閉環。
百度智能小程序開源的架構是如何支撐起整個聯盟生態運轉的呢?
如圖所示,小程序開源聯盟的整個業務架構分位四層。包括:聯盟宿主層、對外聯盟賦能層、中間服務層、基礎建設層。
1.2 小程序開源與廠商合作介紹
隨著百度小程序開源聯盟的不斷發展,也吸引了頭部手機廠商。小程序開源與廠商共建了豐富的業務場景,不僅包含廠商的瀏覽器場景,還有桌面鎖屏、負一屏、全局搜等多種場景。如此多樣化的場景建設中,我們面臨的共性挑戰是:如何保障廠商線上分發質量、如何建設一條從廠商瀏覽器到百度搜索到小程序的全流程分發管控通路,從而可以精準、實時的管控廠商瀏覽器的小程序分發。
具體我們是如何考慮并建設的呢?下面將詳細介紹下。
二、整體技術建設思路介紹 2.1小程序開源分發保障技術要點
1.背景介紹
開源保障核心圍繞的對象為宿主與小程序,核心目的是為了保障小程序在宿主上的分發質量。
為什么會存在分發質量問題?宿主在入駐開源后需要集成開源SDK并進行相關能力的開發,在這些流程完成后宿主就獲得了相應的宿主能力。小程序是基于swanjs開發框架進行的開發,swanjs這套運行時框架底層同樣是依賴開源SDK運行,因此在小程序完成開發后小程序本身也獲得或依賴了相關能力。因為不同的宿主能力支持情況不同,就會導致同一個小程序在不同宿主上分發時可能遇到某個宿主不支持小程序使用到的某個能力,進而導致該小程序無法在宿主上正常打開或者降級為H5打開,導致用戶體驗受損。
因此需要有一套開源保障方案來提前發現宿主與小程序之間能力不匹配情況,進而確保系統能夠自由管控小程序在宿主上分發全過程。
2.技術要點
要實現小程序在宿主上分發通路建設,核心涉及端流程打通、能力與定級流打通及最終分發流打通三大板塊,如下圖所示:
1)端流程包含宿主端流程和小程序端流程打通
a、宿主端流程:
宿主入駐開源,入駐成功后宿主需要集成開源SDK與開發,宿主開發完成后即可打包發布宿主App;同時宿主包在發布前需要經過宿主能力測試,通過下載宿主工具進行CTS能力測試并產出宿主能力支持情況。
b、小程序端流程:
開發者進行小程序開發,開發完成后操作小程序包版本發布上線,之后小程序開源保障模塊會訂閱小程序發版動作,同時拉取小程序包信息執行小程序能力掃描測試,并產出小程序能力使用情況。
2)能力與定級流
在宿主與小程序分別完成接入與能力掃描后,開源保障系統就可以分別基于宿主與小程序能力掃描結果進行解析,產出最終的宿主和小程序能力使用情況并存儲。同時開源保障系統可以基于宿主能力與小程序能力分別對宿主和小程序進行能力定級,計算出宿主與小程序當前能達到哪個等級,并給宿主和小程序分別打上等級標識。
3)分發流
主要由小程序分發端實現,主要根據用戶在開源保障系統中配置的分發策略,基于策略計算小程序是否滿足在宿主上分發條件。
3.名詞解釋
SWANJS:小程序前端運行時框架。
能力:能力指的是小程序開源系統中,對百度APP或者說開源SDK中所封裝并支持的各種API、組件、框架等系統能力的統稱,詳細可參考小程序開發者文檔進行了解,目前小程序開源共支持的能力有1000多個。
CTS測試:CTS即Compatibility Test Suite, 兼容性測試套件;是為了保障智能小程序在宿主APP穩定運行,提供了一套兼容性測試集合,宿主APP上線前,需先通過CTS測試。
AST掃描:抽象語法樹(Abstract Syntax Tree)掃描,是小程序應用的一種源碼掃描工具,通過抽象語法樹的方式對小程序源碼進行掃描分析,目前已支持小程序用到的能力、能力屬性、能力參數、能力返回值、能力涉及的關鍵路徑等多種維度的掃描功能。
L級:根據能力在小程序側使用情況,區分出一些基礎能力與特色能力和低頻能力等,同時宿主可以根據這些能力標準進行按需實現,等級劃分如下:
L1:小程序自帶,不用宿主額外配合(框架實現)。
L2:能力建議端補齊,確保基礎體驗,內部矩陣必要實現(包含手百獨有能力在內的必要能力)。
L3:特色能力,強依賴端能力滿足,宿主按需實現。
L4:低頻能力,不追求滿足,宿主按需實現。
2.2 宿主能力檢測機制
1.使用宿主工具進行CTS能力測試
宿主在集成開源SDK并完成開發后進行打包,可在開源宿主平臺下載宿主工具,對包體進行CTS能力測。,CTS支持宿主進行全能力自動測試和補充測試,補充測試可以對全能力測試中未通過的能力進行批量測試,測試完成后上傳自動測試報告。其中還存在部分能力無法實現CTS自動化測試,需進行手動測試,測試完成后宿主在手機上傳手動測試報告。
2.宿主工具上傳測試報告
在宿主執行完自動測試與手動測試后,需分別上傳自動測試報告與手動測試報告至開源保障系統,同時因為同一個宿主版本可能存在多次重復測試過程,會產生多份測試報告,因此宿主需要分別選擇一份最終的自動測試報告和手動測試報告,使得開源保障系統可以對最終確認的報告進行解析。
3.報告解析產出宿主能力
開源系統在收到宿主確認報告的操作后,開始執行報告解析,計算宿主能力支持情況,產出最終的宿主能力列表并存儲下來;在宿主能力產出的同時同樣會執行宿主能力定級,計算出宿主能力等級并進行標記;產出的宿主能力和宿主等級將在后續宿主分發小程序時分發策略中使用。
能力檢測服務可用性保障:
當用戶完成測試報告確認動作后,開源保障系統實時進行報告解析和能力解析相關操作,在一個進程中完成,如果因為系統執行異常導致的宿主能力檢測失敗,開源保障系統中設計重試任務進行兜底,保障所有宿主都能完成能力檢測。
2.3 小程序能力檢測機制: