在应用开发中,网易云音乐如何兼顾质量和效益
在應(yīng)用開發(fā)中,質(zhì)量和效益是非常關(guān)鍵的因素。網(wǎng)易云音樂作為用戶人數(shù)突破4億,成就移動音樂傳奇的應(yīng)用,是如何在開發(fā)中兼顧質(zhì)量和效益的?網(wǎng)易云音樂Android負(fù)責(zé)人梁建將為您解讀。
框架賦能
典型的開發(fā)框架從上往下分為三層,分別是業(yè)務(wù)層、服務(wù)層、能力層,三者之間是垂直依賴的關(guān)系,且業(yè)務(wù)層之間的水平模塊不互相依賴,這樣的分層有助于不同APP和同一APP間進(jìn)行代碼互用。
能力層跟業(yè)務(wù)邏輯完全沒有關(guān)系,可以直接遷移,服務(wù)層可以按需定制,最上面的業(yè)務(wù)層則是開發(fā)者最熟悉的業(yè)務(wù)模塊。
插件化
插件屬于業(yè)務(wù)層的組件,行業(yè)中的設(shè)計(jì)方案很多,網(wǎng)易云音樂在插件設(shè)計(jì)時(shí)主要考慮三點(diǎn)因素:
設(shè)計(jì)簡單
開箱即用、用完即止,最好是原生方案。
維護(hù)成本
當(dāng)一個(gè)APP有非常多插件的時(shí)候,維護(hù)成本是非常重要的問題。有些插件可能依賴宿主的代碼或資源,會對應(yīng)用造成很大的不確定性。
性能
要求插件具有很好的運(yùn)行效率。
網(wǎng)易云音樂插件設(shè)計(jì)實(shí)現(xiàn):
首先,插件主體載體是Fragment,非常輕量,可以嵌在任何一個(gè)Activity里面。只要預(yù)埋一個(gè)Activity,就可以啟動任何一個(gè)插件模塊。網(wǎng)易云音樂把UI組件和代碼冗余打包到插件包中,這樣雖然增加插件體積,但會減少維護(hù)成本。
對于圖片、網(wǎng)絡(luò)這些能力層的功能,網(wǎng)易云音樂則使用服務(wù)接口來提供。這樣一方面是為了減少依賴,另一方面可以讓開發(fā)者在插件開發(fā)時(shí)保持和傳統(tǒng)APP開發(fā)相同的習(xí)慣。
服務(wù)接口主要使用兩種方式,一種是路由,一種是服務(wù)注冊。為了盡可能避免進(jìn)行對象的序列化和反序列化,網(wǎng)易云音樂把Meta層下沉到底部,開發(fā)者可以直接面向接口編程,同時(shí)建議插件盡量不依賴代碼,也盡量不要固定宿主的資源ID或者修改插件的ID前綴,以免造成冗雜。
得益于非常輕量的原生插件實(shí)現(xiàn),網(wǎng)易云音樂運(yùn)行效率非常高。
組件化
上層業(yè)務(wù)組件水平模塊之間不相互依賴,也為組件化提供了很好的支持。如上圖,在開放一個(gè)動態(tài)功能時(shí),只需將動態(tài)業(yè)務(wù)組件和核心業(yè)務(wù)組件打包在一起,便形成了一個(gè)動態(tài)業(yè)務(wù)殼;開發(fā)評論組件時(shí),同樣是把評論組件和核心業(yè)務(wù)組件打包在一起。這樣的設(shè)計(jì)可以支持熱拔插,提高業(yè)務(wù)線的并行開發(fā)效率,同時(shí)可以極大地減少編譯速度。
全鏈路開發(fā)流程
全鏈路開發(fā)流程作為一個(gè)平臺,串起了開發(fā)過程中的很多節(jié)點(diǎn)。那么,這套流程是如何保證開發(fā)效率的呢?
卡點(diǎn)
開發(fā)流程被分配到每個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有各自的任務(wù)和責(zé)任。通過節(jié)點(diǎn)分配,將節(jié)點(diǎn)痛點(diǎn)逐一擊破,極大地提高開發(fā)效率。
自動化
自動化是整個(gè)平臺的核心,所有的自動化測試都是為了質(zhì)量而生。自動化有一個(gè)非常重要的應(yīng)用場景——自動打點(diǎn),這是開發(fā)者的痛點(diǎn),打點(diǎn)占用了開發(fā)太多時(shí)間。云音樂通過編譯期進(jìn)行代碼注入自動生成打點(diǎn),極大地提高了效率,減少了人工出錯(cuò)的可能性。
閉環(huán)
無論是版本數(shù)據(jù),還是上線以后對數(shù)據(jù)指標(biāo)的監(jiān)控,云音樂通過數(shù)據(jù)發(fā)展趨勢反哺于開發(fā)質(zhì)量形成閉環(huán)。
以網(wǎng)絡(luò)治理為例:客戶端的網(wǎng)絡(luò)問題非常復(fù)雜,云音樂通過觀察線上網(wǎng)絡(luò)指標(biāo)來輔助策略的調(diào)整。通過ABTest實(shí)驗(yàn),以觀察網(wǎng)絡(luò)連通性是否提升,再通過觀察數(shù)據(jù),調(diào)整網(wǎng)絡(luò)優(yōu)化策略,以此往復(fù),形成閉環(huán)。
思考和建議
1.警惕拿來主義
不同方案適用于不同公司的問題,直接拿過來使用可能會有一些不良反應(yīng),所以一定要結(jié)合各APP的實(shí)際情況來仔細(xì)分析。
2.簡單設(shè)計(jì)
簡單設(shè)計(jì)意味著很多,更簡單的設(shè)計(jì)意味著更高效的運(yùn)行、更少的維護(hù)成本,簡約往往并不簡單。
3.量化指標(biāo)
沒有數(shù)據(jù)就沒有話語權(quán),沒有數(shù)據(jù)就會失去方向,只有有了量化指標(biāo),才能呈現(xiàn)一個(gè)閉環(huán)。
4.勤思考 多溝通
需要開發(fā)者勤思考,多與他人溝通交流。例如在 “分享圖標(biāo)”的設(shè)計(jì)上,不同的應(yīng)用會做一些差異化的設(shè)計(jì)。但如果設(shè)計(jì)過度,導(dǎo)致與其他大部分應(yīng)用有較大差異,使用戶無法識別出“分享圖標(biāo)”時(shí),會造成分享率降低的后果。
*本文根據(jù)梁建講師在安卓綠色聯(lián)盟開發(fā)者大會現(xiàn)場的議題分享整理而成。
想了解更多,請點(diǎn)擊觀看講師精彩現(xiàn)場視頻>>>>
https://v.qq.com/x/page/o0804...
安卓綠色聯(lián)盟會根據(jù)每期技術(shù)沙龍議題輸出精彩技術(shù)干貨文章,分享講師PPT,為未能現(xiàn)場參加技術(shù)沙龍的您提供另一個(gè)干貨學(xué)習(xí)機(jī)會。
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的在应用开发中,网易云音乐如何兼顾质量和效益的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 走过2011---年终总结
- 下一篇: Thinkphp5 请求报错