使用CloudOS幫助企業(yè)落地云原生PaaS平臺
PaaS究竟是什么?
IaaS、SaaS的定義很清楚,而PaaS的定義就比較寬泛。所以,很多人把PaaS當(dāng)做一個萬能的“框”,什么都往里裝,特別像一排垃圾桶中的那個“其他垃圾”桶,當(dāng)你拎了一袋垃圾,不知道往哪個垃圾桶丟時,其他垃圾總是那個不錯的選擇。
我們來看看幾個大廠關(guān)于PaaS的定義。
Google Cloud的定義:
平臺即服務(wù) (PaaS) 是一個完整的云環(huán)境,提供開發(fā)者構(gòu)建、運行和管理應(yīng)用所需的一切,從服務(wù)器和操作系統(tǒng)到所有網(wǎng)絡(luò)、存儲、中間件、工具等。
IBM的定義:
PaaS 的全稱是平臺即服務(wù),它提供一個全面、靈活、經(jīng)濟高效的云平臺,用于開發(fā)、運行和管理應(yīng)用程序。
從以上兩個定義可以看出,PaaS是用于開發(fā)者構(gòu)建、運行、管理應(yīng)用程序的平臺,而不僅僅是底層的IaaS資源。但Google的定義有個側(cè)重點:IaaS的資源需要通過PaaS來獲取。
所以,從這個角度上講,容器云平臺當(dāng)然是PaaS,一些著名的國外容器產(chǎn)品,比如Rancher、OpenShifit等。這也是為什么國內(nèi)很多企業(yè)干脆就把PaaS當(dāng)成容器云,而容器又是云原生的重要組成,所以,云原生PaaS更加是容器云了。
但是,這樣理解——云原生PaaS是容器云——并不全面。PaaS定義中包含重要的一點,PaaS應(yīng)該全面,應(yīng)該提供開發(fā)者構(gòu)建、運行管理應(yīng)用所需的一切。K8s顯然不是,容器云產(chǎn)品也不是。K8s的核心能力是對底層資源的抽象與封裝,向應(yīng)用層提供了彈性與韌性的能力。更多的容器云產(chǎn)品只是為K8s提供了一個UI界面,然后提供了一些開發(fā)者工具。
從IaaS的嚴(yán)格定義來講,容器是屬于PaaS的,但個人認(rèn)為,容器核心能力是對底層資源的抽象與封裝,是偏向于IaaS的。
當(dāng)然,云原生PaaS究竟是啥可能沒那么重要,更重要的是怎么做。
云原生PaaS的幾種做法
我們先來理解一下企業(yè)上云。

一個應(yīng)用的承載,下面有4層,我們使用哪一層的云服務(wù),就能夠省掉下面幾層的建設(shè)和維護的成本。比如,你使用的云虛擬機,下面物理機、機房的購買、建設(shè)、維護的費用你就省了,使用公有云無非是第三方廠商來提供下面兩層的服務(wù),使用私有云就是企業(yè)有專門的團隊來提供下面兩層的服務(wù)。
這里要重點說明一下,如果使用容器服務(wù),除了可以免掉下面三層的成本,還會有其他的重大價值:
彈性。使用K8S能夠做到資源彈性伸縮,當(dāng)業(yè)務(wù)負(fù)載高時,能自動擴副本數(shù),業(yè)務(wù)負(fù)載低時,自動回收副本。減輕應(yīng)用運維的壓力,又能省資源。企業(yè)部署應(yīng)用時,不用像之前一樣先預(yù)留好大資源以應(yīng)急,造成大量的資源閑置和浪費
可靠性。彈性本身可以提升可靠性,當(dāng)負(fù)載量提升時還能讓應(yīng)用應(yīng)付自如。其次,當(dāng)容器的節(jié)點故障時可以重新調(diào)度到其他節(jié)點?;蛘撸?dāng)一個容器故障時,重建容器,甚至當(dāng)一個機房故障時,重新調(diào)度到另一個機房
屏蔽底層差異。這點是彈性和可靠性的支撐條件之一,能夠屏蔽底層差異,才能絲滑地彈性擴容和重調(diào)度
凡事都具有兩面性,弄清楚了使用不同層次云服務(wù)的價值之后,也需要弄清楚使用它的成本,顯性成本顯而易見,需要看見的是隱性成本,主要有如下隱性成本:
使用哪一層的云服務(wù),就需要運維這一層本身
上一層的改造和適配
以使用容器(K8S)服務(wù)這一層為例,上云上到容器是非常好,但是有兩塊巨大隱性成本:
本層的運維。那么你需要有專業(yè)的人來運維K8S,監(jiān)控告警、集群升級、備份恢復(fù)、集群配置、集群調(diào)優(yōu)、外部對接、容量規(guī)劃等等。懂K8S運維的人,市場上不多,這里付出的成本會比較高
上一層的改造和適配。容器的上一層是應(yīng)用,為了讓應(yīng)用能在容器中很好運行,那么應(yīng)用需要進行改造,應(yīng)用的生產(chǎn)方式、部署方式和運維方式。這一點的成本也比較高
理解了企業(yè)上云,我們再來看企業(yè)做PaaS的一些做法:
建一個平臺,提供一些列開發(fā)者相關(guān)工具,CI工具、測試工具、代碼管理工具、代碼掃描工具等等,提供一個入口供開發(fā)者獲取IaaS層資源。
建一個容器云平臺,有的直接采購商業(yè)產(chǎn)品,有的基于開源的進行二次開發(fā)。然后在容器平臺上,提供各種各樣的容器版本的開發(fā)者相關(guān)工具。
毫無疑問,第1種方式已經(jīng)落伍了,那是傳統(tǒng)PaaS的做法。當(dāng)前的普遍做法是第2種,但第2種就是最好的做法了嗎?答案是否定的。
云原生PaaS,有更好的選擇
容器當(dāng)然是更好的選擇,問題在于如何提供容器能力。提供開發(fā)者相關(guān)工具也是好的,同樣,如何提供是更好的?
更好的選擇是——以應(yīng)用為中心。
什么是以應(yīng)用為中心?
進入一個平臺,首頁就應(yīng)該是一個個的應(yīng)用,然后圍繞應(yīng)用,能夠?qū)?yīng)用進行開發(fā)、構(gòu)建、運行、測試、運維等。在操作應(yīng)用的時候,資源自動匹配,工具就在操作應(yīng)用的時候提供,比如,當(dāng)我部署應(yīng)用時,自動匹配資源。當(dāng)我構(gòu)建應(yīng)用時,自動調(diào)用CI工具的能力。
打個比方,如果我們把底層資源當(dāng)成自來水,水的使用方式是擰開水龍頭,就能夠使用,但這仍然不是自來水的高級用法,更高級的用法是——自來水的使用綁定使用場景,比如洗衣機,洗衣機對接好自來水,對于我們而言,不需要再去關(guān)注水了,我們只用打開洗衣機洗衣服就夠了,洗衣機會根據(jù)實際情況自動控制水量。未來家里對水的使用,越來越多綁定在使用場景中,洗衣機、冰箱、智能電飯煲、洗碗機、馬桶、刷牙機等等。未來出生的孩子,也許他們再也見不到水龍頭,也不知道水龍頭是何物。這些孩子就是電器原生的,跟云原生的概念類似。
以應(yīng)用為中心的云原生PaaS平臺是什么樣子?我想會是如下這樣子,最上層是應(yīng)用云。
咱們進一步探索,未來的云會是什么樣呢?我想會是如下這樣子:

企業(yè)都是在應(yīng)用云上進行應(yīng)用的全生命周期管理,不用再看到阿里云、騰訊云、AWS、企業(yè)私有云的細節(jié),也不用運維云資源,這些云服務(wù)廠商只是提供了在世界各地不同的服務(wù)規(guī)格的云資源。企業(yè)只需要在應(yīng)用云上把應(yīng)用交付到不同云服務(wù)。這樣,就徹底做到了以應(yīng)用為中心。個人認(rèn)為,這是云原生的終態(tài)。我們的核心產(chǎn)品CloudOS,就是這么一朵應(yīng)用云,這是云原生PaaS平臺的更好選擇。