《雲原生應用架構實踐》:從單體到服務化架構演進

雲計算 投資 科技 領先網絡 領先網絡 2017-08-04

綜合考慮 IT 資產、業務規模、發展階段、人才儲備及投資成本,不同企業需要的互聯網架構並不完全一樣。那麼,企業應該如何正確駕馭架構的設計和演進?有哪些通用的成熟經驗可供借鑑?在網易架構師團隊推出的《雲原生應用架構實踐》一書中,處於不同階段的企業或許都能從中得到適合自己的系統性的指導。

文︱陳諤 網易杭州研究院雲計算技術部總監

作為一家誕生於中國互聯網萌芽期的互聯網公司,網易具有豐富的產品線。在網易任職,一個很大的好處是能夠真切地經歷波瀾壯闊的互聯網發展史,而對於技術人來說,更重要的是能夠學習和實踐各項支撐互聯網爆炸式發展的技術,能夠在這段經歷中獲得不同於紙上得來的知識和思想:能切實體會到許多技術為何產生、為何沉寂或者興起,從而能夠在實踐中避免因循守舊或是一味求新逐異;更懂得如何根據功能、非功能性需求進行取捨,選擇更有生命力的技術;更加理解架構的本質。

我和我的團隊從十多年前的博客時代開始接觸互聯網技術,當時 Web2.0 概念剛剛興起,網易博客一上線,用戶量、訪問量就爆發式增長,我們最大的困難並不在於如何編寫代碼,而是怎樣支持產品的高速迭代——以往我們並未經歷過業務幾乎每天都在更新迭代的情況,此時通宵更新版本成了家常便飯——為此我們優化了版本控制策略,研發和集成了自動化構建、發佈工具,並將其總結為“項目工程化”,在之後的項目中尤為重視。

然而,當時博客業務還在變得日益複雜,更新版本時,團隊間的協調成為拖慢迭代節奏的重要因素,因此我們開始把一些業務模塊獨立出來,以遠程接口方式提供服務,或是在負載均衡入口直接按業務模塊分流,後臺的緩存、數據庫也做了相應的拆分,服務化進程就這樣自然地開始了,團隊曾考慮借鑑當時業界流行的 SOA(面向服務架構)理念,引入企業服務總線等設施,但基於對更輕量、更高性能的渴望,我們最終選擇了類似微服務的架構形態,畢竟 2C 業務性能直接意味著用戶量的支持以及實際的用戶體驗。

服務化一旦開展,過程又變得不可控。隨著發佈的頻度再次提升,服務單獨升級帶來了版本問題,以及維護、故障期間的雪崩等一系列棘手的問題,代碼質量也開始下降,各種方式的 RPC 調用、各種對遠程接口的發現封裝方式充斥在代碼中,我們意識到必須要有統一的框架支持服務化進程,於是近十年前我們有了自己的微服務框架,逐步解決雪崩、版本、服務發現、降級等問題。

後博客時代,我們將工程化、服務化等工具、框架應用於新的業務,又發現了進一步的問題。服務化帶來了業務計算節點種類和數量的大幅增長,運維部署變得非常困難,首先是資源層面的,服務化後的節點無法充分利用服務器資源,眾多的服務被混合部署在同一臺服務器上,從而服務間資源爭搶,故障恢復時與各產品、各模塊的協調成為了最麻煩的問題,我們意識到單臺服務器的負載在短短几年內已發生了極大的改變,要解決資源管理問題,雲計算勢在必行。

很幸運的是我與團隊能受公司之託來負責雲計算平臺的研發工作,2012 年秋網易雲計算平臺正式開始支持公司業務,得益於通過 SDN 技術與公司原內網環境的較好融合,雲平臺很快得到了廣泛使用。相比原物理機節點數量的線性增長,虛擬機的數量指數級增長,很大程度上解決了原本遇到的資源管理問題;虛擬主機做到專機專用按需配置,使用數據庫、緩存等基礎服務再也不用等待運維團隊部署維護,系統運維效率也得到了極大的提升。

獲取資源容易了,產品自然而然規劃出眾多的測試環境,如開發環境、集成環境、預發佈環境等,於是搭建測試環境,持續集成與交付很快成了新瓶頸,更麻煩的是業務服務化架構日漸成型,應用運維的複雜度指數級提升。為此,我們又打造了自動化部署平臺,解決集群的編排、版本更新、回滾等問題,平臺上線後每月的部署次數直線上升,達到數萬次之多。沒有云計算時我們覺得兩套測試環境共用就行,每天集成部署一兩次就行,有了雲計算後原本被壓抑的資源、迭代頻度的需求被瞬間釋放,反應到產品中的便是功能開發並行度、迭代速度的大幅提升,迭代風險的大幅下降。上雲的收益由此可見一斑,先行擁抱雲計算的企業在產品競爭中將獲得巨大的優勢。

可以說在網易這樣的成熟互聯網公司,是原本的軟件架構、技術體系的進化倒逼了雲計算的實施,塑造了雲計算平臺的形態,我們的業務技術架構是與雲計算伴隨生長的,並且經歷了漫長的迭代過程,而對於後來者,基於雲來設計軟件架構、實現工程化、建設運維體系,則可以選擇一條前人已充分實踐並總結、提煉過的路徑,一開始便可以從雲而生,這也就是我們所說的雲原生的技術體系。我們在開放網易雲計算能力的過程中遇到過不少用戶,他們不知道網易這樣的互聯網企業如何基於雲高速迭代產品、支撐海量用戶,不知道如何在架構設計、技術選型階段邁出第一步,如何為未來的發展打下基礎,或是業務增長後如何應對。有初創企業雖然靈活快速卻控制不了迭代質量、剎不住車的,也有傳統企業提不了速的。正是看到這些問題,我認為,作為互聯網技術的實踐者,我們不僅應當將我們的平臺、工具鏈開放出來,同時也應將我們的雲端架構實踐梳理成知識體系分享出來,在這“大眾創業,萬眾創新”的互聯網+時代為企業健康發展作出力所能及的貢獻。

《雲原生應用架構實踐》:從單體到服務化架構演進

相關推薦

推薦中...