云原生五大趨勢(shì)預(yù)測(cè),K8s 安卓化位列其一
作者 | 李響、張磊 Kubernetes 本身并不直接產(chǎn)生商業(yè)價(jià)值,你不會(huì)花錢去購(gòu)買 Kubernetes 。這就跟安卓一樣,你不會(huì)直接掏錢去買一個(gè)安卓系統(tǒng)。Kubernetes 真正產(chǎn)生價(jià)值的地方也在于它的上層應(yīng)用生態(tài)。
“未來的軟件一定是生長(zhǎng)于云上的”**,這是云原生理念的最核心假設(shè)。而所謂“云原生”,實(shí)際上就是在定義一條能夠讓應(yīng)用最大程度利用云的能力、發(fā)揮云的價(jià)值的最佳路徑。因此,云原生其實(shí)是一套指導(dǎo)軟件架構(gòu)設(shè)計(jì)的思想。按照這樣的思想而設(shè)計(jì)出來的軟件:首先,天然就“生在云上,長(zhǎng)在云上”;其次,能夠最大化地發(fā)揮云的能力,使得我們開發(fā)的軟件和“云”能夠天然地集成在一起,發(fā)揮出“云”的最大價(jià)值。 云原生的概念大家并不陌生,很多企業(yè)也已經(jīng)基于云原生的架構(gòu)和技術(shù)理念落地相關(guān)實(shí)踐。那么,這么多企業(yè)和開發(fā)者熱衷和推崇的云原生,未來的發(fā)展趨勢(shì)如何?如何才能順應(yīng)云原生的主流方向去發(fā)展?
我們邀請(qǐng)到阿里云資深技術(shù)專家、CNCF 技術(shù)監(jiān)督委員會(huì)代表,etcd 作者**李響**和阿里云高級(jí)技術(shù)專家、CNCF 應(yīng)用交付領(lǐng)域 co-chair **張磊**分享云原生的理念、發(fā)展以及未來趨勢(shì),為大家打開新的思路和眼界。 以下內(nèi)容共享給大家。 # Kubernetes 項(xiàng)目的安卓化 云原生里有一個(gè)非常關(guān)鍵的項(xiàng)目,就是 Kubernetes。Kubernetes 的發(fā)展非常迅速,它是整個(gè)云原生體系發(fā)展的基石。今天我們來觀察 Kubernetes 項(xiàng)目的發(fā)展特點(diǎn),
首先,Kubernetes 無處不在,無論是在云上,還是用戶自建的數(shù)據(jù)中心里,甚至一些我們想象不到的場(chǎng)景里,都有 Kubernetes 的存在。
第二,所有云原生的用戶使用 Kubernetes 的目的,都是為了交付和管理應(yīng)用。當(dāng)然這個(gè)應(yīng)用是一個(gè)泛化的概念,可以是一個(gè)網(wǎng)站,也可以是淘寶這樣非常龐大的電商主站,或者是 AI 作業(yè)、計(jì)算任務(wù)、函數(shù)、甚至虛擬機(jī)等,這些都是用戶可以使用 Kubernetes 去交付和管理的應(yīng)用類型。
第三,今天我們來看 Kubernetes 所處的位置,實(shí)際上是承上啟下。Kubernetes 對(duì)上暴露基礎(chǔ)設(shè)施能力的格式化數(shù)據(jù)抽象,比如 Service、Ingress、Pod、Deployment,這些都是 Kubernetes 本身原生 API 給用戶暴露出來的能力。而對(duì)下,Kubernetes 提供的是基礎(chǔ)設(shè)施能力接入的標(biāo)準(zhǔn)接口,比如說 CNI、CSI、DevicePlugin、CRD,讓云能夠作為一個(gè)能力提供商,以一個(gè)標(biāo)準(zhǔn)化的方式把能力接入到 Kubernetes 的體系中。 這一點(diǎn)其實(shí)跟安卓非常類似,安卓雖然裝在你的設(shè)備里,但是它能夠讓你的硬件、手機(jī)、電視、汽車等都能接入到一個(gè)平臺(tái)里。對(duì)上則暴露統(tǒng)一的一套應(yīng)用管理接口,讓你能夠基于安卓系統(tǒng)來編寫應(yīng)用,去訪問或者享受到這些基礎(chǔ)設(shè)施能力,這也是 Kubernetes 和安卓的相似之處。 最后, Kubernetes 本身并不直接產(chǎn)生商業(yè)價(jià)值,你不會(huì)花錢去購(gòu)買 Kubernetes。
這就跟安卓一樣,你不會(huì)直接掏錢去買一個(gè)安卓系統(tǒng)。Kubernetes 真正產(chǎn)生價(jià)值的地方也在于它的上層應(yīng)用生態(tài)。對(duì)安卓來說,它今天已經(jīng)具備了一個(gè)龐大的移動(dòng)端或設(shè)備端應(yīng)用的開發(fā)生態(tài),而對(duì)于 Kubernetes 來說也是類似的,只不過現(xiàn)在還在于比較早的階段。但我們已經(jīng)能夠看到,今天在 Kubernetes 上構(gòu)建的商業(yè)層很多是垂直解決方案,是面向用戶、面向應(yīng)用這一側(cè)真正能夠產(chǎn)生商業(yè)價(jià)值的東西,而不是 Kubernetes 本身這一層。這就是為什么我說 Kubernetes 發(fā)展跟安卓很像,當(dāng)然這可能也是谷歌比較擅長(zhǎng)的一個(gè)“打法”:全力地去免費(fèi)推廣一個(gè)“操作系統(tǒng)”,真正獲取商業(yè)價(jià)值的方式則是是去“收割”操作系統(tǒng)上層的生態(tài)價(jià)值而不是操作系統(tǒng)本身。
基于這些現(xiàn)象,我們將 Kubernetes 的發(fā)展趨勢(shì)概括為以下幾點(diǎn): ## 1. 云的價(jià)值回歸到應(yīng)用本身 用戶使用 Kubernetes 的本質(zhì)目的是去交付和管理應(yīng)用。從這個(gè)現(xiàn)象來看,如果 Kubernetes 發(fā)展下去,那么世界上所有的數(shù)據(jù)中心和基礎(chǔ)設(shè)施上面都會(huì)有一層 Kubernetes ,自然而然用戶就會(huì)開始以 Kubernetes 為基礎(chǔ)去編寫和交付以及管理其應(yīng)用,就跟現(xiàn)在我們會(huì)以安卓這樣一個(gè)操作系統(tǒng)為基礎(chǔ)去編寫移動(dòng)應(yīng)用是類似的。 這就會(huì)導(dǎo)致云上的大多數(shù)軟件和云產(chǎn)品都是第三方開發(fā)的。第三方開發(fā)是指所有人都可以面向一個(gè)標(biāo)準(zhǔn)界面去開發(fā)和交付軟件,這個(gè)軟件本身既可以是自己的軟件,也可以是一個(gè)云產(chǎn)品。
未來,越來越多的第三方開源項(xiàng)目,如 MongoDB、Elasticsearch 等,都會(huì)以云原生理念去開發(fā)、部署和運(yùn)維,最后直接演進(jìn)成為一種云服務(wù)。 ## 2. 云端“豌豆莢”的出現(xiàn) 有了 Kubernetes 這樣一個(gè)標(biāo)準(zhǔn),開發(fā)者面對(duì)的就是一個(gè)類似于操作系統(tǒng)的界面。由于有更多的應(yīng)用是面向 Kubernetes 誕生的,或者說面向 Kubernetes 去交付的,那么就需要有一個(gè)類似于“豌豆莢”的產(chǎn)品,來作為云上的應(yīng)用商店或者云上的應(yīng)用分發(fā)系統(tǒng),它的關(guān)鍵能力在于把應(yīng)用無差別地交付給全世界任何一個(gè) Kubernetes 上面,就跟用豌豆莢把任何一個(gè)安卓應(yīng)用交付在任何一個(gè)安卓設(shè)備上的原理是一樣的。 其實(shí)今天谷歌已經(jīng)在做這類產(chǎn)品的嘗試了,比如 Anthos (面向混合云的應(yīng)用交付平臺(tái)),雖然是一款混合云產(chǎn)品,但它本質(zhì)上是把谷歌云的服務(wù),比如數(shù)據(jù)庫服務(wù)、大數(shù)據(jù)服務(wù),去直接交付于任何一個(gè)基于 Kubernetes 的混合云環(huán)境里面去,其實(shí)就相當(dāng)于一款云端的“豌豆莢”。
3. 基于 Kubernetes 可擴(kuò)展能力的開放應(yīng)用平臺(tái)會(huì)取代 PaaS 成為主流 由于未來整個(gè)應(yīng)用生態(tài)會(huì)面向 Kubernetes 去構(gòu)建,那么基于 Kubernetes 可擴(kuò)展能力的開放應(yīng)用平臺(tái)會(huì)逐漸取代傳統(tǒng) PaaS 而成為主流?;?Kubernetes 可擴(kuò)展能力去構(gòu)建一個(gè)開放的應(yīng)用平臺(tái),其能力是可插拔的,能夠去交付和管理的應(yīng)用類型是多樣化的,這才更符合 Kubernetes 所構(gòu)建的趨勢(shì)和生態(tài),所以一些真正高可擴(kuò)展的平臺(tái)層項(xiàng)目會(huì)大量產(chǎn)生。 另外,今天我們看到的 Kubernetes ,跟“理想”中的云原生應(yīng)用生態(tài)之間其實(shí)還有很多路要走,這也是阿里云原生團(tuán)隊(duì)一直在做的事情,基于 Kubernetes 在應(yīng)用層構(gòu)建更豐富的應(yīng)用生態(tài),幫助用戶實(shí)現(xiàn)多樣化的需求。
應(yīng)用與能力的“ Operator 化” 縱觀云原生時(shí)代應(yīng)用或者云的能力的發(fā)展方向,你會(huì)發(fā)現(xiàn)另一個(gè)趨勢(shì),就是 Operator 化。Operator 是 Kubernetes 的一個(gè)概念,是指 Kubernetes 交付的一個(gè)實(shí)體,這個(gè)實(shí)體有一個(gè)基礎(chǔ)模型存在,這個(gè)模型分為兩部分:一部分是 Kubernetes 的 API 對(duì)象(CRD),另一部分是一個(gè)控制器(Controller),如下圖所示: 這里要區(qū)分兩個(gè)概念,自定義和自動(dòng)化。很多人會(huì)說 Operator 可以幫助我做自定義,因?yàn)楹芏嗳硕紩?huì)覺得 Kubernetes 內(nèi)置的能力是不夠用的,所以用戶會(huì)利用它的可擴(kuò)展能力去寫一個(gè) Controller ,從而實(shí)現(xiàn)跟多自定義的需求。但自定義只是 Operator 中很小的一部分價(jià)值,我們今天對(duì)應(yīng)用和能力做 Operator 化的核心動(dòng)力在于其實(shí)是為了實(shí)現(xiàn)自動(dòng)化,而且只有自動(dòng)化了,我們才能講云原生。 這是因?yàn)?,云原生帶來的最大的紅利是可以讓我們最大限度、最高效地使用云的能力,二這種最高效、最大化的方式一定沒辦法通過人工來實(shí)現(xiàn)的。換句話說,只有通過自動(dòng)化的方式去開發(fā)、運(yùn)維應(yīng)用以及與云進(jìn)行交互,才能真正把云原生的價(jià)值發(fā)揮出來。 而如果要通過自動(dòng)化的方式跟云進(jìn)行交互,那么在云原生生態(tài)里,必須有一個(gè)類似于Controller 或者 Operator 這樣的插件的存在。今天阿里巴巴在云上交付的 PolarDB、OceanBase 等,其實(shí)都有一個(gè)跟 Kubernetes 銜接的 Controller 的存在。通過 Controller 與基礎(chǔ)設(shè)施、云進(jìn)行交互,把云的能力輸入到產(chǎn)品里面去。
在未來,會(huì)有大量的云上的應(yīng)用和對(duì)應(yīng)的運(yùn)維能力、管理能力都會(huì)以 Kubernetes Operator 的方式交付。在這個(gè)背景下, Kubernetes 真正扮演的一個(gè)角色就是能力的接入層和標(biāo)準(zhǔn)界面。如下圖所示,這是一個(gè)非常典型的用戶側(cè) Kubernetes 集群的樣子。 一個(gè)用戶的 Kubernetes 只有紅框里面這部分是 Kubernetes 原生提供的 API ,而大量的能力都是以插件化或者說 Operator 化的方式存在。就比如上圖右邊所有這些自定義的資源和能力全部來自于第三方開發(fā),通過 Operator 這樣一個(gè)標(biāo)準(zhǔn)的形態(tài)開發(fā)出來的能力來服務(wù)最終用戶的。這就意味著在未來云原生的生態(tài)里面,基于 CRD Operator 的而非 Kubernetes 原生 API 的應(yīng)用和能力會(huì)占到絕大多數(shù)。
隨著這個(gè)趨勢(shì)的不斷演進(jìn),越來越多的軟件和能力通過 Kubernetes Operator 去描述和定義,云產(chǎn)品也會(huì)開始默認(rèn)以 Kubernetes 為底座,基于 Operator 進(jìn)行交付。 正是因?yàn)樵絹碓蕉嗟?Operator 的出現(xiàn),這里就會(huì)逐步需要一個(gè)中心化的方式去解決 Operator 潛在的穩(wěn)定性、可發(fā)現(xiàn)性和性能問題,也就是說在未來很可能會(huì)有一個(gè)橫向的 Operator 管理平臺(tái)出現(xiàn),對(duì)所有基于 Kubernetes Operator 開發(fā)的應(yīng)用和能力進(jìn)行統(tǒng)一管理,從而更好、更專業(yè)地服務(wù)用戶。
此外,由于未來每一個(gè)能力、每一個(gè)應(yīng)用都需要去編寫 Operator ,所以說對(duì)開發(fā)者友好的 Operator 編寫框架也是未來一個(gè)很重要的趨勢(shì)。這個(gè)編寫框架可以支持不同語言,如 Go、Java、C、Rust 語言等,并且編寫過程是專注于運(yùn)維邏輯和應(yīng)用的管理、能力的管理,而不是專注在 Kubernetes 的語義和細(xì)節(jié)上面。
最后,隨著云原生生態(tài)的普及,云服務(wù)也將實(shí)現(xiàn) Operator 化,并且面向多集群/混合云場(chǎng)景出現(xiàn)面向應(yīng)用層的云服務(wù)標(biāo)準(zhǔn)化定義與抽象,并在云原生領(lǐng)域逐漸取代 IaC 項(xiàng)目(比如 Terraform 等)成為云服管理與消費(fèi)的主流方式。
應(yīng)用中間件能力進(jìn)一步下沉 隨著云原生以及整個(gè)生態(tài)的發(fā)展,我們看到應(yīng)用中間件領(lǐng)域也隨之發(fā)生了很多改變。從原先最開始的中心化 ESB ,到后來的胖客戶端,逐步演化到今天我們經(jīng)常提到的 Service Mesh 這樣一種 Sidecar 化的方式。 其實(shí)今天你會(huì)發(fā)現(xiàn),無論是云的能力還是基礎(chǔ)設(shè)施的能力,都在不斷豐富,很多原先只能通過中間件做的事情,現(xiàn)在可以很容易通過云服務(wù)來實(shí)現(xiàn)。應(yīng)用中間件不再是能力的提供方,而是能力接入的標(biāo)準(zhǔn)界面,并且這個(gè)標(biāo)準(zhǔn)界面的構(gòu)建不再基于胖客戶端,而是通過非常普通的 HTTP 協(xié)議、 gRPC 協(xié)議去做,然后通過 Sidecar 方式把整個(gè)服務(wù)的接入層跟應(yīng)用業(yè)務(wù)邏輯做一個(gè)解耦,這其實(shí)就是 Service Mesh 的思想。 目前 Service Mesh 只做了傳統(tǒng)中間件里面的流量治理、路由策略、訪問控制這一層的事情。
而實(shí)際上, Sidecar 這個(gè)模型可以應(yīng)用到所有中間件的場(chǎng)景里,實(shí)現(xiàn)中間件邏輯跟應(yīng)用業(yè)務(wù)邏輯完全解耦,讓應(yīng)用中間件能力“下沉”,變成 Kubernetes 能力的一部分。這樣應(yīng)用本身會(huì)更加專一化,更多的關(guān)注業(yè)務(wù)邏輯本身。
伴隨著這個(gè)趨勢(shì),在 Kubernetes 這一層還會(huì)有另外一個(gè)趨勢(shì)出現(xiàn),就是 Sidecar 的自動(dòng)化的、規(guī)?;倪\(yùn)維能力會(huì)成為一個(gè)必選項(xiàng)。因?yàn)?Sidecar 的數(shù)量會(huì)極其龐大,應(yīng)用中間件很可能會(huì)演化成 Sidecar 集群,那么這些 Sidecar 的管理和規(guī)模化的運(yùn)維能力,會(huì)是集群或者云產(chǎn)品的一個(gè)必備選項(xiàng)。
下一代 DevOps 模型與體系 隨著云原生生態(tài)的不斷發(fā)展,云原生理念的不斷普及, DevOps 的思想很可能也會(huì)發(fā)生一個(gè)本質(zhì)的變化,即下一代 DevOps 模型與體系。隨著 Kubernetes 的能力越來越多、越來越強(qiáng)大,基礎(chǔ)設(shè)施也會(huì)變得越來越復(fù)雜,那么基于這樣一個(gè)強(qiáng)大的基礎(chǔ)設(shè)施去構(gòu)建一個(gè)應(yīng)用平臺(tái)就會(huì)非常簡(jiǎn)單,并且這個(gè)應(yīng)用平臺(tái)最終會(huì)取代傳統(tǒng)的PaaS平臺(tái)。 我們現(xiàn)在之所以在用 DevOps 這一套思想,實(shí)際上是由于基礎(chǔ)設(shè)施本身不夠強(qiáng)大,不夠標(biāo)準(zhǔn)化,不夠好用,所以我們需要在業(yè)務(wù)研發(fā)側(cè)做一套工具去黏合研發(fā)人員和基礎(chǔ)設(shè)施。例如,基礎(chǔ)設(shè)施提供的能力是一個(gè)虛擬機(jī),怎么能讓虛擬機(jī)變成研發(fā)側(cè)想要的藍(lán)綠發(fā)布或者一個(gè)漸進(jìn)式的應(yīng)用交付系統(tǒng)呢?這就需要一系列的 DevOps 的工具、 CI/CD 的流水線來完成。 但是現(xiàn)在的情況已經(jīng)發(fā)生了變化。基于 Kubernetes 的基礎(chǔ)設(shè)施本身的能力已經(jīng)非常豐富,像藍(lán)綠發(fā)布這些能力本身就是 Kubernetes 可以提供的能力。在這樣的背景下, DevOps 的發(fā)展趨勢(shì)也會(huì)發(fā)生很大的改變:
1. 關(guān)注點(diǎn)分離 在 Kubernetes 的背景下,“軟件”不再是一個(gè)由應(yīng)用 Owner 掌控的單一交付物,而是多個(gè) Kubernetes 對(duì)象的集合,而這一堆 Kubernetes 里面的對(duì)象只有很少一部分其實(shí)才跟研發(fā)有關(guān),所以說有很多對(duì)象會(huì)不在應(yīng)用 Owner 的認(rèn)知范圍內(nèi),這就導(dǎo)致平臺(tái)必須去做關(guān)注點(diǎn)分離,研發(fā)側(cè)的關(guān)注點(diǎn)和運(yùn)維側(cè)、系統(tǒng)側(cè)的關(guān)注點(diǎn)是完全不一樣的東西。也就是研發(fā)不用再考慮運(yùn)維方面的細(xì)節(jié),比如藍(lán)綠發(fā)布怎么做,水平擴(kuò)容什么策略,只要把業(yè)務(wù)代碼寫完交付就好。 伴隨著 Kubernetes 和基礎(chǔ)設(shè)施越來越復(fù)雜,概念越來越多,作為平臺(tái)層是不大可能讓研發(fā)了解所有的概念,因此未來云原生生態(tài)一定會(huì)做抽象和分層。每一層的角色只跟屬于自己的數(shù)據(jù)抽象去交互,研發(fā)側(cè)有一套自己的聲明式 API 對(duì)象,運(yùn)維側(cè)有一套自己的聲明式 API 對(duì)象,每一層的關(guān)注點(diǎn)也是不一樣的,這會(huì)是未來整個(gè) DevOps 體系里發(fā)展的一個(gè)重要的背景。
2. Serverless 泛化 云原生本身的關(guān)注點(diǎn)就是應(yīng)用,在這樣一個(gè)背景下,Serverless 本身不再是一個(gè)獨(dú)立場(chǎng)景,不再局限在某幾個(gè)非常垂直的領(lǐng)域,而會(huì)變成云原生應(yīng)用管理體系的一種泛化思想和天然組成部分。我從兩個(gè)層面解釋一下:一是在能力側(cè),“輕運(yùn)維”“ NoOps ”以及“自助式運(yùn)維能力”會(huì)成為應(yīng)用運(yùn)維的主流方式。云原生生態(tài)上的應(yīng)用管理會(huì)體現(xiàn)出一種輕運(yùn)維的狀態(tài),就是說應(yīng)用運(yùn)維不再是一個(gè)人工的、非常復(fù)雜的過程,而是一組開箱即用的、非常簡(jiǎn)單的模塊化操作。無論是通過 Kubernetes 還是通過云原生能力,都是對(duì)下層基礎(chǔ)設(shè)施的一個(gè)模塊化的分裝,這跟 Serverless 所提倡的 NoOps 理念非常類似。 二是在應(yīng)用側(cè),應(yīng)用描述會(huì)廣泛地進(jìn)行用戶側(cè)的抽象,事件驅(qū)動(dòng)和 Serverless 理念被拆分和泛化,可以被應(yīng)用于多樣化的場(chǎng)景中而不僅僅是今天狹義的 Serverless 場(chǎng)景比如 FaaS 或者 Container Instance,未來所有的應(yīng)用都可以實(shí)現(xiàn) scale-to-zero 。
3. 基于 Infrastructure as Data(IaD)思想的應(yīng)用層技術(shù)漸成主流 第一,基于 Infrastructure as Data(IaD)的思想會(huì)成為一個(gè)主流技術(shù),IaD 實(shí)際就是 Kubernetes 的聲明式 API ,聲明式 API 的核心在于把基礎(chǔ)設(shè)施、應(yīng)用、能力以一個(gè)聲明式的文件、聲明式的對(duì)象去描述,那么這個(gè)文件或者對(duì)象本身就是“數(shù)據(jù)”。而 Kubernetes 或者基礎(chǔ)設(shè)施這一層是通過數(shù)據(jù)去驅(qū)動(dòng)的,這就是 Infrastructure as Data。這樣的思想會(huì)延伸出很多技術(shù)和前沿的思想,比如 GitOps 、管道型 YAML 操作工具(Kustomize/kpt)等。這樣的管道型應(yīng)用管理會(huì)成為云原生生態(tài)里面一個(gè)非常主流的應(yīng)用管理方式。
第二,聲明式應(yīng)用定義模型(比如 OAM),以及聲明式的 CI/CD 系統(tǒng)和 Pipeline 會(huì)成為一個(gè)新的應(yīng)用交付的模式。比如傳統(tǒng)的 Jenkins 是一個(gè)命令式的組織方式,而隨著聲明式的 Pipeline 的出現(xiàn),加上云原生生態(tài)、Kubernetes 的普及,基于 Infrastructure as Data 思想的流水線和下一代的 CI/CD 系統(tǒng)也會(huì)成為業(yè)界的主流。這跟以前的 CI/CD 和流水線有本質(zhì)的區(qū)別,因?yàn)檫@個(gè) CI/CD 系統(tǒng)里面所有的操作都是一個(gè)聲明式描述。
正因?yàn)槭锹暶魇矫枋觯羞@些操作以及 CI/CD 里面的環(huán)節(jié)都可以托管到 Git 上,哪怕一個(gè)人工審核(Manual Approve)這樣的動(dòng)作都可以托管在 Git 里面,通過 Git 去審計(jì)和做版本管理等。 Infrastructure as Data 的出現(xiàn)就是告訴我們,未來云原生的系統(tǒng)。一切皆對(duì)象,一切皆數(shù)據(jù)。隨著對(duì)象和數(shù)據(jù)越來越多,對(duì)他們的管理、審計(jì)、驗(yàn)證等就變得越來越復(fù)雜,那么圍繞它們的策略引擎(Policy Engine)會(huì)成為一個(gè)非常重要的需求。策略引擎會(huì)成為一個(gè)非常重要的組件,未來 Kubernetes 所有的應(yīng)用平臺(tái)可能都需要一個(gè)策略引擎的存在,幫助用戶處理不同場(chǎng)景下對(duì)數(shù)據(jù)的操作策略。
4. 構(gòu)建于 IaD 之上的最終用戶體驗(yàn)層 需要注意的一點(diǎn)是,雖然 Infrastructure as Data 會(huì)成為應(yīng)用層的主流技術(shù),但是它有一個(gè)“硬傷”,就是對(duì)最終用戶并不友好。因?yàn)槿说拇竽X比較容易去處理流程化的、規(guī)則化的事情,而不是去處理一個(gè)靜態(tài)的數(shù)據(jù),所以說在 IaD 之上會(huì)有一層面向最終用戶的體驗(yàn)層的存在。這就意味著 Kubernetes 不會(huì)把聲明式的數(shù)據(jù)直接交給最終用戶,而是通過其他方式來操作這些數(shù)據(jù),比如通過一種能夠理解 Kubernetes 數(shù)據(jù)模型的動(dòng)態(tài)配置語言(DSL)來完成,或者通過基于 API 對(duì)象的 CLI 或者 dashboard 來完成,也可能是通過一種以應(yīng)用為中心的交互與協(xié)作流程來完成。而最終用戶體驗(yàn)層會(huì)決定產(chǎn)品有沒有黏性,這是云原生的這套體系有沒有黏性,是不是用戶友好的一個(gè)關(guān)鍵環(huán)節(jié)。
5. DevSecOps 隨著如前所述的下一代 DevOps 體系的發(fā)展,安全會(huì)從一開始就變成應(yīng)用交付的一部分。在業(yè)界大家稱之為 DevSecOps ,就是從 day zero 開始就把安全策略、對(duì)安全的考量、安全配置作為應(yīng)用的一部分,而不是等到應(yīng)用交付出去了甚至應(yīng)用已經(jīng)上線了再去做事后的安全審計(jì)和管理。
底層基礎(chǔ)設(shè)施的 Serverless 云原生化 隨著云原生體系的發(fā)展,云的價(jià)值逐漸走向應(yīng)用層,不斷向基于聲明式 API 、基于 IaD 的理念去發(fā)展,那么下層的基礎(chǔ)設(shè)施也會(huì)發(fā)生相應(yīng)的變化。第一個(gè)變化是基礎(chǔ)設(shè)施能力聲明式 API 化、自助化。今天的云是基礎(chǔ)設(shè)施能力的集大成者,可以認(rèn)為是一個(gè)無限的能力層,今天我們能想象到的基礎(chǔ)設(shè)施上所有的能力,云都可以提供,這跟以前的基礎(chǔ)設(shè)施完全不一樣。以前云的能力很薄弱,基礎(chǔ)設(shè)施的能力也很薄弱,所以才需要一個(gè)龐大的中間件體系和精密的 DevOps 體系來做一個(gè)“膠水層”,去彌補(bǔ)基礎(chǔ)設(shè)施跟應(yīng)用、研發(fā)、運(yùn)維人員之間的鴻溝。
而未來,應(yīng)用才是整個(gè)云原生生態(tài)的主角。應(yīng)用需要使用某個(gè)能力,那么云就會(huì)提供這個(gè)能力,并且是通過一個(gè)標(biāo)準(zhǔn)化的接入層來提供,而不是直接跟基礎(chǔ)設(shè)施打交道。云原生生態(tài)的發(fā)展會(huì)使得用戶側(cè)的視角發(fā)生很大的改變,從面向基礎(chǔ)設(shè)施變?yōu)槊嫦驊?yīng)用,從基礎(chǔ)設(shè)施有什么用戶才能用什么,變成用戶要什么,基礎(chǔ)設(shè)施就可以提供什么。以應(yīng)用為中心的基礎(chǔ)設(shè)施會(huì)是未來基礎(chǔ)設(shè)施的一個(gè)基本形態(tài)。 這個(gè)理念跟 Serverless 理念非常類似,我們可以將它稱為底層基礎(chǔ)設(shè)施的 Serverless 原生化,這意味著基礎(chǔ)設(shè)施會(huì)在未來也逐漸的聲明式 API 化,而聲明式 API 化帶來的一個(gè)直接結(jié)果就是他會(huì)變成一個(gè)自助化的基礎(chǔ)設(shè)施。
另外,由于基礎(chǔ)設(shè)施能夠?qū)崿F(xiàn)聲明式 API 化,實(shí)現(xiàn)自助化,那么打造更加智能化的基礎(chǔ)設(shè)施就成為一個(gè)重要方向。因?yàn)榛A(chǔ)設(shè)施系統(tǒng)的模塊化能力變成了一個(gè)數(shù)據(jù)化的定義方式,那么就可以和容易的通過監(jiān)控?cái)?shù)據(jù)、歷史數(shù)據(jù)來驅(qū)動(dòng)基礎(chǔ)設(shè)施的運(yùn)轉(zhuǎn),也就是“自動(dòng)駕駛的基礎(chǔ)設(shè)施”。數(shù)據(jù)驅(qū)動(dòng)的智能化基礎(chǔ)設(shè)施會(huì)在未來成為可能,當(dāng)然其前提是基礎(chǔ)設(shè)施本身實(shí)現(xiàn)聲明式 API 化和自助化。 與此同時(shí),由于應(yīng)用層本身會(huì) Serverless 泛化,像 “scale to 0” 和 “pay as you go” 這些功能,會(huì)成為應(yīng)用的一個(gè)基礎(chǔ)的假設(shè),導(dǎo)致資源層也會(huì)走向極致彈性+無限資源池的方向。
作為一個(gè)智能化的基礎(chǔ)設(shè)施,可以去做更加智能的調(diào)度與混部,從而提供極致的資源利用效能,實(shí)現(xiàn)成本的極低化。 與此同時(shí),由于要實(shí)現(xiàn)極致的資源效能,就意味著底層一定是一個(gè)強(qiáng)多租架構(gòu),并且這個(gè)強(qiáng)多租架構(gòu)是面向 Kubernetes 的,跟 Kubernetes 有一個(gè)天然的、非常融合的集成。這體現(xiàn)在兩個(gè)方面:第一,在運(yùn)行時(shí)這一層,這個(gè)基礎(chǔ)設(shè)施會(huì)傾向走基于硬件虛擬化的容器運(yùn)行時(shí)而非傳統(tǒng)虛擬機(jī)的方向,比如 Kata Container ,并且認(rèn)為神龍裸金屬服務(wù)器更適合做宿主機(jī)。伴隨著這套技術(shù)的發(fā)展,輕量化的 VMM(虛擬化管理技術(shù))會(huì)成為優(yōu)化容器運(yùn)行時(shí)、優(yōu)化整個(gè)基礎(chǔ)設(shè)施敏捷度的一個(gè)關(guān)鍵技術(shù)和關(guān)鍵鏈路。 第二,強(qiáng)多租的控制面會(huì)針對(duì)不同租戶做物理隔離,而不只是邏輯隔離,這是 Kubernetes 數(shù)據(jù)模型的要求,即租戶的控制面板之間需要有強(qiáng)的物理隔離,這就是為什么我們講未來的強(qiáng)多租架構(gòu)一定會(huì)面向 Kubernetes 來構(gòu)建。阿里內(nèi)部也是看到了這樣的趨勢(shì),在不斷做一些嘗試,去更好地響應(yīng)未來 Serverless 原生化的基礎(chǔ)設(shè)施的發(fā)展趨勢(shì)。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科