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