Forrester數(shù)據(jù)顯示,在2021年,全球云原生應(yīng)用持續(xù)上升,組織中容器和無(wú)服務(wù)器技術(shù)的使用率在一年內(nèi)都增長(zhǎng)了75%以上。
Gartner預(yù)測(cè),到2025年,將會(huì)有超過95%的新數(shù)字工作負(fù)載被部署在云原生平臺(tái)上。
“未來(lái)的軟件一定是長(zhǎng)在云上,企業(yè)也必將長(zhǎng)在云上。”隨著“上云用數(shù)賦智”成為大勢(shì)所趨,云原生這一提出不到十年的概念迎來(lái)了爆炸式增長(zhǎng)。
01何為云原生
“云原生”顧名思義,就是“生在云上、長(zhǎng)在云上”。
早在云原生概念被提出前,企業(yè)中就已有相關(guān)實(shí)踐。
比如,谷歌在2004年就開始使用了容器技術(shù),2006推出的進(jìn)程容器(Process Container),就是一種具有“云原生”特征的技術(shù)實(shí)踐;2009年,Netflix等廠商就開始開始啟動(dòng)上公有云戰(zhàn)略,將 IT 基礎(chǔ)架構(gòu)從自己的數(shù)據(jù)中心遷移到公共云上之外,并通過微服務(wù)架構(gòu),用較小的易管理軟件組件替換單體程序。
業(yè)界公認(rèn)的云原生概念,是在2013年由Pivotal公司的Matt Stine首次提出的,他將其定義為一系列云計(jì)算技術(shù)和開發(fā)管理方法的合集,包括DevOps、持續(xù)交付、微服務(wù)(MicroServices)、敏捷基礎(chǔ)設(shè)施(Agile Infrastructure)和12要素(The Twelve-Factor App)等等。

2015年,云原生領(lǐng)域最具話語(yǔ)權(quán)的組織CNCF(Cloud Native Computing Foundation)成立,該組織對(duì)云原生的最初定義主要包含三個(gè)方面:應(yīng)用容器化;面向微服務(wù)架構(gòu);應(yīng)用支持容器的編排調(diào)度。2018年,隨著云原生生態(tài)的壯大,CNCF更新了對(duì)云原生的定義:云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。
02、詳解云原生的核心技術(shù)與架構(gòu)
由此可見,云原生從誕生起便不僅僅只是一項(xiàng)技術(shù)或一個(gè)產(chǎn)品,而是一種系統(tǒng)化方法論和技術(shù)的集合。
經(jīng)過不斷地演進(jìn)與發(fā)展,目前云原生的核心主要是微服務(wù)、容器、服務(wù)網(wǎng)格、不可變基礎(chǔ)設(shè)施和聲明式API這五大關(guān)鍵技術(shù)。
1.微服務(wù)
微服務(wù)區(qū)別于單體應(yīng)用而生。傳統(tǒng)的單體應(yīng)用由于耦合度高、擴(kuò)展性差、迭代緩慢等缺點(diǎn),已無(wú)法適應(yīng)移動(dòng)互聯(lián)時(shí)代用戶體量以及訪問量幾何式倍增、用戶需求快速變化的現(xiàn)狀。微服務(wù)便應(yīng)運(yùn)而生,其本質(zhì)上是對(duì)傳統(tǒng)的單體應(yīng)用根據(jù)業(yè)務(wù)領(lǐng)域和模塊進(jìn)行劃分、解耦,拆分成一個(gè)一個(gè)單獨(dú)部署、運(yùn)行的微小應(yīng)用。

例:?jiǎn)误w銷售系統(tǒng)重構(gòu)微服務(wù)商城系統(tǒng)
2.容器
容器是是一種輕量級(jí)、可移植、自包含的軟件打包技術(shù),能夠使應(yīng)用程序在幾乎任何地方以相同的方式運(yùn)行。開發(fā)人員只要編寫一次應(yīng)用程序,無(wú)須任何修改就能夠在生產(chǎn)系統(tǒng)的虛擬機(jī)、物理服務(wù)器或公有云主機(jī)上等任意位置運(yùn)行。這種級(jí)別的可移動(dòng)性,對(duì)于開發(fā)進(jìn)程和供應(yīng)商兼容性而言意義重大。
3.不可變基礎(chǔ)設(shè)施
基礎(chǔ)設(shè)施的不可變性是指運(yùn)行服務(wù)的服務(wù)器在完成部署后,就不再進(jìn)行更改。如果需要以任何方式更新,修復(fù)或修改某些內(nèi)容,則會(huì)根據(jù)具有相應(yīng)更改的公共鏡像構(gòu)建新服務(wù)器以替換舊服務(wù)器。
不可變基礎(chǔ)架構(gòu)的好處包括基礎(chǔ)架構(gòu)中更高的一致性和可靠性,以及更簡(jiǎn)單,更可預(yù)測(cè)的部署過程,它可以緩解或完全防止可變基礎(chǔ)架構(gòu)中常見的問題,例如配置漂移和雪花服務(wù)器。
4.服務(wù)網(wǎng)格
服務(wù)網(wǎng)格是指用以處理服務(wù)與服務(wù)之間通信的基礎(chǔ)設(shè)施層。在實(shí)踐中,它是一組和應(yīng)用服務(wù)部署在一起的輕量級(jí)的網(wǎng)絡(luò)代理,并且對(duì)應(yīng)用服務(wù)透明。
5.聲明式API
聲明式API是一種能夠一次處理多個(gè)寫操作、具備Merge能力的API。區(qū)別于命令式API直接發(fā)出的讓服務(wù)器執(zhí)行的命令,聲明式API聲明的是期望的狀態(tài),系統(tǒng)將不斷地調(diào)整實(shí)際狀態(tài),直到與期望狀態(tài)保持一致。
基于云原生技術(shù)的一組架構(gòu)原則和設(shè)計(jì)模式的集合便是云原生架構(gòu)。云原生架構(gòu)可以幫助企業(yè)和開發(fā)充分利用云平臺(tái)所提供的平臺(tái)化能力和彈性資源能力,讓開發(fā)人員將精力聚焦于業(yè)務(wù)。
云原生架構(gòu)的架構(gòu)原則如下圖所示,通過遵從這些架構(gòu)原則可以讓技術(shù)主管和架構(gòu)師在做技術(shù)選擇時(shí)不會(huì)出現(xiàn)大的偏差。
03、擁抱云原生 釋放新生產(chǎn)力
越來(lái)越多的行業(yè)已入局云原生賽道。
根據(jù)全球企業(yè)增長(zhǎng)咨詢公司沙利文的報(bào)告,除互聯(lián)網(wǎng)和信息服務(wù)等數(shù)字原生行業(yè)外,制造、政務(wù)、醫(yī)療等傳統(tǒng)行業(yè)的云原生用戶占比呈現(xiàn)較強(qiáng)的增長(zhǎng)態(tài)勢(shì)。據(jù)中國(guó)信通院調(diào)查,不同行業(yè)對(duì)云原生應(yīng)用的核心訴求存在一定差異,細(xì)粒度、極致彈性、交付標(biāo)準(zhǔn)化、異構(gòu)資源統(tǒng)一納管、開放架構(gòu)是企業(yè)對(duì)云原生的主要關(guān)注點(diǎn)。

云原生由
數(shù)字化轉(zhuǎn)型催生,同時(shí),它又以其極致彈性、自動(dòng)部署、開放共享、按需服務(wù)、自治管理、獨(dú)立高效等特性,幫助政企數(shù)字化釋放新生產(chǎn)力。
1、極致彈性
彈性計(jì)算是云計(jì)算的核心特征,也是云原生技術(shù)中容器的重要特征。云原生應(yīng)用彈性,包括應(yīng)用使用資源的彈性和應(yīng)用實(shí)例彈性擴(kuò)展的彈性。在單實(shí)例擴(kuò)展資源遭遇瓶頸時(shí),可以配合負(fù)載均衡機(jī)制實(shí)現(xiàn)容器實(shí)例的彈性擴(kuò)展。如以Kubernetes為代表的容器來(lái)提供離散和可重用的功能,這些功能以良好描述的方式集成,甚至跨越多云等技術(shù)邊界,這使得交付團(tuán)隊(duì)可以使用重復(fù)的自動(dòng)化和編排來(lái)快速迭代。
2、自動(dòng)部署
云原生方法遠(yuǎn)優(yōu)于傳統(tǒng)的面向虛擬化的業(yè)務(wù)流程,傳統(tǒng)方法需要投入大量的精力來(lái)構(gòu)建開發(fā)環(huán)境,以及軟件交付過程中的其他不同環(huán)境。而云原生架構(gòu)具備自動(dòng)化和組合功能,并且依賴于可靠、經(jīng)過驗(yàn)證和審核的已知良好流程的基礎(chǔ),交付十分敏捷,而不再需要人工干預(yù)重復(fù)執(zhí)行。
3、開放共享
云計(jì)算可以分為IaaS、PaaS、SaaS三種類型,分別通過這三種類型實(shí)現(xiàn)資源共享、平臺(tái)共享、應(yīng)用共享。而云原生應(yīng)用則是部署在IaaS或PaaS層,通過SaaS層提供開放式服務(wù)。
4、按需服務(wù)
云應(yīng)用部署在云端,客戶可以根據(jù)自己的需求,通過網(wǎng)絡(luò)訪問,自助使用服務(wù),不需要聯(lián)系云應(yīng)用管理人員。通常會(huì)有個(gè)云應(yīng)用服務(wù)目錄,每個(gè)應(yīng)用服務(wù)都有使用說(shuō)明,通過服務(wù)目錄可以找到適合自己滿足自身需求的應(yīng)用。
5、自治管理
云原生應(yīng)用的交付一定是按照標(biāo)準(zhǔn)交付,可以在云端任何支持標(biāo)準(zhǔn)的位置部署,這樣就與位置和環(huán)境無(wú)關(guān),同時(shí)構(gòu)建應(yīng)用所需要的依賴包、配置文件和后端服務(wù)等都是和應(yīng)用構(gòu)成一個(gè)整體,實(shí)現(xiàn)自治管理。使用容器的好處就是可以使得應(yīng)用以標(biāo)準(zhǔn)化鏡像的方式交付和運(yùn)行,而用微服務(wù)實(shí)現(xiàn)云原生應(yīng)用,也正是符合這一自治原則的。
6、獨(dú)立高效
云原生帶來(lái)了微服務(wù)化架構(gòu),一個(gè)微服務(wù)基本是一個(gè)能獨(dú)立發(fā)布的應(yīng)用服務(wù),因此可以作為獨(dú)立組件升級(jí)、灰度或復(fù)用等,對(duì)整個(gè)大應(yīng)用的影響也較小,每個(gè)服務(wù)可以由專門的組織來(lái)單獨(dú)完成,依賴方只要定好輸入和輸出口即可完全開發(fā)、甚至整個(gè)團(tuán)隊(duì)的組織架構(gòu)也會(huì)更精簡(jiǎn),因此溝通成本低、效率高。
云原生的這些特性極大地釋放了云的紅利,它能幫助企業(yè)構(gòu)建彈性可靠、松耦合、易管理可觀測(cè)的應(yīng)用系統(tǒng),提升交付效率,降低運(yùn)維復(fù)雜度,讓企業(yè)在競(jìng)爭(zhēng)激烈以及疫情等不確定背景下保持一種高速迭代、持續(xù)創(chuàng)新的能力,成為驅(qū)動(dòng)業(yè)務(wù)增長(zhǎng)的重要引擎。
04、挑戰(zhàn)并存 落地云原生的一點(diǎn)建議
云原生帶來(lái)的不僅僅是應(yīng)用的云上部署,而是意味著全新IT的重塑,包括開發(fā)模式、系統(tǒng)架構(gòu)、部署模式、基礎(chǔ)設(shè)施、組織文化等一系列的自動(dòng)化、敏捷化演進(jìn)和迭代,這些為企業(yè)的數(shù)字化轉(zhuǎn)型帶來(lái)了更多可能性,同時(shí)也帶來(lái)了諸多挑戰(zhàn)。
要進(jìn)行全面云原生化的轉(zhuǎn)型并非易事,拋開最基礎(chǔ)的技術(shù)和資金的挑戰(zhàn)不談,在云原生的落地推廣階段,企業(yè)還需解決人員的思維與認(rèn)知更新、新老技術(shù)如何融合、多云資源的管理、如何保障信息安全等問題。
首先是人員的思維和認(rèn)知方面。目前各行業(yè)對(duì)云原生的認(rèn)知尚有待完善。云原生有著龐大的技術(shù)與方法論體系,各行業(yè)的云原生應(yīng)該是以更加全面的視角覆蓋應(yīng)用全生命周期的體系,而不只是簡(jiǎn)單的技術(shù)堆疊。而且云原生的學(xué)習(xí)成本較高,從開發(fā)階段貫穿到運(yùn)維階段,云原生引入許多復(fù)雜、全新的技術(shù),不只是編程語(yǔ)言,還有從K8S管理到各種CI/CD工具,學(xué)習(xí)難度與成本相當(dāng)高。
其次是新舊技術(shù)的融合應(yīng)用層面。目前許多企業(yè)傾向于對(duì)增量應(yīng)用做云原生轉(zhuǎn)型,但絕大部分的存量應(yīng)用依舊在云下,是單體式架構(gòu)。若想將所有存量應(yīng)用從單體式重構(gòu)成為分布式,需要按批次、慢節(jié)奏的逐步轉(zhuǎn)型。而在轉(zhuǎn)型分布式架構(gòu)后,仍需選型應(yīng)用層面的開發(fā)框架,做統(tǒng)一的技術(shù)棧管理。
然后是多云資源的管理方面。在公有云、私有云等多元化的云環(huán)境下,大家手頭往往都有兩套或者多套云資源,如何讓這些割裂的云資源統(tǒng)一進(jìn)行管理?如何基于一個(gè)平臺(tái)讓應(yīng)用快速進(jìn)行跨云遷移、發(fā)布?比如:開發(fā)在私有云,生產(chǎn)在公有云等這些問題伴隨資源環(huán)境多元化問題會(huì)越來(lái)越突出。
最后是安全層面。云原生環(huán)境下,一些傳統(tǒng)的安全工具無(wú)法適應(yīng)新的云環(huán)境,無(wú)法有效保護(hù)跨集群、跨云的信息;此外,容器環(huán)境的快速發(fā)展迭代,也給安全保護(hù)策略的制定帶來(lái)了難題;同時(shí),虛擬化技術(shù)本身也對(duì)安全管控形成了一定的屏障。
對(duì)于要入局云原生的企業(yè)來(lái)說(shuō),首先要梳理好完整的云原生全景圖,并對(duì)自身做好充分的現(xiàn)狀分析,并基于業(yè)務(wù)目標(biāo)梳理并制定平臺(tái)與應(yīng)用兩方面的目標(biāo)架構(gòu),制定可執(zhí)行的分階段的實(shí)施計(jì)劃,并完善更新相應(yīng)的安全保護(hù)策略與工具,從而在保障安全的前提下,將云原生的效能最大化。
(部分內(nèi)容來(lái)源網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除)