2021年12月2日,「新雲·共未來」雲產品釋出會上,火山引擎正式釋出了應用開發套件MARS。同時,火山引擎大前端產品負責人董必勝帶來了題為《應用開發套件MARS的多端開發實踐》的分享。
以下為演講正文:
大家好,我是火山引擎大前端產品負責人董必勝。MARS(Multi-experience App Realization Stack)是經過抖音、今日頭條等多款APP實踐驗證的,面向多端開發場景的應用研發工具,致力於透過先進的研發技術,幫助企業和使用者降低研發成本、提升研發效率。
接下來我將從位元組跳動的多端應用研發實踐、火山引擎MARS的功能及優勢、面向多場景的研發解決方案等方面進行我的分享。
火山引擎MARS的功能及優勢
近年來,隨著移動網際網路和物聯網技術的不斷髮展,手機、平板、智慧手錶、大屏等各種終端裝置爆發式湧現,給研發端帶來了研發工作量和複雜性的大幅度提升,位元組跳動亦然。
一方面,位元組跳動成立的9年時間裡,誕生了多款受人喜愛的APP,使用者量級爆發式增長;另一方面,位元組跳動今天的業務範疇非常廣泛,覆蓋短影片、直播、電商、資訊、小說、遊戲等多種業務形態,APP數量達到100+。
使用者量級的高速增長及業務廣度的不斷拓展,給我們的應用研發體系帶來了巨大的挑戰。首先,業務複雜度越來越高,且業務場景差異大,造成了我們研發人力不足、應用上線週期長、APP缺陷多、效能差、研發效能低等問題。其次,龐大的使用者基數對產品質量、交付敏捷性、交付品質、交付時間等都提出了更高要求。
如何在確保應用質量和效能的前提下,快速降低研發成本,解決質量、時間、成本的不可能三角?為了探索這個問題的答案,火山引擎將9年來APP研發的經驗和能力分享出來,打造了面向多端開發場景的應用開發套件MARS。
研發流程上,MARS能夠覆蓋專案管理、設計、需求開發、測試、運維監控等研發全鏈路。
- 最上游透過專案需求管理串聯所有開發活動,讓業務/產品同學對研發活動有更好的把控;
- 接到需求後,設計師可以用MARS進行設計資源管理、設計還原度智慧驗收,同時還能在設計師產出設計稿的同時生成UI層面的程式碼,讓研發同學避免因設計稿調整而不斷重寫程式碼;
- 在研發過程中,我們提供了開發框架、研發流水線、和Baas雲服務提升開發效率;
- 開發框架:MARS面向不同場景提供了不同的解決方案,面向現代Web應用開發的Modern.js、面向多端多屏場景的flutter/H5等
- 流水線:MARS提供靈活、便捷的流水線編排能力及場景化的模版,支援不同開發模式下的交付活動
- 雲服務:提供了高效能、高可用的基礎Baas工具,幫助開發者更好地實現業務目標
- 為了更好地保障使用者體驗,面向多端場景提供自動化測試工具和監控能力,支援線上、線下產品質量和體驗提升。
今年低程式碼的概念比較火,在此之前MARS已經有很多低程式碼搭建的經驗積累。MARS支援活動頁面搭建、中後臺系統搭建、資料看板等,面向生態場景也提供了比較好的擴充套件。
簡單總結下MARS的優勢:
- 更便捷的開發框架——在任何業務場景下,研發同學都能夠便捷開發;
- 更快速的交付效率——靈活的流水線及覆蓋開發過程中各種場景的服務能力,實現自動化的程式碼整合和交付,讓研發同學專注coding;
- 更好的產品體驗——線下透過自動化的測試工具攔截缺陷,線上實時監控應用狀態,幫助開發者快速發現和定位異常;
- 更低的開發成本——豐富的業務元件及視覺化的搭建能力,實現少寫程式碼甚至不寫程式碼即可實現業務搭建。
基於位元組跳動9年研發經驗積累的應用開發套件MARS,我們的工程師實現了質量、成本、時間三者兼得,在不可能三角的突破上,給出了火山引擎方案。
6大解決方案,覆蓋研發的多場景、全流程
除了努力突破不可能三角,針對研發中的不同流程、不同場景、不同人群,MARS打磨出6大解決方案:
- 面向客戶端研發的「移動研發解決方案」
- 面向QA、研發的「質量解決方案」
- 面向研發、運維的「APM效能監控解決方案」
- 面向產品、運營、設計師的「低程式碼解決方案」
- 面向前端、後端、全棧開發的「Web研發解決方案」
- 面向產品經理、PMO的「專案管理解決方案」
移動研發解決方案
移動研發解決方案中,MARS有3大產品亮點:
研發體系上,作為位元組敏捷迭代APP背後的秘密,MARS移動研發平臺能對研發流程進行小時粒度的計劃和精細化管理,精確管理著位元組每一個APP每一個版本的時間節點。版本的需求規劃、設計、開發、測試、迴歸、launchreview、灰度、全量、提審等,都能按預定時間和目標進行交付,在節奏和效率上能夠與製造業精細化管理的工廠車間相媲美。以抖音為例,版本經理已經把2022年12月份的版本計劃都制定好了。
相較於業界通常一到兩個月一個正式版本的釋出節奏,位元組已經將周粒度的正式版本釋出常態化。抖音、頭條每週正式上架一個新版本,從不間斷。
熱更新框架。相比於伺服器端想發就發的場景,如何讓客戶端APP也能更快速地上線,讓業務第一時間觸達使用者,一直是客戶端研發同學想解決的問題。外掛化就是解決這一問題的利器,我們將業務功能獨立成一個個外掛進行動態下發,比如頭條裡的小說、汽車等板塊。
2016年穀歌曾做過一個統計調查,一個APP的安裝包大小每增加6MB,新增使用者的轉化率就會下降1%。當一個應用安裝包達到100MB量級的時候,新增使用者轉化率呈斷崖式下降。我們透過外掛化的方式把今日頭條的包體積由120M+壓縮到了極速版的15M,有效提升了使用者的轉化效率,現在這套能力被整合到了MARS,開放給所有開發者。
Flutter框架。多端開發是一個繞不開的話題,如何快速實現一次開發多端執行?作為首款全面支援flutter的開發平臺,我們在flutter框架、元件、開發者工具、開發流程、測試、監控等場景上提供全面的支援。以flutter框架為例,我們做過一個測試,位元組版本比開源社群版本的首幀耗時降低了35%。跨多端場景下,flutter極大地降低了開發的人力成本。
質量解決方案
質量解決方案中,MARS有2大產品亮點:
智慧探索:常見的monkey工具需要跑很長時間才能做到頁面場景的覆蓋,但單次需求改動又比較小,導致了大量的時間浪費和機器佔用,MARS自研的fastbot能基於歷史訪問UI鏈路,自動尋路到對應的頁面,基於程式碼分析圈定影響域進而發起關聯功能的測試,有效提升測試效率。在位元組雙月任務執行數超10,000次,發現異常超過50,000個。
UI自動化:UI自動化在位元組被大量應用在有埋點場景的自動化測試中。比如在今日頭條的feed流基礎業務中,埋點測試已經100%覆蓋,完全替代了人工測試;抖音商業化的埋點自動化校驗,一個雙月發現問題38個,召回率100%,0漏測,有效降低了QA的人力成本。
應用效能監控解決方案
在APP監控、Web、服務端監控、Flutter、Hybrid、小程式、手遊、OS、PC等場景中,MARS沉澱了一套完整的應用監控解決方案。這套解決方案有三大亮點:
低成本接入:一方面我們提供了無侵入式的SDK,另一方面可以根據接入和使用的功能按模組接入,不同的功能還提供了開關配置。
安全可靠:我們提供了安全氣墊和防卡死保護機制,確保業務能夠在極端異常情況下即使發生了crash、卡死還能正常執行。
技術領先:在位元組,即使採用抽樣採集的方式,每天上報的資料仍然有千億條。在處理海量資料的時候,我們碰到過各種複雜性能的分析場景。在這些場景下我們磨鍊出了領先的技術能力,比如ANR時序圖、異常現場還原技術,自回溯演算法等,還有行業首創的基於memory graph的OOM分析能力。基於此技術,抖音和今日頭條的OOM率降低了50%以上。
低程式碼解決方案
低程式碼的應用場景非常廣泛。官網頁面搭建、H5搭建、中後臺搭建、後端建模等,都可以使用低程式碼的方式進行搭建。MARS低程式碼還提供模板市場,非技術背景的同學可以完全不需要搭建,將平臺已有的模版初始化後開箱即用。
市面上的低程式碼工具一般都有一套自己特有的程式碼生成和執行邏輯,生成的程式碼和原生標準前端方案有較大差異,不能進行後續的人工開發和維護,也就意味著如果想人工介入,就需要拋棄現有的方案重新開發,同時標準開發的元件無法接入到低程式碼平臺裡。
低程式碼解決方案中,MARS提供3大能力:
- 與標準前端方案緊密結合,能進行已有元件的快速匯入、快速二次開發部署等,效能體驗和原生無異。
- 靈活開放的接入能力,可以基於SDK+OpenAPI對編輯器進行擴充套件,能較好地和已有系統平臺對接。
- 一站式的完整建站能力,能夠一站式實現後端搭建、前端編排等。
Web研發解決方案
Web研發解決方案為開發者提供三大產品能力:
工程方案一體化:前端開發者會有不同的工程結構、框架、開發語言、開發正規化。MARS Web研發解決方案可以支援各種工程方案的匯入,並實現工程、構建、測試環境、釋出環境等初始化的全自動。
研發鏈路閉環:相比傳統意義的流水線,MARS更進一步,能夠實現需求任務的建立、工程搭建、coding、編譯、測試環境部署、沙箱預覽、程式碼codereview、整合、小流量灰度、正式釋出的全過程閉環,實現真正意義上的浸入式開發。
Serverless部署:我們能支援Web、Node、Electron、離線包等各種業務場景,同時有比較好的效能實踐。以頭條M站業務為例,峰值13000 qps,冷啟動時間15ms,成功率100%。
專案管理解決方案
正如開頭所講的專案管理不可能三角,如何實現成本低、質量好、時間快的三者兼得?研發會碰到很多問題,專案執行難,制定計劃難,溝通成本高、任務跟進難等。在大規模團隊協同時這些問題尤為凸顯,MARS的解決思路是“管理+協作+效能”。
管理:管理好產品、需求、任務、缺陷、迭代、物料。
協作:專案進度協作、團隊任務協作、研發流程協作。
效能:燃盡圖、人力甘特圖、交付效率度量提升人效。
以上就是火山引擎應用開發套件MARS面向不同研發流程、不同研發場景、不同研發人群的全部產品能力介紹,希望能為企業和開發者提供良好的研發體驗。
完善的使用者成長體系,與開發者共同成長
除了提供功能強大的產品,我們還希望我們的開發者使用者能夠依託平臺獲得技術提升和持續成長。為此火山引擎推出開發者成長體系,包含MARS訓練營、MARS TALK、MARS小報、客戶成功計劃等,希望能夠透過這些方式幫助開發者學習技能、用好工具。
- MARS訓練營:輸出圍繞Android、iOS、Web、小程式、flutter、H5等場景的開發課程,幫助開發者提升開發能力;
- MARS TALK:提供位元組在業務過程中碰到的典型case剖析、實戰經驗分享;
- MARS小報:提供相關領域的前沿進展,以及未來發展趨勢的資訊;
- 客戶成功:一方面在接入時提供首個專案的伴飛計劃,幫助業務快速接入整合,另一方面提供7*24 工單、電話oncall等日常服務,保障業務穩定執行。
目前,已有諸多客戶、開發者成為我們的合作伙伴,使用火山引擎應用開發套件MARS提供的研發能力。後續MARS會持續聚焦於產品能力的打磨和功能的迭代,給客戶和開發者提供更好的產品體驗、更專業的產品服務。
點選「新雲 • 共未來」火山引擎雲產品釋出會報名立即下載「火山引擎雲產品釋出會」相關資料!