24億級用戶超級APP背後的全技術大揭祕

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"進入十億級用戶“APP 俱樂部”,可以說是很多做 APP 的公司夢寐以求的目標。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2017年,剛剛成立2年的茄子科技(海外SHAREit Group)交出了一份亮眼的出海成績單,旗下APP  SHAREit(國內茄子快傳)全球用戶總數達到了10億+,躋身十億級用戶“APP俱樂部”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"之後,SHAREit 仍保持着驚人的增長速度。2018 年,SHAREit 全球用戶超 15 億,2019 年,SHAREit 全球用戶超 18 億,月活超過 5 億。截止目前,茄子科技包括 SHAREit 在內的多款 APP 產品全球累計安裝用戶量近 24 億。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"伴隨着 SHAREit 在全球成爲“爆款”產品,茄子科技也成爲國內出海潮中的衆多互聯網公司中先一步闖出一番天地的佼佼者。出海之旅愈發深入,抵達終點的路徑也就愈發清晰,這是一場關於產品、技術、運營的綜合考驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於出海企業來說,如果把移動互聯網產品看作一根支起全球的“撬棍”,那麼這根撬棍能發揮出多大的力量,離不開背後堅實的技術支撐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"近日,InfoQ 專訪了茄子科技多位技術 Leader,試圖從技術的維度探究下,幾十億量級的超級 APP 是怎樣“煉”成的,以及在技術的護航下,這家公司是如何支撐業務一路迅猛擴張到 24 億用戶規模的。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"24 億級用戶產品,需要什麼樣的技術架構搭建?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於 24 億級這樣龐大的用戶規模,應該怎樣做基礎架構搭建?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"成立 6 年來,茄子科技用戶規模從 0-1 的過程,實際上也是該公司的基礎架構從 0-1、從 1-10 的建設歷程。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"茄子科技基礎架構負責人在接受 InfoQ 採訪時表示,無論從用戶角度,還是從服務端建設角度看,公司整個基礎架構從一開始簡單的、小規模的系統,逐步演進到了全面的分佈式系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"整個架構演進分爲 2 個階段:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"初級階段:"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"早期產品功能簡單,數據量少,算法相對簡單,業務迭代速度快,大約一週迭代一個版本,但面臨後端人力不足的挑戰。整個後端業務 100% 在公有云上,團隊充分利用公有云的 SaaS 和 PaaS 服務來支持業務迭代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"快速發展階段:"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"到這一階段,在某些業務場景下,公有云 SaaS 和 PaaS 服務已經無法滿足需求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一是成本的需求。當業務規模小時,採用公有云的 SaaS 和 PaaS 服務的成本較低,但一旦業務規模擴大,數據規模和服務壓力成數量級增長後,成本會線性上漲。二是與功能 \/ 性能相關的需求。公有云的 SaaS 服務提供的多是標準化、通用的能力,其會爲解決多租戶問題設限制。隨着公司業務發展,已觸發了諸多限制進而導致影響業務增長。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此,茄子科技開始逐步減少對雲廠商的深度依賴,在採用其基礎設施層面的 IaaS 服務的同時,與自研服務相結合,完成對業務的支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"後來,在公司由工具型產品向內容產品轉型的過程中,數據量日益激增,推薦算法不斷增加,進一步提高了對數據存儲及算力的要求,於是,茄子科技結合開源軟件引入了大量自研架構服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,茄子科技的架構分爲兩方面:一是 IasS 層面依託公有云提供基礎資源,整體採用混合雲的多雲架構,以最大化獲取雲計算資源,充分應用每個雲廠商的優勢,提升議價能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"二是根據自有業務場景採用開源 + 自研架構。在技術組件選擇方面,現階段主要以開源方案爲主,並在此基礎上針對業務場景做深度擴展和定製,如在開源軟件基礎上定製自有的 KV 存儲系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"茄子科技一開始只採用“一朵雲”,後來綜合權衡容災、成本等因素,轉向多雲架構。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但這一轉變並不容易。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這個過程中,要做部分用戶和業務遷移。但以前在“一朵”公有云上時,與公有云的各種服務做了技術上的深度綁定,這導致無法直接平行遷移。需要對基礎架構和基礎服務升級改造後,再進行服務遷移。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務遷移相對容易,麻煩的是做整個架構升級,因爲它要求全公司所有業務線都要動起來,這極爲考驗整體架構的擴展能力。在遷移過程中,還要保證零事故、無縫遷移保證高可用,讓用戶不受任何干擾。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而且,產品 \/ 業務迭代發展不等人,研發人力沒有冗餘,留給整個遷移的時間窗口非常短,僅僅只有不到六個月時間。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"時間緊張,基礎研發團隊通過倒排工期,快速推進,制定了“四步走”計劃:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一,和雲廠商共同制定整體架構方案;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"二,內部雲平臺團隊與基礎架構團隊聯合制定自研方案,商討自研架構方案如何適配到業務側;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"三,與業務研發部門一起制定零事故實現平行遷移和架構升級方案;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"四,拉通所有團隊高效協作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一步一步邁進,克服了所有挑戰後,最終,基礎研發團隊在規定時間內完成了遷移,在這個過程中,也成功做到了零宕機事故,對用戶零干擾。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上述負責人表示,現在乃至於未來一段時間,茄子科技還會採用混合公有云方案來支撐業務,應用架構朝着雲原生架構方向走,“雲原生,要生在雲上,長在雲上,要用雲的各種便利性,例如,"},{"type":"text","marks":[{"type":"strong"}],"text":"應充分利用公有云靈活的彈性擴縮容能力及多雲融合跨區域的容災能力,來實現高可用性、高性能、高可擴展的架構”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於技術選型背後的邏輯,茄子科技側重綜合平衡項目、團隊、技術三個方面。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"項目:"},{"type":"text","text":"明確項目的性質、規模、重要程度、時間要求。項目需求會影響甚至限制技術的選型,如果項目是實驗性項目且開發時間短,此時要重點考慮快速開發能力,框架選型考慮選用生態成熟的技術。如果項目重要且開發週期長,這時對併發性、實時性、可用性,數據一致性及安全性均有高要求,組件選型上尤其要慎重。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"團隊:"},{"type":"text","text":"考慮技術團隊成員背景,針對較基礎的技術選型,如語言、框架、數據庫、中間件等,通常選擇適合團隊的、相對熟悉的技術。如果想選擇其他技術,要評估團隊是否 hold 住。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"技術:"},{"type":"text","text":"從應用性、可維護性、可擴展性、性能等方面考慮技術特性,重點考察技術的成熟度、社區活躍度、架構匹配度等,側重評估技術是否適合業務場景。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着用戶量劇增,平臺複雜度會大大提升。如何解決複雜性的問題,上述負責人認爲,首先從架構層面要做好分層解耦,業務系統層、中間件層、基礎服務層、雲平臺層等權責明晰。分層後,需劃定好邊界,以避免各層互相推諉。另外,還離不開將單體服務微服務化、配置化,在微服務化拆分過程中要持續加強建設服務治理的生態體系。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"面向 200 多個國家,如何做好個性化分發和推薦?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"出海環境下,移動互聯網 APP 用戶羣體遍佈全球,這對做好個性化分發和推薦,滿足不同用戶深層次的個性化需求帶來了極大的挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"茄子快傳的產品矩陣目前覆蓋全球 200 多個國家和地區,尤以新興市場 — 東南亞、南亞、中東、非洲、俄語地區爲主。針對這麼多國家,怎樣做算法推薦?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"茄子科技大數據和 AI 負責人向 InfoQ 表示,針對不同國家,APP 採用相同的框架,但在內容推薦過程中,算法端存在差異,受衆羣體變了,策略也要有相應調整。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在針對某一國家的用戶進行內容推薦前,團隊首先會從負責該國一線業務的人員處瞭解相關信息,如國家文化習俗,受衆特點、喜好等,再基於這些信息制定算法策略的 Baseline。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"推薦算法的重心在於迭代。一方面會基於業務團隊反饋或者 Badcase 來調整,具象化共識。另一方面進行線上 AB 實驗,基於數據方法論來檢驗效果和調優。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“茄子科技不光跟其他公司一樣面臨不同內容、類型的推薦,我們的推薦系統面向的受衆覆蓋衆多國家和地域,不似國內地域間差異不明顯。不同國家的差異有時候往往是巨大的,不同國家的用戶風格、習慣、偏好都存在較大差異。因此,我們的大數據投餵算法已覆蓋了多產品的多類內容,涵蓋業務種類多樣。在做好算法體系的擴展性的同時,我們針對不同國家、不同場景也會做額外的深度探察”,上述負責人表示。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在個性化推薦已經不是社交產品發展的趨勢了,而成爲了標配。但一個不能忽視的問題是,現階段個性化推薦還沒有那麼智能。有時候,算法推薦的可能並不是用戶想要的,算法往往推薦給用戶大量相似內容,這反而會給用戶帶來困擾。“投用戶所好”和“挖掘用戶的深度目標和需求”之間的矛盾仍未完全調和。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於這個問題,上述負責人認爲,“投用戶所好”是淺度目標,而“發掘用戶深度需求”是深度目標,深度目標更難實現,難在其無法量化,不好刻畫。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"他認爲,這一矛盾的核心在於算法優化目標。解決這類問題的前提是構建評價指標,進行推薦效果評估時,除評價單一目標優化效果等目標外,還會從多目標的角度作評估,如關注多樣性、新穎性、驚喜度等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當用戶偏好和深度目標發生衝突時,首先會基於場景分析業務目標,建立正向收益的同時,提出負向折損的忍耐度。在執行中的判斷,會根據某些場景的獨立性、影響週期等做指標置換。但當深度目標不確定時,衝突比較難化解,對此,團隊在做置換的基礎上會基於價值取向,做更多服務於用戶長期增長的工作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"具體推薦過程中,團隊還會收集用戶端的反饋,來驗證推薦效果,推薦效果的 Feedback 和調優是推薦最重要一個環節,團隊從方方面面全方位收集各種反饋,以此來做整體調優。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據瞭解,茄子科技整個數據鏈路包括兩部分,一部分是偏技術方向的演變,另一方面是支撐多樣業務的演變。基於這兩類場景,採用兩類思路,第一類偏漸進,另外一類偏創新的思路。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中,漸進思路往往映射通用解決方案,因爲大數據從採集、處理、分析、架構,都有相對成熟的通用技術方案。茄子科技採用業界通用的流、批計算引擎,同時爲了可靠性,並基於業務多變的訴求做漸進升級和二次開發,比如,茄子科技業務的特殊性使得在多雲多區域上面臨不小挑戰,因此也會有針對性的做平臺層的封裝。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前茄子科技還正在推進湖倉一體架構的逐步演變,將數據湖、數據倉庫等不同概念相融合。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"SHAREit 前端工程化建設:從石器時代到信息時代"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"前端工程化,通俗的理解是,儘可能快速地實現可信賴的產品。其中兩個關鍵詞,“快速” ,講求開發速度、構建速度、測試速度、問題定位速度;“可信賴”,包括代碼的質量、產品的性能、安全、及重現和定位問題能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"茄子科技前端負責人介紹,SHAREit 的前端工程化建設經歷了三個階段:石器時代,工業時代,信息時代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"石器時代:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在石器時代,典型特徵是單工程的 MVC 架構,公司發展初期人比較少,反而效率更高,問題也比較少。但隨着公司發展越來越快,SHAREit 從單業務發展到多業務的平臺型產品時,單工程架構在人員節奏方面出現了較多問題,如代碼耦合導致一些問題浮現出來。這時,便開始工程組件化重構,進入到工業化時代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"工業時代"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"工業化時代,典型的特徵是組件化。茄子科技使用的是多工程、多倉庫的方案,每個組件或 SDK 都有自己獨立的倉庫,都可以獨立於主工程進行單獨的編譯和運行。這方面分爲三大層:APP 的殼、業務層、基礎層,基礎層再往下還有更多、更細粒度的劃分。前端團隊自上而下通過 AAR 的方式進行依賴。組件化採用“分而治之”的思想,很好地解決了多團隊協同作戰的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"信息時代"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着公司孵化更多產品,每個產品在不同國家定製不同功能,規模越來越大了,用以前的組件化形式很難高效地支撐現有的業務,於是,茄子科技引入了 Google Bundle 技術,進入到信息化時代。其實針對這一問題,國內多采用插件化的方案,但由於海外不能做插件化技術,茄子科技只能運用谷歌自有特性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在信息化時代,典型的特徵是 Bundle 組件化。Bundle 模塊具有反向依賴的特徵。通過增加 Bundle 殼及自動化檢測工具的形式,讓 App Bundle 的特性和以前已有的組件化融合,讓開發者保持已有的開發模式。通過 App Bundle,可以做到針對每個國家用一個 APP 按需定製不同功能,如內容、直播、遊戲等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲提升效率和質量,茄子科技還搭建了客戶端 CI\/CD 平臺,流程主要有編碼規範檢測、大文件 \/ 圖片檢測、靜態代碼掃描,關鍵文件觸發 Review、代碼 Review、安全風險檢測,預編譯、包體積監控,編譯速度監控等,能做到自動打包、自動檢測、自動化測試與發佈。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據悉,前端團隊已經涵蓋開發、測試、構建、部署一系列流程,通過自研 APM 系統的預警機制、自動分配、輔助信息等,能夠及時發現且快速定位問題,並優化迭代,最終形成整個研發流程閉環。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"4如何保證全球 24 億級用戶產品使用穩定性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如何保證全球 24 億級用戶使用產品的穩定性,對茄子科技來說,是至關重要的一環。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“穩定性” ,即產品可以給用戶預期內的服務。這句話看似輕鬆,但當面對海量用戶以及複雜的全球環境時,實現起來就不容易了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"具體而言,服務端高可用、客戶端高可用、傳輸連接速度、傳輸速度、在線內容拉取性能、播放成功率等都屬於穩定性體系建設的範疇。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了確保穩定性,茄子科技搭建了一整套作用於整個軟件開發週期的體系化解決方案。在開發階段有一系列開發規範以及本地校驗流程,便於研發提前發現問題;而從提交 MR 開始,構建系統會自動執行預設的校驗流程,全部完成後才能合入主幹;在測試階段,除常規測試外,還會覆蓋全面的自動化測試。在用戶真實環境中,會自動採集用戶使用中的穩定性指標如啓動速度、卡頓、內存、崩潰、網絡等問題,上報後 APM 平臺會進行數據清洗、加工處理、自動分配,結合報警,開發就可以第一時間開始排查線上發生的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"茄子科技平臺自身的高流量特點對穩定性要求高。茄子科技認爲,穩定性的範疇不應僅侷限在平臺建設上,還要擴大至涵蓋組織、人、工具、故障管理等多方面、完整的穩定性體系建設。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,從公司整個組織結構看,公司自上而下、跨團隊(包括業務團隊、基礎研發團隊、產品團隊、內容運營團隊等),都要達成穩定性的共識機制。因爲各個團隊對穩定性理解不同,如果達不成共識,穩定性建設就無從談起。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,根據成本、業務容忍度,系統當前的穩定性狀態,針對不同的業務系統,設定不同的穩定性目標,核心業務的目標穩定性顯然更重要。穩定性體系建設過程中也要避免“一刀切”都是最核心指標,這需要我們做好穩定性、成本、研發效率之間的平衡。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從人的角度看,開發、測試、運維、安全,需要每個人從自身崗位出發去做技術體系的建設,做好流程規範、開發規範、測試規範、運維上線規範、事故覆盤等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"穩定性建設還離不開工具作爲手段。從工具的角度看,要通過客戶端鏈路埋點,服務端限流降級等一系列技術方案的需求,由基礎研發團隊輸出一系列的支持工具和平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"穩定性建設裏,最關鍵的一點是故障管理。故障管理分爲故障前、故障中、故障後。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"事前預防,包括做業務成熟度評估,分析其短板;做容錯測試,通過主動性測試提高故障處理能力;上線前做容量評估和規劃。還要建立流程,保證故障發生時能第一時間響應。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當故障發生時,又該如何應對?首先是機制保障,故障要是沒有機制保障,其他的事情便無從談起。這些機制包括,故障發生後相關團隊能否快速響應,共同成立臨時“作戰室”,快速解決線上故障;當故障升級或者高等級故障發生時,是否有足夠的資源投入等。針對一些底層的業務組件,茄子科技還會和雲廠商一起聯合排障。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"故障解決完了,但事情還遠遠沒有完。故障解決完後的總結、改進和跟蹤也不能忽視。故障處理完後,各個業務方會一起復盤故障原因,並列出整改措施。覆盤結束後,相關人員會對措施關鍵節點進行追蹤、寫故障報告,最終輸出到故障知識庫,作爲以後的查閱。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,會檢查類似 \/ 關聯服務是否存在隱患,通過舉一反三的思路,避免減少重複犯錯。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據悉,茄子科技已打通了公司多個內部系統,讓開發部門在解決問題時能得到更全面的信息,方便定位問題、解決問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“如果一句話來總結:我們的穩定性系統,核心是數據,依託的是平臺,並且建立了一整套閉環體系化流程。”茄子科技前端負責人表示。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章