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

講師介紹架構


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

背景概述微服務


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

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

執行方案性能


爲了使僞公車變爲真公車,須要解決雙端差別問題、代碼耦合問題和平臺工具落後等問題,來提升穩定性、並行性和高效性。2018年端上經過雙端融合、組件化和研發中臺建設來達到目標。設計

 

雙端融合採用下沉C++、上漂動態UI和雙端拉齊的方式來實現。下沉C++,實現了跨端的同時提升了性能;上漂動態UI一樣實現了跨平臺,且下降了開發門檻,讓開發更簡單,效率更高,同時也爲將來動態化作好鋪墊;雙端拉齊更多的是借鑑雙端的優點作到融合,同時保留雙端的差別做爲擴展,作到儘可能保持一致的同時,也很好地兼容了Android/iOS平臺的特性。3d

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

 

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

 

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

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

 

實踐收益


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

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

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

將來展望


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

 

結語


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

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

相關文章
相關標籤/搜索