WebAssembly會是下一個Kubernetes嗎?
幾周前我有一個“哦,啊哈,當然”的時刻,我想分享一下:WebAssembly是下一個Kubernetes嗎?
Kubernetes來了
Kubernetes承諾提供一個軟件虛擬化基礎,可以讓你同時解決許多問題:
與在裸機上運行服務相比,Kubernetes可以讓你更有效地使用硬件。Kubernetes允許你在一臺硬件服務器上運行多個容器,并允許你根據(jù)需要向集群中添加更多服務器。
“容器云”架構有效地劃分了構建服務器端應用程序的工作。數(shù)據(jù)庫團隊可以發(fā)布數(shù)據(jù)庫容器,后端團隊可以發(fā)布Java容器,產(chǎn)品經(jīng)理使用網(wǎng)絡作為通用中間層將它們連接在一起。它符合康威定律:軟件看起來像組織結構圖。
容器抽象足夠通用,可以支持許多不同類型的服務。Go、Java、C++等等——它不是特定于語言的。開發(fā)團隊可以使用他們喜歡的東西。
負責運行容器的Kubernetes服務器的運維團隊不必信任他們運行的容器,他們內(nèi)置了一些沙盒和保護措施。
Kubernetes本身是對先前架構OpenStack的演變。OpenStack讓每個容器都是一個完整的虛擬機,具有完整的內(nèi)核和操作系統(tǒng)以及一切。相反,Kubernetes通常使用容器,容器中通常不需要內(nèi)核。它們更輕量級——想想Docker與VirtualBox。
在Kubernetes部署中,內(nèi)核仍然位于軟件架構的中心位置。容器化的基本機制是具有私有命名空間的Linux內(nèi)核進程。然后這些容器通過TCP和UDP套接字粘合在一起。然而,雖然每個容器有一個或多個內(nèi)核進程確實比完整的虛擬機擴展得更好,但它通常不會擴展到數(shù)百萬個容器。并且進程確實有一些啟動時間——你不能為每個對高性能Web服務的請求啟動一個容器。這些技術限制導致某些類型的系統(tǒng)架構,通常具有保持某種狀態(tài)的長期組件。
k8s會演化到w9y嗎
服務器端WebAssembly與Kubernetes處于類似的空間——或者更確切地說,WebAssembly類似于進程和私有命名空間。WebAssembly為你提供了良好的抽象屏障和(可以提供)高度安全隔離。在某些方面它甚至更好,因為WebAssembly提供了“允許列表”安全性——它沒有一開始的功能,要求運行WebAssembly的“主機”將自己的一些功能顯式委托給客體WebAssembly模塊。與默認情況下從每個功能開始然后必須受到限制的進程進行比較。
與Kubernetes一樣,WebAssembly也為你提供康威定律系統(tǒng)。你無需傳送容器,而是傳送WebAssembly模塊——以及一些關于他們需要從環(huán)境中獲得哪些類型的東西的元數(shù)據(jù)(“導入”)。WebAssembly是通用的——它是一個低級的虛擬機,任何東西都可以編譯成。
但是,在WebAssembly中你會得到更多的東西。一是快速啟動,因為內(nèi)存就是數(shù)據(jù),所以你可以安排創(chuàng)建一個WebAssembly模塊,該模塊的狀態(tài)從內(nèi)存中預初始化的狀態(tài)開始。這樣的模塊可以在幾微秒內(nèi)啟動——速度足夠快,可以在每個請求上創(chuàng)建一個,在某些情況下,只是在之后丟棄狀態(tài)。你可以在WebAssembly上比在容器上更有效地運行功能即服務架構。另一個是虛擬化完全在用戶空間中提供。一個進程可以在許多不同的WebAssembly模塊之間多路復用。這讓一臺服務器可以做更多事情。而且,你不需要使用網(wǎng)絡來連接WebAssembly組件;它們可以在內(nèi)存中傳輸數(shù)據(jù),有時甚至無需復制。
題外話:WebAssembly的這種輕量級進程特色使得其他架構也成為可能,例如這個有趣的hack將鏈接到Firefox的庫沙箱化,他們實際上已經(jīng)發(fā)布了!
我將WebAssembly與Kubernetes進行比較,但實際上它更像是進程和私有命名空間。所以對最初提出的問題的一個答案是,不,WebAssembly不是下一個 Kubernetes。下一個項目正在等待建立,盡管我知道一些已經(jīng)開始的團隊。
不過,我似乎很清楚一件事:WebAssembly將處于新事物的底部,因此WebAssembly的近期軌跡很可能會跟隨Kubernetes的軌跡,這意味著……
- 分析師的慶祝時間!
- Gartner魔力象限再次出現(xiàn)
- IBM推出了一個新的WebAssembly部門
- 埃森哲開始向公司詢問他們的WebAssembly遷移計劃
- Linux基金會嘗鮮
等等。我會在不久的將來看到動蕩的水域。所以從這個意義上說,Kubernetes本質(zhì)上不是一個技術軟件,而是一個泡沫商業(yè)競爭的紐帶,當然:我們還有5年左右的時間,我們會很開心。
讀者評論:2021年12月的WebAssembly讓我想起了2014年容器/Kubernetes的情況——業(yè)界已經(jīng)意識到當前的技術狀態(tài)并不能解決當今所有的問題。跨邊緣/服務器/瀏覽器的可移植性、可移植的安全模型以及業(yè)務邏輯和庫之間的緊密耦合意味著企業(yè)構建/管理/操作應用程序的多個版本。像wasmCloud這樣的技術是未來,在我看來,未來幾年將會有一個更好的故事。