Serverless vs 容器:Serverless終將勝出!

作者:David Linthicum

serverless將主導雲計算行業,不過容器也會影響雲。

你猜怎麼著?serverless計算並不是真的無伺服器,容器的核心其實也不是包含(contain),而是抽取(abstract)。密切跟蹤雲計算領域的術語含義稱得上是一項全職工作,為此經常有人來向我討教。

最近的熱門話題是serverless會慢慢地超過容器;更重要的是,一些人想知道應該如何準備充分利用這個轉變。

首先,容器不會銷聲匿跡。的確,我認為容器市場會在2018年和2019年迎來大幅增長。我要說的是,與serverless雲計算相比,容器可能不得不退居二線。

其次,容器比serverless問世更早,這項技術是有其歷史的。今天的Docker容器基於半途退出的容器標準。然而,雲端容器有點不一樣。它們提供了目前的公共雲提供商無法提供的可移植性,而且提供了一種相當完善的分散式開發平台。

最後,serverless和容器解決的問題全然不同。在許多使用場合下,很難對兩者作一番比較。比如說,考慮到很難重構或重寫應用程序,讓其成為一組serverless函數,serverless更適用於全新的應用程序。容器可以對現有的應用程序進行容器化處理,儘管我仍然認為你也需要對那些應用程序進行大規模的重構,但是重構工作量不像serverless那麼多。

serverless vs容器關乎簡易性和成本效益

為什麼我認為serverless會佔主導地位……OK,稍佔主導地位?只要看看廣大開發人員過去的採用模式,畢竟他們才是這方面的最終決定者。有幾個方面需要考慮:

?開發人員不是基礎設施人員。公共雲計算的使用已迫使許多開發人員清楚地了解自己需要什麼樣的內存、CPU及其他平台容量。雖然開發人員並不安裝機架伺服器,也從來沒有這麼干過,但現在他們在做之前留給硬體人員去做的決定。

公共雲確實提供了這個便利:將工作負載扔給開發人員的那些人可以自行快速配置資源。開發人員常常低估或高估了自己需要的硬體資源,無論在哪種情況下,都需要為公共雲中不會使用的虛擬硬體埋單,或者由於資源缺乏,眼睜睜看著你的應用程序無法正常運行。

另一方面,serverless讓開發人員不必操心虛擬硬體的配置,也不必擔心基礎設施方面的開支過度或過少。無論是微軟的Functions還是AWS的Lambda,serverless雲計算讓開發人員擺脫了虛擬伺服器這個概念。相反,他們只是運行使用公共雲serverless雲計算工具構建的serverless函數,他們需要的伺服器會自動分配,而且自動發布。

?公共雲提供商並沒有發明容器。另一個因素是,容器方面真正的創新者是Docker和CoreOS,而不是兩大公共雲提供商:AWS和微軟。雖然AWS和微軟都的確採用了Docker,甚至來自Docker、CoreOS和谷歌(Kubernetes)的容器技術,但要求公共雲裡面存在這項技術的卻是公共雲用戶,他們推動了目前現有的技術創新。在此情形下,谷歌、微軟和AWS提供了容器開發和部署服務。

所以我們要處理的是,NIH(非此處發明)遇上大型公共雲提供商,這些提供商可能會從serverless計算賺到更多的錢,它們認為就創新而言serverless遠勝過容器。這就是為什麼大型公共雲提供商向你吆喝推銷serverless雲計算的可能性比吆喝推銷容器來得大。然而,這些提供商可能以同等數量的銷售和營銷資金來同時支持兩者。(這是局外人的觀點。)

?最後,serverless似乎更具成本效益。這是serverless超過容器的真正原因。從個人經驗來看,使用基於雲的容器技術或本地容器技術構建全新應用程序的成本比使用serverless工具構建同樣應用程序的成本要高得多。

開發人員沒必要操心這個:確定虛擬計算、存儲和資料庫資源的準確數量,以支持工作負載。這項工作會自動為他們完成,而且容易了許多。此外,由於替開發人員創建和停用資源,所以往往更具成本效益,不過成本效益到底有多大則因人而異。

Docker的這個圖表明了容器的可移植性。

severless與容器最終關乎「是否適合」

不過等一下,做出這些決定時要考慮到一些常識。雖然serverless適用於可以從頭設計、構建和部署的全新應用程序,但是試圖讓serverless適用於傳統或遺留的應用程序就無異於方枘圓鑿,會顯得格格不入。

別以為公共雲提供商會袖手旁觀,眼睜睜看著容器在這兩種技術當中佔有遺留遷移市場的大多數份額,任由自己的市場份額萎縮。它們已經在為這些工具提供語言、存儲和數據支持,微軟和AWS都很快會進入第三代。

說到滿足可移植性要求,容器是不二的選擇。一旦你構建了在容器裡面運行的應用程序,應該能夠將該容器移到任何地方,包括本地平台和基於雲的平台。而如今,根本無法從一個品牌的serverless工具移植到其他品牌的serverless工具。

然而,企業通常高估了對可移植性的需求。雖然企業界在過去幾年要求雲提供商確保可移植性,但它們現在明白,構建應用程序以確保可移植性(包括使用容器)的成本可能超過好處,因為大多數的企業工作負載仍然留在構建它們所用的平台上。

如果企業考慮的側重點由可移植性需求轉向技術本身,serverless通常會因本文概述的幾個原因而勝出。這倒不是說容器會銷聲匿跡,容器只是在2018年會落後於serverless。別說我沒有提醒過你。


推薦閱讀:

WhatsApp 只有 50 個人,服務全球 4.5 億人,他們的伺服器是怎麼架構的?
微軟的雲計算服務 Azure 與亞馬遜的 AWS 有什麼區別?
一次 Serverless 架構改造實踐:基因樣本比對

TAG:容器 | 云计算 | IaaS |