作業幫董曉聰:追求降本時 穩定性、研發效率和安全性不應打折扣
【環球網科技綜合報道】近日,2021騰訊數字生態大會在武漢召開。在大會雲原生專場,騰訊雲聯合中國信通院、作業幫等聯合發佈《降本之源-雲原生成本管理白皮書》(以下簡稱白皮書),系統性呈現雲原生成本優化方法論和最佳實踐路徑。作業幫基礎架構負責人董曉聰在會上分享作業幫雲原生成本優化實踐之路。
為什麼要降本增效?
“作業幫成立於2015年,是一家致力於用科技手段助力教育普惠的公司。”董曉聰介紹,作業幫技術現狀主要有兩大特點,一個特點是規模化,當前作業幫有數千個應用服務,對應着數萬的服務實例,這些實例部署在數十萬計算核心之上。另一個特點是複雜化,作業幫的技術棧極為豐富,使用最多的語言為PHP和Golang,約能佔到60%以上,除此之外還有大量的系統使用NodeJs、Java、C++、lua、python編寫等。
董曉聰説,作業幫從創立之初就是base在雲之上的,充分的享受了雲計算的紅利。隨着這些年的高可用建設,實現了多雲的架構。高可用、快速迭代、極致性能也是作業幫一貫的技術要求。
為什麼要進行降本增效呢?董曉聰説,這個工作之前一直也在做,但今天的要求會更高。首先,隨着互聯網的紅利消退,公司的每分錢都需要產生更大的價值,要實現成本效益的最大化。其次,成本管控,不必用的支出是應該節省的。最後,也是一個技術從業人員的追求,作為程序員,還是想要寫出更好更高性能代碼。“在追求降本的同時,還要明確一點,降本不降質,穩定性、研發/運維效率、安全等不應該為此打折扣。”董曉聰表示。
業務快速發展 平台架構面臨挑戰
隨着業務的發展,作業幫的 IT 系統面臨挑戰。現有基礎平台架構無法滿足快速增長的業務需求,業務對快速迭代、急速彈性、調用鏈追蹤、統一的監控日誌平台、提升計算資源利用率等需求迫在眉睫。
2019年下半年,作業幫開始規劃並調研容器化解決方案,“但面臨諸多挑戰”。董曉聰説,首先是應用性能有待提升。對於企業主流使用的語言,如PHP、Golang,從框架入手,但應用框架的理論性能和實際業務的性能往往有很大gap,多為業務架構缺陷或者數據存儲設計的不合理導致。同時應用框架隨着功能的不斷迭代和更高的要求,自身性能上也需要優化。
其次,應用部署模式差,帶來計算資源的浪費。對於高併發業務,虛機下機器峯值負載常規在10%-20%,極限可提升到30%-40%。高流量業務一般代表着公司核心業務,一方面為了穩定性的考慮,整體水位不能控制得過低。另一方面,為了應對一些突增流量,要預留一定buffer。低負載業務一般碎片化比較嚴重,而這些服務比較長尾,進而拉低了整體負載。
同時,還存在時間空間不均的問題。從時間上看,互聯網業務普通有明顯的波峯波谷,波峯和波谷的實際資源使用量至少有一個數量級差距,且真正的最高峯只有不到一個小時。企業不得不為這一個小時的用量而付出一天的成本。在空間上,一方面是在線集羣波谷空閒了大量計算資源,另一方面是大數據離線計算需要大量計算資源。從整個公司視角來看,資源使用極不均衡。
作業幫的雲原生降本實踐
“面對這麼多挑戰,我們該怎麼解呢?”董曉聰説,針對每一個細分問題深耕並不系統,所以作業幫選擇走雲原生的道路,和雲廠商一起來充分釋放雲的潛力。
在應用層,作業幫着手對典型場景進行重點攻克。對於模塊數量最多的PHP業務進行優化運行態優化,對資源使用最多的檢索服務進行架構優化。在部署調度上依託K8S,實現了CPU、GPU、任務的自定義調度器。同時,使用在離線混部解決空間不均的問題,使用彈性擴縮+serverless解決時間不均的問題。而在資源這部分,K8S通過CRI、CSI、CNI等實現了對應用的透明,便於選擇更優的機型。
董曉聰説,檢索系統是一個複雜的系統,作為最底層且需要高性能的服務,一般是存儲和計算耦合。隨着數據量越來越大,就需要對數據進行切片,每個節點只存儲一部分的數據。由於高併發高可用的要求,單片數據節點還需要有多個副本。由此形成的一個二維矩陣。當需要進行數據更新時,由於數據量比較大,幾百TB。
“作為容器改造最難啃的骨頭,為了解決這些問題,我們決定進行計算和存儲的分離,因為只有引入計算存儲分離架構,才能從根本上解決系統複雜度的問題。”董曉聰説,經過多方調研比對,作業幫最終選用Fluid作為整個新架構的關鍵紐帶,並採用JindoRuntime 作為緩存加速引擎。
這一實踐的收益是很可觀的。董曉聰表示,PHP框架經過一系列的優化,壓測下單核可支撐800QPS,較之前有倍數級別提升。應用在具體線上業務,帶來43%的資源使用降低。數據同步週期從小時級別降低到分鐘級別,一般在8分鐘內就可以完成。運維成本也大幅度降低,交付週期從天級別講到到小時級別。性能提升了30%,節省了萬核級別的資源使用。