
在過去三到五年時間里,云計算技術正在日益深刻地改變各行業、各領域的信息化建設。在一些信息化建設歷史久遠,系統比較完善的行業和領域內,企業的IT架構正面臨從傳統的單體架構向更加適應云環境的微服務架構轉型的迫切需求。對于那些IT架構剛剛搭建不久的初創型互聯網公司,日益增長的業務量也對服務的穩定性和運維的效率提出了更高的要求。
近年來,IT架構轉型的需求催生了云計算領域中一個蓬勃發展的細分賽道——云原生。
自2018年來,云原生技術開始在企業IT架構搭建和轉型中發揮引領性作用,容器、DevOps、微服務、敏捷方法、持續集成、持續交付等云原生理念日益深入人心,這也是云計算浪潮發展到一個成熟階段后的必然結果。隨著虛擬化技術的成熟和分布式架構的普及,用來部署、管理和運行應用的云平臺被越來越多地提及。
2019年,是云原生理念和技術普及的“元年”,2020年,云原生將迎來全面應用之年,在不久的將來,云原生將會變成一個新常態。
數字化轉型呼喚云原生技術
在容器技術、可持續交付、編排系統等開源社區的推動下,以及微服務等開發理念的帶動下,應用上云已經是不可逆轉的趨勢。隨著云化技術的不斷進展,云原生的概念也應運而生。云原生(Cloud Native)的概念,由來自Pivotal的Matt Stine于2013年首次提出,被一直延續使用至今。
這個概念是MattStine根據其多年的架構和咨詢經驗總結出來的一個思想集合,并得到了社區的不斷完善。其內容非常多,包括DevOps、持續交付(ContinuousDelivery)、微服務(Micro-Services)、敏捷基礎設施(AgileInfrastructure)和12要素(TheTwelve-FactorApp)等幾大主題,不但包括根據業務能力對公司進行文化、組織架構的重組與建設,也包括方法論與原則,還有具體的操作工具。
從字面意思上來看,云原生可以分成“云”和“原生”兩個部分。云是和本地相對的,傳統的應用必須跑在本地服務器上,現在流行的應用都跑在云端,云包含了IaaS、PaaS和SaaS。
例如,敏捷的不可變基礎設施交付類似于IaaS,用來提供計算網絡存儲等基礎資源,這些資源是可編程且不可變的,直接通過API可以對外提供服務。有些應用通過PaaS服務本來就能組合成不同的業務能力,不一定需要從頭開始建設。
還有一些軟件只需要“云”的資源就能直接運行起來為云用戶提供服務,即SaaS能力,用戶直接面對的就是原生的應用。
原生就是土生土長的意思。我們在開始設計應用的時候就考慮到應用將來是運行云環境里面的,要充分利用云資源的優點,比如云服務的彈性和分布式優勢。
采用基于云原生的技術和管理方法,可以更好地把業務生于“云”或遷移到云平臺,從而享受“云”的高效和持續的服務能力。
云并非把原先在物理服務器上跑的東西放到虛擬機里跑,真正的云化不僅是基礎設施和平臺的事情,應用也要做出改變。改變傳統的做法,實現云化的應用——應用的架構、應用的開發方式、應用部署和維護技術都要做出改變,真正地發揮云的彈性、動態調度、自動伸縮……一些傳統IT所不具備的能力。
這里說的“云化的應用”也就是“云原生應用”。云原生架構和云原生應用所涉及的技術很多,如容器技術、微服務、可持續交付、DevOps等。
今天,企業核心業務逐步走向云原生都已經是大勢所趨,其中,作為微服務落地的基礎,容器技術更是已經成為主流。
這在很大程度上得益于Kubernetes的逐漸成熟,如今Kubernetes已經逐漸成為第一個真正意義上的云操作系統,對底層基礎設施提供統一抽象,甚至可以應用到對任意資源的編排上。
為何全面擁抱云原生技術?
在大多數企業開始全面擁抱云計算的時代,三個重要轉變正在顯現:基礎設施的云化、核心技術的互聯網化、業務的數據化和智能化。
在各行各業中,都有很多業務應用從誕生之初就生長在云端,各個企業也因此越來越像互聯網公司,而技術能力被視為不可或缺的核心競爭力。
我們為什么要擁抱云原生?一方面,云計算已經重塑了軟件的整個生命周期,從架構設計到開發,再到構建、交付和運維等所有環節;另一方面,企業IT架構也隨之發生巨大變化,而業務又深度依賴IT能力。
這帶來了一定程度的復雜性和挑戰性。正如人類社會發展伴隨著技術革命與社會大分工一樣,云原生技術的出現解耦了很多復雜性,這是IT技術的進步。
首先,Docker實現了應用與運行環境的解耦,眾多業務應用負載都可以被容器化,而且應用容器化滿足了敏捷、可遷移、標準化的訴求。
其次,Kubernetes的出現讓資源編排調度與底層基礎設施解耦,應用和資源的管控也開始得心應手,容器編排實現資源編排、高效調度。
隨后,Istio為代表的服務網格技術解耦了服務實現與服務治理能力。此外,一些云計算廠商還提供Open API、SDK等豐富的開發工具,實現第三方被集成,為云的生態伙伴提供廣闊的可能性。這樣的技術分層推動了社會分工,極大地促進了技術和業務創新。
另外,云原生可以支持互聯網規模應用,可以更加快速地創新和低成本試錯;其次,屏蔽了底層基礎架構的差異和復雜性;同時,服務網格、無服務計算等新的計算類型不斷涌現,給整體IT架構能力帶來了極致彈性,從而更好地服務于業務。用戶可以構建面向云原生框架,如面向機器學習的Kubeflow,和面向無服務器的Knative等等。
方興未艾 容器應用的新思考
云原生技術理念是使企業用戶及開發者只關注應用開發,無需關注基礎設施及基礎服務。
與之相似的Serverless計算,將應用服務資源化并以API接口的方式提供出來,使用者只需從客戶端發起調用請求即可。更重要的是,pay as you go 能夠真正為用戶節省成本。
隨著5G和物聯網時代的到來,傳統云計算中心集中存儲、計算的模式已經無法滿足終端設備對于時效、容量、算力的需求。將云計算的能力下沉到邊緣側、設備側,并通過中心進行統一交付、運維、管控,將是云計算的重要發展趨勢。
以Kubernetes為基礎的云原生技術,在任何基礎設施上提供與云一致的功能和體驗,實現云-邊-端一體化的應用分發, 支持不同系統架構和網絡狀況下,應用的分發和生命周期管理,并且針對邊緣及設備進行如訪問協議、同步機制、安全機制的種種優化。
如前所述,應用容器化實現了標準化的可移植性,促成了敏捷彈性的云原生應用架構。
不僅大大簡化了多云/混合云的部署,而且優化成本,同時提供更多的選擇,比如滿足安全合規的要求、提升業務敏捷性、提升地域覆蓋性等。
基于容器技術構建的新架構,會催生新的應用業務價值。云原生AI是非常重要的應用場景,快速搭建AI環境,高效利用底層資源,無縫配合深度學習的全生命周期。
對于AI工程,云原生系統可以在四個維度上提效:(1)優化異構資源調度彈性(2)高效、細粒度(支持GPU共享)(3)簡化異構資源管理復雜性,提升可觀測性和使用效率(4)可移植、可組裝、可重現的AI流程。
云原生時代,不僅是開發者最好的時代,也是云廠商更好發揮作用、為客戶提供更多價值的時代。它不但可以很好地支持互聯網應用,也在深刻影響著新的計算架構、新的智能數據應用。
云原生的DevOps、平臺、持續交付、微服務都是云原生不可或缺的一部分,需要以全局的眼光看待問題,脫離任何一個元素,對于企業來說都是“管中窺豹”、“一葉障目”,只有加以整合才能見到云原生的全局風貌。