|
云技術(shù) 927篇原創(chuàng)內(nèi)容 公眾號 導(dǎo)讀:云原生到底是什么? 作者:阿里集團 阿里云智能事業(yè)群 云原生應(yīng)用平臺 來源:大數(shù)據(jù)DT(ID:hzdashuju) 云原生(Cloud Native)的概念,最早是由Pivotal于2015年提出的,但是即使到了2019年上半年,國內(nèi)對其的關(guān)注依然相對有限。直到2019年9月,“云原生”才突然一躍成為行業(yè)最熱門的詞匯。 不過,時至今日,業(yè)界對于云原生的定義并沒有完全統(tǒng)一,在云原生不斷演進的過程中,衍生出了包括Pivotal、CNCF(Cloud Native Computing Foundation,云原生計算基金會)、十二因子應(yīng)用等多個版本的定義。 同時,還有不少人將云原生與容器或基于Kubernetes的微服務(wù)混為一談。還有云原生技術(shù)、云原生產(chǎn)品、云原生架構(gòu)、云原生理念等看起來意思相近的詞匯。那么云原生到底是什么?云原生會對我們的應(yīng)用開發(fā)產(chǎn)生什么樣的影響呢? 云原生可分解為“云”(Cloud)和“原生”(Native)兩個詞。這里還隱藏了一個詞——“計算”(Computing),因為云原生本質(zhì)上是一種與云計算(Cloud Computing)相同的計算方式,因此通常我們在說云原生的時候,實際上是暗指云原生計算(Cloud Native Computing)。 基于這樣的背景,下面我們將進一步探討云原生的概念及其影響。 01 云原生的概念 既然說到了云原生(計算),那么哪些計算方式不是云原生(計算)呢?要回答這個問題,同時辨析云原生的概念,我們需要先回顧云計算的發(fā)展歷史,以及與之密切相關(guān)的分布式計算的復(fù)雜性問題。 云計算的概念最先由戴爾公司于1996年提出。2006年,亞馬遜公司率先推出了彈性計算云(Elastic Compute Cloud,EC2)服務(wù),隨后越來越多的企業(yè)開始逐步接受云計算這一概念,并將應(yīng)用逐步遷移到云端,享受這一新型計算方式帶來的技術(shù)紅利。 2009年,阿里巴巴率先開始研制具有完全自主知識產(chǎn)權(quán)的云產(chǎn)品——飛天操作系統(tǒng),由此揭開了中國云計算的序幕。 縱觀軟件架構(gòu)的演化歷史可以發(fā)現(xiàn),任何新的底層軟硬件技術(shù)出現(xiàn)后,上層應(yīng)用軟件都需要很長一段時間才能夠真正“認識”到新的軟硬件給上層應(yīng)用軟件帶來的價值,并開發(fā)新的軟件架構(gòu),以便充分利用新軟硬件的能力。 最典型的例子就是x86 CPU和服務(wù)器在面世二十多年后,以CORBA、EJB、RPC、瘦客戶端等為主的多層架構(gòu)才逐步成為應(yīng)用開發(fā)的主流架構(gòu)。 類似的還有容器技術(shù),它最早是由FreeBSD于2000年在Jails中提出的,但真正得到大規(guī)模應(yīng)用是在2013年Docker興起之后,而應(yīng)用層的代表則是幾年之后基于容器的微服務(wù)架構(gòu)。 對于云計算這一新基礎(chǔ)設(shè)施來說,也是如此。在2015年之前,對于大多數(shù)應(yīng)用來說,云端只是一個用于計算的場所,開發(fā)人員所要做的就是將原來在私有數(shù)據(jù)中心或IDC中的應(yīng)用,遷移到云端。在遷移的過程中,應(yīng)用無須重新編寫,只需要重新部署,因為云平臺提供的計算、存儲、網(wǎng)絡(luò)等,完全兼容應(yīng)用遷移之前的計算環(huán)境。
遷移之后,應(yīng)用的整體成本(Total Cost of Ownership,TCO)因為采用了“按量付費”的模式而大幅下降,同時,企業(yè)的IT支出從CapEx (Capital Expenditure,資本性支出)模式轉(zhuǎn)變?yōu)镺pEx(Operating Expense,管理支出)模式,整個IT支出變得更可控。 如果對遷移過程進行技術(shù)分析,就會發(fā)現(xiàn)大部分應(yīng)用使用的技術(shù)或者產(chǎn)品都在進行“一對一”的替換,只有極少量應(yīng)用會基于OSS(對象存儲服務(wù))、MaxCompute(大數(shù)據(jù)計算服務(wù))等云服務(wù)進行部分重構(gòu)。 OSS能夠幫助解決分布式狀態(tài)的存儲問題,而MaxCompute能夠解決數(shù)據(jù)倉庫的快速搭建和成本問題。但由于沒有或者只進行了少量重構(gòu),因此應(yīng)用的技術(shù)棧本身幾乎沒有發(fā)生變化,也就是說,軟件的架構(gòu)沒有發(fā)生變化,只是軟件運行的平臺和運維的技術(shù)體系發(fā)生了變化,即只有平臺層面的變化。 而軟件在分布式場景下需要解決的問題,包括穩(wěn)定性、組件或服務(wù)之間的數(shù)據(jù)同步、整體的高可用或容災(zāi)、CI/CD過程的自動化、資源利用率不高、端到端鏈路跟蹤等,仍然需要應(yīng)用自行解決。這些問題并不會因為應(yīng)用遷移到了云平臺就從根本上得到了解決。 當(dāng)然,各云平臺為了幫助應(yīng)用解決上述分布式復(fù)雜性問題,不斷推出各類云服務(wù),但是由于應(yīng)用架構(gòu)本身并沒有發(fā)生變化,因此這些云服務(wù)并不能幫助應(yīng)用解決整體問題,只能從局部提升應(yīng)用的效率。 面對大量的業(yè)務(wù)需求和場景迭代,很多云平臺都提供非常專業(yè)的垂直領(lǐng)域服務(wù),這些服務(wù)比企業(yè)基于開源自行搭建的系統(tǒng)具備更高的SLA(Service Level Agreement,服務(wù)等級協(xié)議)。 比如,在數(shù)據(jù)持久性方面,亞馬遜AWS的數(shù)據(jù)持久性可以達到99.9…%(11個9),阿里云OSS的數(shù)據(jù)持久性甚至達到了99.9…%(12個9);在跨可用區(qū)的高可用方面,阿里云RocketMQ的高可用達到了99.95%,即使整個機房不可用也能繼續(xù)對外提供消息服務(wù)。
可見,應(yīng)用遷移到云上并不代表從此以后就高枕無憂了,如果應(yīng)用本身沒有基于“新”的云服務(wù)進行重構(gòu),而是繼續(xù)采用“老”的架構(gòu),那么即使業(yè)務(wù)運行沒有問題,應(yīng)用也不能充分利用“新”的云運行環(huán)境的能力。 因為這些架構(gòu)是為了“老”的分布式運行環(huán)境而設(shè)計的,不是“云原生的”,所以需要對這些架構(gòu)以及圍繞這些架構(gòu)建立的技術(shù)棧、工具鏈、交付體系進行升級,依托于云技術(shù)棧將其重新部署、部分重構(gòu)甚至全部重寫,才能將應(yīng)用變成“云原生的”,從而保證能夠充分利用云計算的能力。 為了讓應(yīng)用能夠更好地使用云的PaaS平臺能力開發(fā)SaaS(Software as a Service,軟件即服務(wù)),Heroku于2011年提出了十二因子應(yīng)用的概念。十二因子應(yīng)用適用于任何編程語言,通常被認為是最早的云原生應(yīng)用的技術(shù)特征,詳情請參考: http:///zh_cn/ 之后,Pivotal于2015年明確地提出了云原生的概念,指出云原生是一種可以充分利用云計算優(yōu)勢構(gòu)建和運行應(yīng)用的方式。 在經(jīng)過CNCF的修改后,最新版云原生的定義為:
上面三個主流的定義,分別從頂層架構(gòu)原則、計算模型和代表技術(shù)的角度,對云原生進行了描述。這些定義的共同點是它們都將云原生看作一種新的計算方式,讓應(yīng)用能夠充分使用云的計算優(yōu)勢。 進一步分析這些定義所體現(xiàn)出的技術(shù)觀點,我們可以達成這樣一個共識:只有結(jié)合云原生所提供的云服務(wù),改造應(yīng)用的架構(gòu),才能夠更好地使用云原生技術(shù),更好地構(gòu)建彈性、穩(wěn)定、松耦合的分布式應(yīng)用,并解決分布式復(fù)雜性問題。 此外,對架構(gòu)的改造還意味著相關(guān)的開發(fā)模式、交付方式、運維方式等都要隨之改變,比如,采用微服務(wù)架構(gòu)重寫應(yīng)用,用聲明式API和自動化工具升級運維方式,等等。簡單來說,云原生使得整個軟件的生產(chǎn)流水線都發(fā)生了巨大的變化,而具體的變化程度又取決于企業(yè)對云原生的使用情況。 實際上,云原生的范圍還不止于此。要正確實施云原生這一新計算模式,還需要企業(yè)的IT決策者、架構(gòu)師、開發(fā)人員與運維人員正確理解和應(yīng)用云原生的理念,利用合適的云原生技術(shù)及產(chǎn)品。有太多的反例可以證明,僅靠單邊的技術(shù)升級是很難讓云原生升級產(chǎn)生價值的。 云原生相關(guān)概念之間的關(guān)系如圖1-1所示。 ▲圖1-1 云原生相關(guān)概念之間的關(guān)系 在圖1-1中,現(xiàn)代化應(yīng)用在不少場合與云原生應(yīng)用的概念是等同的,因為它們的很多特征都是相似的,比如,都采用了容器技術(shù)打包和交付,都具備很強的彈性能力等。這兩個概念的細微差別在于:現(xiàn)代化應(yīng)用可以與云相關(guān),也可以與云不相關(guān);而云原生應(yīng)用通常都與云相關(guān)。 所以云原生(或者說云原生計算)應(yīng)當(dāng)包括云原生技術(shù)、云原生產(chǎn)品、云原生架構(gòu)以及構(gòu)建現(xiàn)代化應(yīng)用的開發(fā)理念,如DevOps,具體說明如下。
02 云原生是云計算的趨勢 如今,云計算已經(jīng)成為企業(yè)數(shù)字化轉(zhuǎn)型的新的基礎(chǔ)設(shè)施,同時也是國家“新基建”的核心環(huán)節(jié),是物聯(lián)網(wǎng)和人工智能的賦能平臺。從市場發(fā)展趨勢看,云計算將是未來IT的主流。 根據(jù)Gartner的數(shù)據(jù),未來云計算市場規(guī)模仍將保持20%以上的增長速度,到2025年,預(yù)計將有80%(2020年僅為10%)的企業(yè)會關(guān)掉自己的傳統(tǒng)數(shù)據(jù)中心,轉(zhuǎn)向云平臺。 2019年,我國云市場總規(guī)模達到了1334億元,同比增長38%,其中,公有云市場規(guī)模達到689億元,私有云市場規(guī)模達到645億元。在2020年年初,我國各行業(yè)對遠程辦公、遠程教育等的需求持續(xù)增長,預(yù)計到2022年,我國云市場總規(guī)模將突破3000億元。 此外,根據(jù)工業(yè)和信息化部提出的企業(yè)上云工作目標,2020年云計算將在各個行業(yè)廣泛普及,全國上云企業(yè)將新增100萬家。 從技術(shù)發(fā)展趨勢看,更多企業(yè)將會廣泛應(yīng)用云原生技術(shù)。在國家政策和企業(yè)需求的雙重驅(qū)動下,更多企業(yè)會選擇上云,中國云計算的強勢增長是必然趨勢,這也注定了更多企業(yè)將會關(guān)注、應(yīng)用、采納能夠充分利用云計算能力的云原生技術(shù)和產(chǎn)品。 據(jù)Gartner預(yù)測,到2023年,全球70%的企業(yè)都將在生產(chǎn)中運行三個或更多的容器化應(yīng)用。 據(jù)中國信息通信研究院(簡稱信通院)統(tǒng)計,2019年43.9%的被訪企業(yè)表示已使用容器技術(shù)部署業(yè)務(wù)應(yīng)用,另外計劃使用容器技術(shù)部署業(yè)務(wù)應(yīng)用的企業(yè)占比為40.8%;28.9%的企業(yè)已使用微服務(wù)架構(gòu)進行應(yīng)用系統(tǒng)的開發(fā),還有46.8%的企業(yè)計劃使用微服務(wù)架構(gòu)。 從軟件開發(fā)角度看,云原生技術(shù)為企業(yè)帶來了更快進行業(yè)務(wù)創(chuàng)新的價值。越來越多的企業(yè)逐漸意識到了云服務(wù)的專業(yè)性和高SLA,這些企業(yè)在數(shù)字化轉(zhuǎn)型的過程中將IaaS和PaaS的通用技術(shù)復(fù)雜性委托給了云平臺,從而能夠更好地專注于自身業(yè)務(wù)邏輯的創(chuàng)新。 利用云原生技術(shù)重塑企業(yè)的軟件生產(chǎn)流水線,可以加大業(yè)務(wù)組件的復(fù)用程度,將軟件交付周期從周、天降低到小時甚至分鐘級別,從而提升業(yè)務(wù)的市場嗅覺靈敏度,增強市場反應(yīng)能力。 從應(yīng)用技術(shù)棧角度看,越來越多的企業(yè)發(fā)現(xiàn)傳統(tǒng)的應(yīng)用已經(jīng)無法滿足數(shù)字化業(yè)務(wù)的需要,所以會對應(yīng)用進行徹底升級,會更多地采用云原生技術(shù)和云原生架構(gòu)作為構(gòu)建現(xiàn)代化應(yīng)用的核心框架,從而幫助企業(yè)打造具備彈性、韌性、可觀測性、API驅(qū)動、多語言支持、高度自動化、可持續(xù)交付等特性的現(xiàn)代化應(yīng)用軟件。 03 云原生是云計算的再升級 從云原生的定位可以看到,云原生包含大量新的PaaS層技術(shù)和新的開發(fā)理念,是釋放云計算價值的最短路徑,也推動著云計算的再升級。 整個云原生技術(shù)棧都是基于開源、開放的技術(shù)標準。CNCF也在致力于云原生技術(shù)的標準化,為云原生技術(shù)和產(chǎn)品的用戶提供使用云服務(wù)的標準界面,同時避免了廠商鎖定。 進一步看基于云原生技術(shù)和云原生架構(gòu)重構(gòu)或重寫的應(yīng)用,比如,基于服務(wù)網(wǎng)格或無服務(wù)器技術(shù)(Serverless)的應(yīng)用,它們天然具備水平擴展的能力,可隨時應(yīng)對互聯(lián)網(wǎng)時代高速增長的業(yè)務(wù)規(guī)模,同時還內(nèi)置了高可用能力,所以應(yīng)用無須關(guān)注分布式環(huán)境下的高可用方案。
所以,云原生不僅是對使用云的應(yīng)用架構(gòu)的再升級,也是對云平臺的技術(shù)和云服務(wù)的再升級。從構(gòu)建現(xiàn)代化應(yīng)用的角度,我們可以發(fā)現(xiàn),云原生對應(yīng)用的重構(gòu)體現(xiàn)在應(yīng)用開發(fā)的整個生命周期中。 關(guān)于作者:阿里云智能 基礎(chǔ)產(chǎn)品事業(yè)部 云原生應(yīng)用平臺:致力于為企業(yè)打造數(shù)字創(chuàng)新的最短路徑。歷經(jīng)15年的探索,阿里云是國內(nèi)最早實踐云原生的云服務(wù)商,擁有最豐富的云原生產(chǎn)品家族和Z全面的開源貢獻,打造云原生裸金屬服務(wù)器、云原生數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖、容器、微服務(wù)、DevOps、Serverless等超過100款創(chuàng)新產(chǎn)品;構(gòu)建完整的云原生技術(shù)與服務(wù)生態(tài),覆蓋新零售、政務(wù)、醫(yī)療、交通、教育等各個領(lǐng)域,推動企業(yè)快速實現(xiàn)數(shù)字化創(chuàng)新與業(yè)務(wù)增長。 本文摘編自《阿里云云原生架構(gòu)實踐》, 本文摘編自《阿里云云原生架構(gòu)實踐》,經(jīng)出版方授權(quán)發(fā)布。 |
|
|