基於雲核心的未來雲端計算架構

語言: CN / TW / HK

早期單機作業系統是分層架構,後面才演化成今天如 linux windows 的巨集核心微核心架構。雲作業系統也會有類似發展趨勢:以前都是單機應用,而現代應用幾乎都是分散式應用。目前,kubernetes 已經成為事實上的“雲作業系統核心”,這讓能使核心普及的髮型版呼之欲出。

現在,IaaS、PaaS 和 SaaS 在雲原生技術普及的浪潮中已經名存實亡,比如容器執行在裸機上就已經擁有非常好的效能了,是否還需要 IaaS 這一層?PaaS、SaaS 本質都是容器,是否還需要區分?這三層架構實際上已經被擊穿!

程式設計師很認“鴨式辯型”,即會游泳、長翅膀的就是鴨子。這種抽象思維是極重要的,這也是 linux“一切皆檔案”的設計哲學。而一個執行的 mysql 叢集與一個 crm 軟體其實沒有本質上的區別,所以在雲作業系統中,“核心之上皆為應用”。

雲端計算三次浪潮

基於雲核心的雲作業系統未來會引發雲端計算的巨大變革。

先來看看有意思的 web1、web2 和 web3,把網際網路的變革套用到雲端計算中,你會發現,兩者的生產關係有非常類似的地方。

1 對 n 關係

  • web1 : 入口網站生產內容,使用者檢視內容

  • 雲端計算 1.0 : 公有云廠商開發服務,企業和開發者使用

這個階段的生產關係是 1 對多,雲廠商幾十款雲產品無法滿足市場上體量龐大、偏好各異的需求,就像 web1 使用者只能看小編寫的一些新聞。

n 對 1 對 n 關係

  • web2 : UGC 使用者生產內容,使用者之間產生連結

  • 雲端計算 2.0 : 開發者生產雲端計算應用,給使用者使用

漸漸地,雲廠商開始弄 markting place,一定程度上想通過開放市場來連線雲端計算的生產者與消費者,這就是雲端計算朝著 2.0 過度的訊號。但是,缺乏標準就意味著難以協作,這個階段想要徹底爆發必須要有“實際上的標準”出現。

Docker 映象算是非常好的標準,可惜難以覆蓋分散式軟體,但大家通過 docker hub 協作就是一個非常好的協作模型了。

kubernetes 的 API 標準是真正有潛力成為雲端計算 2.0 事實標準的。未來,大家都通過這個系統相互協作,才能像安卓生態蓬勃的應用爆炸一樣,誕生越來越多優質的雲服務。

n 對 n 關係

  • web 3 : 網路所有權屬於網路的所有參與者,資料迴歸使用者自己手中

  • 雲端計算 3.0 : 算力屬於所有計算的參與者,一臺分散式超級計算機誕生

整個過程其實是讓計算和服務更民主,任何組織和個人都可以貢獻自己的算力,釋出和使用應用的人也不用關心應用到底執行在哪個地方,整個計算的使用就像使用一臺虛擬計算機一樣。 這與現在很多大的公鏈一樣,不過目前的智慧合約場景還過於侷限、計算成本過高,雖然形式上很像超級計算機,但效果上隔了好幾個鴻溝。

基於雲核心設計的雲端計算會更便宜

當前,公有云提供的雲服務還是極其昂貴的。 IDC 託管硬體與在某雲廠商官網查到的儲存型別機器相比,兩者價格相差十倍!(不過雲廠商對大 B 都有非常大的折扣,小 B 沒有這種福利)

很多公有云廠商妖魔化私有云,說私有云就不叫雲。我想問私有云怎麼就不叫雲了?是因為私有云太便宜還是私有云動了誰的蛋糕?這個價格對比小學生都能算的清楚。

其實在雲核心設計的雲作業系統出現之前,公有云確實會便宜,因為軟體成本很高,企業想雲在自己機房玩一套如 openstack 這樣的 IaaS 每年幾乎會花費上千萬的成本,而現在開源生態逐漸成熟讓軟體成本變得便宜和穩定,私有云的成本便宜邏輯又開始成立了。

那還有個問題就是“傳統公有云為什麼貴?”主要有三方面的原因:

  • 第一,傳統公有云還是基於 IaaS、PaaS、SaaS 的架構,每一層都意味著成本。軟體的複雜度直接決定成本,自研所謂一切優勢現在反而會變為成本劣勢,這是最主要的原因。

  • 第二,談邊際成本,這個不是按照公有云的使用者體量去計算的,而是按照每個可用區的建設成本去計算的。如果軟體體系複雜,每個機房需要大量管理節點、需要大量交付人員配合,那成本就無法降下來。但是,基於核心設計的雲作業系統管理節點只需三臺,實習生都能在半個小時以內交付,就像裝 centos 一樣簡單。

  • 第三,次要原因是公有云的彈性都要預留資源,這部分成本都會攤到消費者頭上。

很多企業的業務資源使用都相對固定,如半年或一年做一次擴容等,託管或者自建肯定會更便宜,促銷活動之類的一年也就幾次,在促銷時使用公有云即可,這樣成本可以大幅度降低。

雲端計算會走向開源開放

封閉的雲服務對於企業來說是場災難,最簡單的一個場景是應對雲廠商的漲價行為,如果強繫結就意味著失去了議價權。近期某雲廠商雲開發就提價十倍,有些小企業的利潤直接就被雲服務吃光了。

其次,雲廠商的雲產品如果發展得不好是有可能被下架的,如果企業不幸使用了這類產品,下架時就需要付出巨大遷移成本,有些與程式碼耦合的部分甚至需要重寫程式碼。

開源自然是開放的最好實現方式,不僅對上面幾種場景有比較好的應對措施,關鍵還可以自由按照自己的需求進行定製。所以,未來開源與雲是左右腿。

基於核心架構的雲端計算會變得更簡單

複雜的東西無法普及,複雜的軟體要麼走向腐爛和消亡,要麼重構變得簡單,雲端計算也是如此。大家會發現 centos ubuntu 這樣的 linux 發行版普及了,但是現在的一些公有云能力很難隨處執行和普及,即便是開源了,像 openstack 也一直未能普及。原因很簡單,如果需要幾十人的團隊才能在生產環境玩起來的話,絕大多數企業都會放棄。

什麼叫“內聚”,就是功能不是以犧牲複雜度來換取的。像 linux 的 core 很內聚,驅動即使擴充套件了一萬個,系統複雜度也沒增加,雖然程式碼在一直增加。所以軟體設計時的抽象能力就變得極為重要,基於雲核心架構設計的雲作業系統也是高“內聚”的,通過擴充套件應用來擴充套件能力,而各應用之間是低耦合的。

核心架構雲作業系統爆發時機

基於開源技術的雲服務在侵蝕昂貴且強繫結的公有云服務。

現在可以發現公有云雲原生領域提供的服務商業化做得好的幾乎都是開源強相關的, 如基於 kubernetes 的雲服務,基於 prometheus grafana 的可觀測服務等。

使用者越來越聰明瞭,便宜還是貴按按計算器就能算出來,而且繫結意味著認人魚肉,技術選型明顯往開源技術傾斜。

雲原生侵蝕傳統 IaaS 服務。

基於虛擬機器的業務增長速度已經遠遠趕不上雲原生生態的發展速度了,基於 kubernetes 的雲原生生態每年幾倍甚至有些產品每年幾十倍的增長,大量企業在從虛擬機器架構往雲原生架構遷移。

前幾年市場被教育得很好,越來越多的企業知道雲原生降本增效不是一點點,該填的坑也被填得差不多了,開始考慮從觀望狀態變成實踐了。

市場需要一款雲作業系統進一步降低雲原生門檻與成本。

現狀是企業在實踐雲原生的時候還是容易迷失,生態過於龐大複雜,上千款生態軟體讓很多企業無從下手,而且真要落地的話,至少得有個專家能把雲原生計算儲存網路都玩明白,所以這個生態依然缺乏好用的、開箱即用的發行版。

其實,這個發行版的要求還是很高的,要非常簡單、不多不少地去滿足客戶的需求,還不能給使用者帶來負擔,這就必須得非常好的設計理念和實現機制。

如何實現這樣一個雲作業系統

如何去設計這樣一個作業系統,首先一定需要有非常好的設計理念。

  1. 化整為零,這意味著如果你不裝應用,這個系統就是空的,就是 nothing,就是 void*,和你買了一臺新電腦裡面除了作業系統什麼也沒裝一樣。

  2. 自由組裝,所有使用者的需求都是通過具體應用實現的,而這些應用都是按需求從應用市場中下載,不會硬塞給使用者不需要的東西,未能得到滿足的需求也是通過應用去擴充套件。雲作業系統不會追求各種應用風格的統一,就像 macOS 上的微信和飛書不會有統一的風格和賬戶系統。只有這樣,各應用才能在自己的場景發揮出最大優勢。

實現層面,core 是非常內聚的,意味它向下僅提供雲核心生命週期管理,如安裝/伸縮/升級/清理,向上做好應用的打包與管理即可。

應用市場方面很重要,一定要有好的標準,這涉及到應用的提供者與消費者之間的協作,OCI registry 倉庫就是個非常好的已有事實標準,相容它是最好的選擇。

User interface 一定要簡單極致,這是使用者直接使用你東西的地方,API > CLI > GUI,Desktop 是產品化的終極形態,真的做到用雲像用 PC 作業系統一樣簡單。

剩下的一切都在於擴充套件應用的寬度和深度:

  1. 廣度方面,常用分散式軟體如 mysql 叢集、redis 叢集、訊息佇列等逐步覆蓋,不斷擴充套件常用分散式應用數量。

  2. 深度方面,基本安裝->高可用->可監控->自運維->高效能/安全性->產品化,通過這幾個階段來衡量一個分散式應用成熟度。

總結

未來的雲會更便宜、更開放和更簡單,最終會有一款優秀的發行版本實現雲原生的普及。相信未來雲端計算屬於所有算力的提供者,雲的價值也會屬於所有云計算的參與者,不再受任何廠商繫結之苦,更便宜的享受雲端計算帶來的便利。開源開放帶給大家簡單/便宜的雲端計算!

作者介紹:

fanux.方海濤(中弈),sealos 作者,CNCF sealer 專案發起人。曾就職阿里雲,現任環界雲端計算 CEO,環界獲得陸奇博士奇績創壇種子輪投資。 sealos 是以 kubernetes 為核心的雲作業系統發行版。