什么是云原生,跟云计算有什么关系?终于有人讲明白了
導讀:云原生到底是什么?
作者:阿里集團 阿里云智能事業群 云原生應用平臺
來源:大數據DT(ID:hzdashuju)
云原生(Cloud Native)的概念,最早是由Pivotal于2015年提出的,但是即使到了2019年上半年,國內對其的關注依然相對有限。直到2019年9月,“云原生”才突然一躍成為行業最熱門的詞匯。
不過,時至今日,業界對于云原生的定義并沒有完全統一,在云原生不斷演進的過程中,衍生出了包括Pivotal、CNCF(Cloud Native Computing Foundation,云原生計算基金會)、十二因子應用等多個版本的定義。
同時,還有不少人將云原生與容器或基于Kubernetes的微服務混為一談。還有云原生技術、云原生產品、云原生架構、云原生理念等看起來意思相近的詞匯。那么云原生到底是什么?云原生會對我們的應用開發產生什么樣的影響呢?
云原生可分解為“云”(Cloud)和“原生”(Native)兩個詞。這里還隱藏了一個詞——“計算”(Computing),因為云原生本質上是一種與云計算(Cloud Computing)相同的計算方式,因此通常我們在說云原生的時候,實際上是暗指云原生計算(Cloud Native Computing)。
基于這樣的背景,下面我們將進一步探討云原生的概念及其影響。
01 云原生的概念
既然說到了云原生(計算),那么哪些計算方式不是云原生(計算)呢?要回答這個問題,同時辨析云原生的概念,我們需要先回顧云計算的發展歷史,以及與之密切相關的分布式計算的復雜性問題。
云計算的概念最先由戴爾公司于1996年提出。2006年,亞馬遜公司率先推出了彈性計算云(Elastic Compute Cloud,EC2)服務,隨后越來越多的企業開始逐步接受云計算這一概念,并將應用逐步遷移到云端,享受這一新型計算方式帶來的技術紅利。
2009年,阿里巴巴率先開始研制具有完全自主知識產權的云產品——飛天操作系統,由此揭開了中國云計算的序幕。
縱觀軟件架構的演化歷史可以發現,任何新的底層軟硬件技術出現后,上層應用軟件都需要很長一段時間才能夠真正“認識”到新的軟硬件給上層應用軟件帶來的價值,并開發新的軟件架構,以便充分利用新軟硬件的能力。
最典型的例子就是x86 CPU和服務器在面世二十多年后,以CORBA、EJB、RPC、瘦客戶端等為主的多層架構才逐步成為應用開發的主流架構。
類似的還有容器技術,它最早是由FreeBSD于2000年在Jails中提出的,但真正得到大規模應用是在2013年Docker興起之后,而應用層的代表則是幾年之后基于容器的微服務架構。
對于云計算這一新基礎設施來說,也是如此。在2015年之前,對于大多數應用來說,云端只是一個用于計算的場所,開發人員所要做的就是將原來在私有數據中心或IDC中的應用,遷移到云端。在遷移的過程中,應用無須重新編寫,只需要重新部署,因為云平臺提供的計算、存儲、網絡等,完全兼容應用遷移之前的計算環境。
在遷移模式中,應用通常會將原來的物理機部署模式改成虛擬機(規格更小)部署模式;
存儲則選用兼容的塊存儲或者文件存儲;
網絡使用SLB(Server Load Balancer,服務器負載均衡)替換傳統的負載均衡器,構建VPC(Virtual Private Cloud,虛擬私有云)或NAT(Network Address Translation,網絡地址轉換)網絡環境;
使用云數據庫替換原來的MySQL或SQL Server,或者自行在云上搭建Oracle數據庫。
遷移之后,應用的整體成本(Total Cost of Ownership,TCO)因為采用了“按量付費”的模式而大幅下降,同時,企業的IT支出從CapEx (Capital Expenditure,資本性支出)模式轉變為OpEx(Operating Expense,管理支出)模式,整個IT支出變得更可控。
如果對遷移過程進行技術分析,就會發現大部分應用使用的技術或者產品都在進行“一對一”的替換,只有極少量應用會基于OSS(對象存儲服務)、MaxCompute(大數據計算服務)等云服務進行部分重構。
OSS能夠幫助解決分布式狀態的存儲問題,而MaxCompute能夠解決數據倉庫的快速搭建和成本問題。但由于沒有或者只進行了少量重構,因此應用的技術棧本身幾乎沒有發生變化,也就是說,軟件的架構沒有發生變化,只是軟件運行的平臺和運維的技術體系發生了變化,即只有平臺層面的變化。
而軟件在分布式場景下需要解決的問題,包括穩定性、組件或服務之間的數據同步、整體的高可用或容災、CI/CD過程的自動化、資源利用率不高、端到端鏈路跟蹤等,仍然需要應用自行解決。這些問題并不會因為應用遷移到了云平臺就從根本上得到了解決。
當然,各云平臺為了幫助應用解決上述分布式復雜性問題,不斷推出各類云服務,但是由于應用架構本身并沒有發生變化,因此這些云服務并不能幫助應用解決整體問題,只能從局部提升應用的效率。
面對大量的業務需求和場景迭代,很多云平臺都提供非常專業的垂直領域服務,這些服務比企業基于開源自行搭建的系統具備更高的SLA(Service Level Agreement,服務等級協議)。
比如,在數據持久性方面,亞馬遜AWS的數據持久性可以達到99.9…%(11個9),阿里云OSS的數據持久性甚至達到了99.9…%(12個9);在跨可用區的高可用方面,阿里云RocketMQ的高可用達到了99.95%,即使整個機房不可用也能繼續對外提供消息服務。
如果不是應用的所有存儲訪問代碼都在S3或OSS上重構,那么“木桶效應”就會凸顯,即整個系統的數據持久性將取決于能力最差的組件;
如果應用不是將所有自持的開源組件都遷移到云平臺上,那么當一個機房出現故障時,應用仍然會出現高可用性的問題;
如果應用不是基于FaaS(Function as a Service,功能即服務)技術開發的,那么應用仍然需要自行解決單個組件不可用時的Fail Over(失效轉移)以及故障恢復時的Fail Back(失效后自動恢復)等問題。
可見,應用遷移到云上并不代表從此以后就高枕無憂了,如果應用本身沒有基于“新”的云服務進行重構,而是繼續采用“老”的架構,那么即使業務運行沒有問題,應用也不能充分利用“新”的云運行環境的能力。
因為這些架構是為了“老”的分布式運行環境而設計的,不是“云原生的”,所以需要對這些架構以及圍繞這些架構建立的技術棧、工具鏈、交付體系進行升級,依托于云技術棧將其重新部署、部分重構甚至全部重寫,才能將應用變成“云原生的”,從而保證能夠充分利用云計算的能力。
為了讓應用能夠更好地使用云的PaaS平臺能力開發SaaS(Software as a Service,軟件即服務),Heroku于2011年提出了十二因子應用的概念。十二因子應用適用于任何編程語言,通常被認為是最早的云原生應用的技術特征,詳情請參考:
http://12factor.net/zh_cn/
之后,Pivotal于2015年明確地提出了云原生的概念,指出云原生是一種可以充分利用云計算優勢構建和運行應用的方式。
在經過CNCF的修改后,最新版云原生的定義為:
云原生技術有利于各組織在公有云、私有云和混合云等新型動態環境中構建和運行可彈性擴展的應用。云原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統。結合可靠的自動化手段,云原生技術使工程師能夠輕松地對系統做出頻繁和可預測的重大變更。
上面三個主流的定義,分別從頂層架構原則、計算模型和代表技術的角度,對云原生進行了描述。這些定義的共同點是它們都將云原生看作一種新的計算方式,讓應用能夠充分使用云的計算優勢。
進一步分析這些定義所體現出的技術觀點,我們可以達成這樣一個共識:只有結合云原生所提供的云服務,改造應用的架構,才能夠更好地使用云原生技術,更好地構建彈性、穩定、松耦合的分布式應用,并解決分布式復雜性問題。
此外,對架構的改造還意味著相關的開發模式、交付方式、運維方式等都要隨之改變,比如,采用微服務架構重寫應用,用聲明式API和自動化工具升級運維方式,等等。簡單來說,云原生使得整個軟件的生產流水線都發生了巨大的變化,而具體的變化程度又取決于企業對云原生的使用情況。
實際上,云原生的范圍還不止于此。要正確實施云原生這一新計算模式,還需要企業的IT決策者、架構師、開發人員與運維人員正確理解和應用云原生的理念,利用合適的云原生技術及產品。有太多的反例可以證明,僅靠單邊的技術升級是很難讓云原生升級產生價值的。
云原生相關概念之間的關系如圖1-1所示。
▲圖1-1?云原生相關概念之間的關系
在圖1-1中,現代化應用在不少場合與云原生應用的概念是等同的,因為它們的很多特征都是相似的,比如,都采用了容器技術打包和交付,都具備很強的彈性能力等。這兩個概念的細微差別在于:現代化應用可以與云相關,也可以與云不相關;而云原生應用通常都與云相關。
所以云原生(或者說云原生計算)應當包括云原生技術、云原生產品、云原生架構以及構建現代化應用的開發理念,如DevOps,具體說明如下。
云原生產品和云原生技術需要基于公有云、私有云或混合云的云基礎設施(IaaS)。
云原生架構和云原生開發理念是基于云原生技術和產品構建或實現的。注意,對于不是基于云原生技術或者產品的架構和理念,如基于傳統物理服務器發布、構建的DevOps,是不會被劃分到云原生范疇的。
現代化應用和云原生應用是基于云原生的架構和開發理念構建或實現的。
02 云原生是云計算的趨勢
如今,云計算已經成為企業數字化轉型的新的基礎設施,同時也是國家“新基建”的核心環節,是物聯網和人工智能的賦能平臺。從市場發展趨勢看,云計算將是未來IT的主流。
根據Gartner的數據,未來云計算市場規模仍將保持20%以上的增長速度,到2025年,預計將有80%(2020年僅為10%)的企業會關掉自己的傳統數據中心,轉向云平臺。
2019年,我國云市場總規模達到了1334億元,同比增長38%,其中,公有云市場規模達到689億元,私有云市場規模達到645億元。在2020年年初,我國各行業對遠程辦公、遠程教育等的需求持續增長,預計到2022年,我國云市場總規模將突破3000億元。
此外,根據工業和信息化部提出的企業上云工作目標,2020年云計算將在各個行業廣泛普及,全國上云企業將新增100萬家。
從技術發展趨勢看,更多企業將會廣泛應用云原生技術。在國家政策和企業需求的雙重驅動下,更多企業會選擇上云,中國云計算的強勢增長是必然趨勢,這也注定了更多企業將會關注、應用、采納能夠充分利用云計算能力的云原生技術和產品。
據Gartner預測,到2023年,全球70%的企業都將在生產中運行三個或更多的容器化應用。
據中國信息通信研究院(簡稱信通院)統計,2019年43.9%的被訪企業表示已使用容器技術部署業務應用,另外計劃使用容器技術部署業務應用的企業占比為40.8%;28.9%的企業已使用微服務架構進行應用系統的開發,還有46.8%的企業計劃使用微服務架構。
從軟件開發角度看,云原生技術為企業帶來了更快進行業務創新的價值。越來越多的企業逐漸意識到了云服務的專業性和高SLA,這些企業在數字化轉型的過程中將IaaS和PaaS的通用技術復雜性委托給了云平臺,從而能夠更好地專注于自身業務邏輯的創新。
利用云原生技術重塑企業的軟件生產流水線,可以加大業務組件的復用程度,將軟件交付周期從周、天降低到小時甚至分鐘級別,從而提升業務的市場嗅覺靈敏度,增強市場反應能力。
從應用技術棧角度看,越來越多的企業發現傳統的應用已經無法滿足數字化業務的需要,所以會對應用進行徹底升級,會更多地采用云原生技術和云原生架構作為構建現代化應用的核心框架,從而幫助企業打造具備彈性、韌性、可觀測性、API驅動、多語言支持、高度自動化、可持續交付等特性的現代化應用軟件。
03 云原生是云計算的再升級
從云原生的定位可以看到,云原生包含大量新的PaaS層技術和新的開發理念,是釋放云計算價值的最短路徑,也推動著云計算的再升級。
整個云原生技術棧都是基于開源、開放的技術標準。CNCF也在致力于云原生技術的標準化,為云原生技術和產品的用戶提供使用云服務的標準界面,同時避免了廠商鎖定。
進一步看基于云原生技術和云原生架構重構或重寫的應用,比如,基于服務網格或無服務器技術(Serverless)的應用,它們天然具備水平擴展的能力,可隨時應對互聯網時代高速增長的業務規模,同時還內置了高可用能力,所以應用無須關注分布式環境下的高可用方案。
對于云平臺而言,云原生技術也催生了諸如阿里云新一代神龍、AWS Nitro系統之類的架構升級,使得新的計算基礎設施能夠為應用提供更高的性能、彈性和計算密度;
云存儲能夠幫助企業實現存儲計算分離,避免分布式環境下多副本存儲,同時還具備自定義密鑰加密落盤的高級安全特性;
基于硬件offload(卸載,通過硬件提供加速功能)的網絡在overlay(一種在現有網絡架構上疊加的虛擬化技術)的場景下為應用提供千萬級PPS(Packet Per Second,數據包/秒,寬帶速率)的SDN(Software Defined Network,軟件定義網絡)能力。
所以,云原生不僅是對使用云的應用架構的再升級,也是對云平臺的技術和云服務的再升級。從構建現代化應用的角度,我們可以發現,云原生對應用的重構體現在應用開發的整個生命周期中。
關于作者:阿里云智能 基礎產品事業部 云原生應用平臺:致力于為企業打造數字創新的最短路徑。歷經15年的探索,阿里云是國內最早實踐云原生的云服務商,擁有最豐富的云原生產品家族和Z全面的開源貢獻,打造云原生裸金屬服務器、云原生數據庫、數據倉庫、數據湖、容器、微服務、DevOps、Serverless等超過100款創新產品;構建完整的云原生技術與服務生態,覆蓋新零售、政務、醫療、交通、教育等各個領域,推動企業快速實現數字化創新與業務增長。
本文摘編自《阿里云云原生架構實踐》,經出版方授權發布。
延伸閱讀《阿里云云原生架構實踐》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:阿里云官方出品,阿里云智能總裁、阿里巴巴首席技術官等推薦,全面總結阿里云云原生架構方法論與實踐經驗。
劃重點????
干貨直達????
2021上半年朋友圈都在傳的10本書,找到了
終于有人把生成對抗網絡(GAN)講明白了
馬斯克搞的超級高鐵,為什么注定會失敗?
騰訊數據科學家手把手教你做用戶行為分析(案例:出行選擇)
更多精彩????
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT?|?讀書?|?書單?|?硬核?|?干貨?|?講明白?|?神操作
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?1024?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
????
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的什么是云原生,跟云计算有什么关系?终于有人讲明白了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学不好,能学好机器学习吗?
- 下一篇: 详解SaaS产品的5类核心指标