ArchSummit分享 | 高德地圖App架構演化與實踐


講師介紹


郝仁傑,高德地圖無線開發專家。在7月13日落幕的2019年ArchSummit峰會上就高德地圖近幾年的App架構演化和實踐進行了分享。

背景概述


高德是國內領先的數字地圖內容、導航和位置服務解決方案提供商,端上分手機和車機兩條主線。近年來,高德業務迅猛發展,人員規模急速擴張,代碼量急劇膨脹,如何提高團隊高效並行作戰的能力,端架構在一致性和動態性方面做了很多嘗試:從最初的雙端原生單體架構,到地圖引擎下沉C++,再到動態UI框架的建設,收到了一定的成效,但面對業務持續的高速發展,依然還有很多方面需要繼續完善。

為了讓業務開發有節奏的進行,項目上每年會制定一些公車計划。公車就是每個App版本,貨物就是對應的產品功能,貨物組裝就是功能開發,公車計划即每年的發版計划,公車按照指定的時間來,把組裝好的貨物拉走。但由於雙端代碼差異較大、耦合嚴重、復用率低、職責不清晰、平台工具簡陋等問題,公車並無法按照計划拉走貨物,貨物組裝慢且質量差,迫使公車等待,導致整個版效周期長達3個月,崩潰率也高達萬分之八,公車變成了偽公車。

執行方案


為了使偽公車變為真公車,需要解決雙端差異問題、代碼耦合問題和平台工具落后等問題,來提高穩定性、並行性和高效性。2018年端上通過雙端融合、組件化和研發中台建設來達到目標。

 

雙端融合采用下沉C++、上漂動態UI和雙端拉齊的方式來實現。下沉C++,實現了跨端的同時提高了性能;上漂動態UI同樣實現了跨平台,且降低了開發門檻,讓開發更簡單,效率更高,同時也為未來動態化做好鋪墊;雙端拉齊更多的是借鑒雙端的優勢做到融合,同時保留雙端的差異作為擴展,做到盡量保持一致的同時,也很好地兼容了Android/iOS平台的特性。

組件化參考了手淘Atlas、BeeHive和網易LDBusMediator等成熟的容器方案並融合了高德自身的業務特點和設計思考,定義了容器、模塊、微應用、微服務和頁面路由。借鑒了Android組件化設計思想,讓業務專注於自身需要的服務,而無需關注其它。

 

通過架構的分層、分組,讓模塊的歸屬、職責清晰化。

 

容器為模塊提供了其內部的結構框架、架構分層、分組讓模塊找到自己的位置,二者結合實現了端上的組件化,解耦了代碼、提高了功能的復用率,也為業務並行開發打下基礎。

研發中台建設根據當前的公車流程,結合組件化方案進行細分,制定了新的產、研、測、項詳細流程,並將流程中台化,降低了風險、提高了效率、實現了研發並行。

 

實踐收益


雙端融合,解決一致性問題,提高了App的穩定性;組件化,解決代碼耦合、提高復用率;研發中台建設,將流程自動化、標准化,同時結合組件化,實現了開發階段的並行,做到了真公車。發版周期縮短了一半。

通過針對性代碼質量治理,加以平台管控,使得崩潰率從萬分之八降低到十萬分之八。

通過工具升級、組件化后基於產物的集成,打包時間從40mins+降低到8mins。

未來展望


2018年,高德客戶端通過一系列架構治理,從偽公車變成了真公車,但這只是近幾年架構演進的一個階段性成果。未來,我們要發揮動態UI的優勢,讓業務真正動態化起來,從公車時代跨入到Feature Team時代,讓公車變成一條條公路,每個Feature Team就是一個小汽車,按照自己的節奏裝好貨物后,就可以在修好的公路上自由的行駛,更好地做到靈活、並行和高效!

 

結語


歡迎大家掃描高德技術公眾號關注更多高德技術及細節,也歡迎大家加入高德,與我們一同探索高德地圖App架構的演化之路!

關注高德技術,找到更多出行技術領域專業內容

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM