位元組跳動公司旗下的抖音 (TikTok) ,是中國開發者的產品中全球化程度相當高的一個,它的開發團隊目前全部位於中國。在單一國家和地區的使用者規模天花板對於抖音並不遙遠時,它的開發團隊早早穿上了噴氣揹包,飛到高處看到了更廣闊的天地。
可靠元件提升工作效率
工整模型培養好習慣
抖音於 2016 年 9 月在中國上線,而登陸海外市場的計劃也於 2017 年 3 月開始啟動,經過近兩年的出海征程,抖音已經在全球市場取得了巨大成功,並在Google Play Best of 2018 獲諸多獎項,摘得 “最佳應用” (印尼區)、 “最佳娛樂應用” (全球)、 “使用者喜愛應用” (韓國、墨西哥及日本區) 等多項大獎。
△ 抖音在2018年在 Google Play 上獲得了多項大獎
隨著團隊規模的擴張,國際業務線的複雜化,如何讓源源不斷加入的新同事在龐大而精細的產品架構中更加高效整潔地編寫程式碼,長期保持程式碼庫的易維護性和協作性,是門大學問。
Google 推出了 Android Jetpack 系列元件以來,越來越多的 Android 開發者們開始使用這個 “噴氣揹包” 裡的元件打磨產品。
抖音 Android 開發團隊的阿沐和小火說,Jetpack 給他們團隊帶來的,是通用開發效率和穩定性上的提升。比如,在使用了 Lifecycle 以後,他們不用再去管理 Activity 生命週期的內容,可以放心將這部分工作全部代理給 Lifecycle了。
△ 抖音的工程師們在工作中
團隊中的阿達曾經自己註冊了一些觀察者,有時候會忘記反註冊而造成記憶體洩漏,在整體採用 LiveData 之後,這些問題已經不會出現。
阿沐表示,曾經的一些程式 crash 以及 OOM 問題,很多是因為開發方式導致的。有一些 crash 問題在灰度測試的時候可以第一時間發現,但有些 OOM 的問題其實可以 “潛伏” 很久,不經過長時間的運轉以及問題的積攢是難以發現的,通過使用 Jetpack 的開發元件,可以從源頭上避免這些問題的產生,這對整體工程的質量有明顯幫助。而 Jetpack 在團隊內部的興起,在規範開發流程上也有所幫助。
△ 抖音工程師的工位
在對新員工培訓的時候,阿沐和其他經驗豐富的同事會套用一些 Jetpack 的正規化,請新人蔘考正規化寫程式碼,這樣不容易出錯。 “如果照舊的那種模式去寫的話,有時候會忘記,尤其一些工作經驗不太足的新員工,Jetpack 的應用效果對他們的提高更明顯。” 阿沐表示 Jetpack 的出現,意外地在新員工培訓層面為團隊減輕了不少負擔。
高速發展不忘做好本地化
微小提升也能節約大成本
抖音如今在日本、東南亞以及歐洲和北美市場都獲得了可觀的使用者數量,這與團隊著重聆聽各地區使用者的聲音有關。
經過兩年多的發展,抖音已經從最初那個音樂短視訊社群演化成為一個新型內容平臺,而在這個平臺上,相比國內使用者,抖音的海外使用者更看重編輯功能。
而在一些問題較為複雜的市場,抖音的 Android 端開發團隊也做了一些特別的工具來捕捉問題。在印尼等東南亞國家,應用啟動階段的效能體驗是開發團隊需要考慮的重點,Android 端團隊會製作一些工具,以便於發現當地使用者的應用啟動不順暢是什麼原因造成的,比如有些是 DNS 解析階段出了問題,有些是下載或者上傳以及拉取資訊流階段出現了問題,最後端團隊根據他們開發工具定位到的問題,來協助其他部門的同事進行服務端、網路、CDN 的優化工作。
△ 新技術的應用幫助位元組跳動公司降低運營成本
隨著國際化程式的加快,新的技術也在節約公司運營成本上做出了貢獻。位元組跳動公司一直對新技術有所關注,很早的時候開發團隊就在考慮將 HEIF 格式應用到所有預覽動圖上。如今 Android 9 在有支援的裝置上增加 HEIF 功能後,現在抖音的開發團隊正在進行測試,評估原生系統 HEIF 應用下的載入速度、電量等情況。 “雖然對小型開發商來說,去適配 HEIF 格式可能不是一件投入產出位元別明顯的工作,但對於抖音這樣現在資料吞吐量極大的應用而言,即使這樣一點微小的提升,應用落地後每年能為公司節約的頻寬成本也是很可觀的,這也是團隊堅持向更好的體驗和技術轉移的一個動力。” 阿沐說。
在工具鏈方面,目前抖音的 Android 開發團隊已經全部使用 Android Studio 進行工作,使用 profiler 定位效能問題是他們最常用的功能。
熱愛生活的人們,在世界的各個角落用手機記錄著自己的喜怒哀樂。而工程師們和他們寫下的程式碼,在這個全球化進度加深的時代,也穿上了噴氣揹包,與世界一起跳動著,行走著,記錄著,並一同快樂著。
如果您也有關於使用 Android 技術的精彩故事想要跟更多的開發者分享,歡迎點選這裡填寫報名表並提交參與