2020天貓雙11前端體系的建設與挑戰

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

今年雙十一整體節奏從之前的“光棍節”到今年的“雙節棍”,具體業務上也有很多變化和調整,應了阿里的土話“唯一不變的是變化”。面對這些變化,是挑戰也是機會,我們要做的就是,“既要”高效支撐保障業務先贏,“又要”確保體驗和穩定性帶給使用者極致體驗,“還要”追求創新讓前端持續演進。為了實現“既要、又要、還要”,包括技術方案、流程機制、人員組織等各方面都進行了大量的設計和保障。最終第一次雙峰的雙十一圓滿結束,淘系前端也實現了自己的目標,包括應用大量優化手段和創新方案帶來業務轉化提升;將FaaS、PHA、ESR等技術應用在更多場景,分別向服務端、客戶端、CDN節點進一步擴充了前端的能力和邊界;應用視覺還原、一體化研發等提升研發效率,大幅緩解資源瓶頸等等。下面會整體介紹一下淘系前端在今年雙11的思考和沉澱,希望對大家有所助益。後續也會有各個專項的系列文章,希望大家持續關注。

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

變化 & 挑戰

今年的雙十一,首先感受到的就是源源不斷的變化。

單峰變雙峰:雙十一從之前的一個波段變成今年的兩個波段,大促的三個階段預售、預熱、正式也都對應的翻倍。首先帶來的是研發工作量的大幅增加,在時間排期不變、工作量增加、人員不變的情況高效的完成需求研發是第一重挑戰;其次面對6個階段的狀態變化,如何保持準確切換、穩定執行、體驗流暢是在雙峰期間要重點保障的內容;最後面對超過20天的超長作戰期,安全生產、人員狀態保持、快速反應都需要有強力的組織和機制進行保障。

image.png

圖:雙十一節奏

首頁大改版:最新的淘寶首頁首屏內容有顛覆性的變化,比如首屏內容簡化,推薦提前,頻道作為內容嵌入推薦等。各個業務在缺少固定的流量入口的情況下,包括運營策略、產品策略、設計方案、技術方案都需要積極調整。同時在各個場景的推薦能力也需要持續增強,今年雙十一通過將坑位數擴充套件到1000+,理論可達無限擴坑;通過智慧UI提升使用者點選率。

Group2.png

圖:手淘版本對比

業務變化:業務創新和新玩法層出不窮,包括mini詳情、旗艦店、價格表達、筆筆返、芝麻購等在內的很多業務都是全新的表達、顛覆式的升級。即是業務上新的嘗試,在技術上也要解決架構選型、對賬、一致性表達、排期等問題。

做好本職

首先要做的就是做好本職工作,保障需求研發和穩定性。需求研發方面,我們通過D2C實現了大部分UI模組自動開發、通過建設Eva互動體系降低互動研發成本、通過Serverless的一體化研發提升研發和運維效率,使前端不再成為資源瓶頸。穩定性上,也通過一系列機制和工具體系進行保障。同時增加一塊大家平時可能不太關注的資損防控的策略和方案。

D2C研發提效

去年雙十一我們設立了研發效率專項,核心就是通過 設計稿生成程式碼(Design to Code, D2C)平臺 Imgcook 來提升研發效率。最終在去年的雙十一大促會中承接了 78.94% 的新增模組程式碼自動生成,程式碼可用率達到 79.34%。

今年前端智慧化助力前端研發模式升級,數個 BU 共建前端設計稿識別演算法模型和資料集,設計稿生成程式碼技術體系全面升級,如對 UI 多型、直播視訊元件、迴圈的智慧識別增強等。今年雙十一會場承接了 90.4% 的新模組程式碼智慧生成,程式碼可用率達到 79.26%(對比去年升級設計稿智慧檢查能力,視覺稿無需人工輔助調整)。得益於D2C的研發提效,今年並沒有出現往年借調資源投入會場開發的情況。相比傳統模組開發模式,使用設計稿生成程式碼技術後編碼效率(模組複雜度和研發耗時比值)提升68%,固定人力單位時間模組需求吞吐量增加約 1.5 倍。

image.png

圖:D2C操作流程

互動研發升級

在電商領域,互動是一個重要的使用者增長方案,在提升使用者黏性、活躍以及拉新上都發揮著重要的作用。今年雙11,淘系互動團隊推出了“超級星秀貓”,我們不蓋樓、不開車,全民參與養貓出道,3只風格各異的萌貓咪一經問世,瞬間俘獲了無數消費者的心。通過 EVA 互動體系一整套解決方案,大幅提升研發效率,支撐全民養貓貓在手淘、貓客、支付寶等多個 APP 互通。藉助客戶端能力及 EVA 互動體系將效能與記憶體良好控制,讓多數使用者體驗高清穩定的互動,實現 0 故障及秒開,同時星秀貓參與人數再創新高。後續的系列文章將具體闡述淘系互動前端團隊是如何做到雙11互動又快又好又穩,內容涵蓋互動基礎、EVA研發體系和全域性穩定性方案3個方面。

image.png

圖:互動效果圖

Node FaaS一體研發

Serverless雲+端研發模式通過打通頁面程式碼和服務程式碼進行一體研發,使得前端可以從前臺頁面到後端服務完整支撐,節省中間溝通和聯調成本。在天貓榜單以及V榜的落地,使得雙11 Node FaaS 相關業務整體研發效率提升38.89%。行業導購雙十一需求也在雲+端的新模式下支撐外包快速入場,使得整體提效約20%。

穩定性保障

穩定性保障貫穿從專案啟動到結束的整個雙十一週期,下面從幾個重點方面進行簡單的介紹:

變化評估:每年的雙十一都是站在巨人的肩膀上,都經過了上一次雙十一的考驗。主要的風險就變成新增的部分以及變化的部分,這裡的變化既包括技術上的變化也包含人員上的變化。要做到對變化的充分評估,在99大促進行驗證,並且保證99大促後不再進行變化,以一個穩定的狀態迎接雙十一。

壓測:首先要進行流量評估,借鑑去年資料的同時結合今年的變化,進行相應的機器、頻寬等資源準備。完成單線路壓測,保證在預估流量模型下,自己的服務和上下游都能夠運轉正常。進行全鏈路壓測,核心驗證在0點高峰時各業務併發的情況的運轉情況,尤其是一些底層公共服務,以及優先順序的保障情況。

兜底&預案:兜底一般指在大流量或其他不可控因素的情況下,如何將使用者體驗和業務損失降低到最小。預案需要評估可能遇到的各種情況,以及對應的處理方案。

驗收:功能預演,按照使用者的所有使用路徑進行操作,目前這個工作仍是人工。時間穿越,將頁面和系統的狀態都調整為活動時間來驗證,需要打通上下游的各個系統並形成聯動。機型驗收,基本分為高階機、中端機、低端機,分別進行驗收,很多業務都需要針對低端機做功能降級。穩定性驗收,單獨頁面的效能和穩定性各自保障,但業務疊加後很可能存在問題,尤其像會場、互動、直播、旗艦店等記憶體消耗大戶,互相之間都有引流,切換後很難保證,需要整體全鏈路驗收。

變更&應急:歷次的故障資料表明,大部分的問題都是由於變更導致的,如何做好變更管控尤為重要。根據時間分為弱管控、強管控期;根據業務等級分為集團核心應用、BU核心應用、非核心應用等;建立變更的CR和審批的機制。應急主要指在核心活動期間,問題、輿情、故障等流轉機制,針對問題發現、定位問題、修復問題時間作出要求,不同等級如何決策作出安排。

監控:淘系前端持續進行監控能力的建設和升級。需要保障大促高峰的可用性以及報警的實時性,覆蓋所有的業務場景。針對越來越複雜的場景,需要端到端的監控和資料分析平臺。灰度過程缺少度量和定點監控。根據這些問題和需求,jstracker提供了安全生產的整體解決方案,打造端到端的前端監控與資料分析平臺,打造實時監控、多端覆蓋、資料分析、智慧化的資料平臺。同時根據頁面情況、錯誤日誌、源站資料、FaaS日誌等打造了雙十一的前端資料大盤。

資損防控

一直以來前端資損防控是平臺非常薄弱的一環,前端觸發的資損和輿情問題不在少數。之前全靠開發同學的經驗和意識來保證,缺少體系化的資損防控能力。去年開始組織了團隊層面的集中篩查和人工預演,對人力和時間的消耗非常巨大,並且很難保證質量並進行積累和沉澱。所以為了能有一種成本更低、預防效果更好的方式進行資損防控,2020年 S1 伊始,就重點對資防做相關產品化的設計和實現。同時今年也重點增加了商家、運營中後臺側的資損防控。

我們將資損防控氛圍了三個階段,研發階段、操作階段、執行階段。研發階段給存在資損風險的倉庫打標,將常規的價格、優惠、預設文案等case進行列舉,通過靜態掃描、UI測試用例掃描等方式進行防控。操作階段,主要是指商家、運營進行優惠、權益等設定的階段,通過表達方式統一(避免5折、0.5折造成理解差異)、二次確認、限定邊界值、低價預警等進行防控。執行階段有快照對比、服務端資料對賬等方式,執行階段的防控相對滯後,發現時很大概率已經造成實際的影響。

然而,目前仍是預防為主,不能百分之百保障沒有資損故障發生,接下來我們還在構思鏈路級別的、生產環境上的防控手段,建設一些告警和自動止血為平臺保駕護航。

業務價值

做好本職的基礎上,我們希望給業務帶來增量價值。本章從會場效能優化提升轉化、基礎鏈路新方案提升轉化、喚端技術定製策略提升精準率、智慧UI為不同人群提供不通過UI提升點選等4個方面來介紹。

效能提升

會場是每年雙十一的主角之一,會場的使用者體驗自然也是每年最關注的點。在日趨複雜的業務需求下,如何保障我們的使用者體驗不劣化甚至能更優化是永恆的命題。今年分別使用了預渲染方案和SSR方案進行優化,首先是重新定義了秒開的標準,從原來的前端時間升級到從使用者點選經過跳轉到頁面可視的時間,增加了客戶端路由、webview啟動等時間,使體驗的衡量更貼近使用者真實的體感。覆蓋了包括主會場、行業會場、外投會場等數十個場景。

預渲染

預渲染是在今年雙11會場中使用的技術方案,用於提升使用者開啟會場的體驗。將原有H5頁面渲染流程中的WebView的初始化、頁面資源載入、部分JS的執行等耗時的操作,提前執行,在離屏狀態下完成頁面“渲染”。當使用者真正點選進入會場的時候,複用這個提前“渲染”的頁面,大大節省開啟會場的時間。使用者開啟會場的整體平均耗時縮短了200ms~700ms左右,秒開率提升10%-14%。優化對中低端機絕對收益更高,已實現在低端機上實現秒開會場。讓使用者逛會場體驗更流暢了,尤其中低端手機效果更加明顯。在後續的文章也會講述包括預渲染、資料快照、並行請求等效能優化方面的實踐與思考。

Android y67 對比視訊.gif

圖:中低端機型預渲染效果對比圖

SSR

今年在不改變現有架構,不改變業務的前提下,在會場上使用了 ServerSideRendering 技術,將秒開率提高到了新的高度(82.6%);在使用者體驗得到優化的同時,業務指標如點選率等也有明顯的增長,帶來了不錯的業務價值。後續的系列文章匯中會詳細介紹前端在解決工程化、業務效果評估上的具體實踐與方法論;服務端在解決前端模組程式碼於服務端執行、隔離和效能優化上的思考和方案。

迴圈.gif

圖:中低端機型 SSR 效果對比圖

基礎鏈路

基礎鏈路是電商核心的鏈路,包含首頁、商品詳情、微詳情、交易(下單、訂單、購物車、支付成功)、資訊流、我的淘寶等基礎業務。現有的技術方案是手淘內使用Native版本,追求極致的體驗和穩定性;站外流量、包括支付寶在內的阿里系App使用H5版本,追求靈活性和可用性。隨著支付寶容器化體系的完善,在其他App中的內聚,基礎鏈路新的容器化版本具備了孵化的土壤;同時H5的一些弊端,比如資源都在遠端、Native能力使用限制等也可以得到優化。

藉助之前的“新奧創”和“DinamicX”方案(主要解決業務定製以及安卓、iOS、H5的三端一致,實現一處開發、三端生效),容器化版本得以快速擴充套件,實現四端一致。效能資料上,載入時間對比H5版本有2s的提升,基本達成秒開的目標;業務資料上,容器化版本對比H5版本UV轉化率提升70+%。

目前已覆蓋支付寶、特價版、優酷、高德、淘小鋪、一淘等App,以及通過百川SDK整合在眾多外部媒體App。業務上也接入了每日必搶、大牌直降、淘寶特價、淘寶直播、百川媒體、優酷、小鋪、輕店、花唄等業務。

喚端技術

隨著流量見頂、電商大戰進一步升級,如何做好使用者增長是各大公司必須完成的命題。使用者增長涉及的面非常廣泛,今年淘系前端聚焦在喚端技術,即外部流量拉起手淘App的技術體系。喚端技術的門檻很低,簡單到只需要拼一個類似 URL 的 scheme 就可以觸發喚端。喚端技術又很複雜,不同的渠道、不同的OS、不同的 App 都有可能針對喚端協議有限制,並有各種各樣的相容性問題;喚端鏈路中不同業務可能都有自己的業務定製需求,例如引數的透傳;喚端鏈路的效率更是被關注的核心點,不同場景不同業務在效率上可能都不一樣,因此還需要對喚端效果進行監測和對比。為了解決這些複雜的問題,我們在喚端技術上進行了又一次升級,建設了可定製的喚端策略,打造了詳細的喚端AB測試鏈路。從本次雙11 的效果看,不同場景下的喚端效率(喚端成功率)相對提升了 25~40%不等。

image.png

圖:喚端策略圖

智慧UI

隨著移動網際網路和推薦系統的發展,人和商品的精準匹配為業務帶來了效率的大幅提升。越來越多的精細化手段逐漸應用於個性化推薦領域,比如場景化推薦、人群定投技術等。同時商品的資訊比以往任何時候都要豐富(買家秀,品牌背書,無憂購服務等),不同的使用者對於內容的UI表達有著差異化的訴求,因此通過為不同人群找到合適的UI表達一定能帶來業務效果的提升。

專案的最早期,我們通過AB實驗直接定量測試,明確了相同的UI方案在不同的場景會產生差異,不同的UI方案在相同場景下也會產生差異。也就是說,針對不同場景使用不同方案是有意義的。2020年雙十一大促我們第一次大規模採用智慧UI產品化方案落地了多個前端模組,包括猜你喜歡模組、商品模組、店鋪模組等,覆蓋了雙十一的預售和正式開賣階段,承受了流量洪峰的考驗,且帶來了穩定的增長。覆蓋300多個會場,最高的會場PV點選率相對提升10%+。

技術升級

伴隨業界的技術演進和業務的發展,我們在技術上相比去年也有了新的嘗試和迭代升級,其中典型的包括FaaS的深度使用、PHA漸進式的體驗增強、邊緣節點渲染的應用等。

FaaS

Serverless,一塊深水的堅冰,逐步從深海付出了水面,阿里淘系從去年在大促實踐開始,逐漸將 Serverless 應用到前端領域方方面面。今年雙十一首先是在覆蓋場景方面,FaaS從淘寶行業擴充到會場和營銷業務,業務的複雜度得到極大的豐富。能力進一步提升,支撐的業務量級也從2k QPS提升到5W QPS,CPU水位從去年的高 QPS 規模時,精力花費降低約50%。在研發體驗方面,打造解決方案體系,單元保障、大促管控、專家系統、函式盤點等能力,運維提效約50%。在研發體驗方面,打造解決方案體系,降低研發門檻,支援外包快速入場。

PHA

PHA 全稱 Progressive Hybrid App,是提升 Hybrid 體驗的一種應用框架。提升頁面載入速度和互動體驗的漸進式 Web 應用,使用 PHA 開發的應用本質上沒有脫離前端開發和 W3C 標準,但依然擁有原生應用的特性和體驗。或許你有想到 PWA,但 PHA 有比 PWA 更強的 UI 能力和更快的載入速度。目前已經在手淘、特價版、Lazada、CBU 等多個客戶端落地,支援了618、雙11等多個大促。PHA聯合客戶端、前端團隊、資料分析團隊,跨棧協同,在效能優化方向上也做了很多優化工作,梳理全鏈路效能埋點、定義新的效能口徑(從使用者點選到可視),使用了預載入、預渲染、資源加速下載、離線資源等優化手段。

ESR

現在的渲染節點主要是在終端或是服務端,對應CSR(Client Sider Rendering)和SSR(Server Side Rendering),分別有適用的場景以及優勢和弊端。現在藉助阿里雲的能力可將渲染轉移到CDN節點,也就是我們要介紹的ESR(Edge Side Rendering),即能為前端提供渲染能力,同時也能將大量CDN機器上的計算資源利用起來。

阿里雲推出了CDN輕量程式設計環境——EdgeRoutine,這為我們提供了一個新的嘗試方向。我們可以在CDN節點去做提前渲染的事情。CDN的訪問策略是會去尋找離使用者最近的節點,就像快遞運輸的最後一公里一樣,總會派送到離客戶最近的分撥點。這麼看來頁面的網路排程時長是非常有優化空間的。並且我們還可以利用CDN節點資源共享的特性,將部分資料快取到CDN節點上,減少遠端的資料請求。

這套方案對於資料重新整理率不高、訪問量極大的頁面,ESR搭配CDN的快取能力是非常適合用的。以達人頁為例,首屏時間約能提升50%左右。現在ER的技術才剛剛起步,應用場景比較侷限,能力上還有很多不足,體系也需要不斷地建設,但這個新技術為前端提供了更多可能,需要我們不停的去探索和完善。

雙十一PM初體驗

雙十一作為電商年度最核心的節日,各方面投入的力度和資源都是最大的。作為參加過8次雙11的老兵,作為前端PM是第一次,有很多不一樣的感受。

複雜:首先是業務上,有雙十一定製和特有的主會場、主互動、貓晚等,還有淘系內部本身就有導購、行業、營銷、直播等數十個業務,同時聯動支付寶、優酷、本地生活、阿里媽媽、菜鳥等多個集團BU,與商家、ISV、物流、媒體等的協同和合作。技術上同樣複雜,前端的頁面從開發、搭建、源站、CDN的全部鏈路,以及Node FaaS的容器、中介軟體、容量準備、流量調配、機房部署等。管中窺豹,對於整個體系的認知還需要更進一步的探索。

流程:雙十一作為電商業務每年的大考,已經摸索出一套成熟的流程機制。包括人員的組成、溝通機制、時間排期、組織保障等各個方面都有很細緻的機制進行保障。

協同:雙十一是非常好的節點,可以讓各團隊、各崗位、各BU之間形成聯動,集中力量將如此龐大的體系進一步完善。很多技術的升級和突破都是在雙十一落地並進一步推廣的。這次預渲染的方案就是客戶端和前端緊密協同,在很短的時間內實現並驗證的。

多維:看問題的視角可以更多維,不同技術崗位視角,全鏈路視角,業務的視角。以一次變更的審批為例,之前更多關注變更的程式碼實現上,對上下游的影響、對穩定性的影響、對業務的影響、是否引入新的風險、影響的範圍等等都需要進行綜合衡量,做一個判斷往往需要從中進行取捨,而不單單是技術上的1和0。

招兵買馬

最後的最後,招聘貼!

image.png

淘系前端由淘寶前端、天貓前端、手淘前端三大前端團隊融合而成,在業務上負責淘寶、天貓的所有業務,如:雙11&雙12大促、聚划算、天貓新品、有好貨等營銷導購產品、淘寶直播&短視訊業務、商業千牛以及開發、使用者增長、互動&遊戲等等,囊括了新零售域下最複雜、最多形態的業務場景;在技術上在前端工程、多端架構、Node架構、互動架構等基礎體系上有著深厚的沉澱,同時在多媒體、前端智慧化、雲手機等新興體系上佈局&發展,在搭建&投放、小程式開放、工作臺等應用體系上直接助力業務。

網址:https://fed.taobao.org/

郵箱:taobao-fed-zhaopin@list.alibaba-inc.com

職位:前端開發專家-杭州/北京端架構 TL前端技術專家(IDE方向)前端技術專家(Node.JS)互動技術專家Web多媒體領域專家-杭州/廣州雲手機解決方案架構師中後臺領域架構師使用者增長領域專家投放技術高階專家軟硬體技術專家開發者平臺產品經理

相關文章