您好,登錄后才能下訂單哦!
講師介紹
郝仁杰,高德地圖無線開發專家。在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架構的演化之路!
關注高德技術,找到更多出行技術領域專業內容
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。