二者都是當今技術時代的熱門話題,也都被視爲是開發技術的競爭對手。前端
首先,還有至關多的好奇和擔憂。此外,二者都是可供工程師使用的、高效的、機器無關的抽象。docker
可是,在冠軍之間,有一個不可逾越的鴻溝。你要麼在容器區域,要麼選擇 Serverless。除此以外,若是你願意將二者結合起來,那將是一個強大的組合。數據庫
預計到 2021 年,Serverless 將達到 77.2 億美圓 的規模。但對容器的需求也將增加 40%。編程
簡而言之,Serverless 是運行在服務器上的,基於雲服務的子集。後端
服務提供商或供應商管理 Serverless 操做的基礎設施需求。你所須要作的就是部署代碼。所以,你有機會更專一於應用邏輯,而沒必要擔憂基礎設施。安全
該技術在主流企業中是很是酷的一種存在。服務器
來源:https://www.slideshare.net/speckandtech/a-bot-in-minutes-with-serverless架構
有不少可用的平臺 —— Google 雲、AWS Lambda、EdgeEngine框架
使用 Serverless,你一般是按使用量付費。閒置資源會有價格豁免。例如,Lambda 以 100 毫秒範圍爲其計時單位。less
此外,因爲任務很小,且運行在較小的 Serverless 功能上,所以開銷成本可達到最小化。
除此以外,代碼部署、容器配置、系統策略、可用性級別或後端服務器任務,都再也不是你頭疼的問題。
你有機會試用自動擴縮容。
來源:epsagon.com
在主機應用環境下,Serverless 是一種外部集成。所以,我的容器的生命週期能夠避開任何運行時故障的狀況。
像其餘服務器同樣,Serverless 接受來自數據庫或前端程序及站點的信息。根據程序來檢索數據並將其返回給用戶接口。
與容器相比,Serverless 的訂價差別在於,其計費取決於實際的後端任務執行持續時間。
在銷售系統上,Serverless 功能可組織庫存和交易數據庫以及從新進貨等臨時任務。
最後但一樣重要的是,Serverless 在將數據轉換爲持久化存儲或將指標轉發給分析服務方面是很是方便的。
這些限制發生在大小和內存使用方面,或者說是基於 Serverless 架構的限制。
例如,爲了保持函數的正常運行,並防止額外的系統資源消耗,本機支持的編程語言的有限列表對於 Serverless 來講並不天然。因爲基本功能的限制,Serverless 函數可能並不適合監控工具。首先,Serverless 是對主框架平臺的外部集成支持。
所以,你沒法訪問內容管理系統。
這只是 獨立包 的一部分,在其中部署、執行和擴展了一個應用程序。
根據 亞馬遜 的介紹,容器是「一種操做系統虛擬化的方法,其容許用戶在資源隔離的進程中運行應用程序。」
根據容器框架,Docker 的說法,容器管理平臺聲明:「容器是一個軟件單元,它將代碼及其全部依賴打包在一塊兒,所以應用程序能夠快速可靠地從一個環境遷移到另外一個環境。」
在從一個環境到另外一個環境的遷移過程當中,容器概念很是有用。緣由在於其可以在遷移期間引入隔離,以免任何變量的改變。
所以,若是你要將設計的產品代碼從開發遷移到生產,這將是爲你而準備的。
其優勢不少。
若是你有這方面的技術專長,那麼你會喜歡使用容器。它最適合更爲普遍的應用或企業。在這種狀況下,使用 Serverless,你可能很快就會面臨代碼蔓延而難以管理的問題。
例如,若是在 Serverless 應用上運行,則折射器會出現各類瓶頸。結果將是極其分散的微服務。
你能夠設置策略、保留和管理資源、嚴格控制安全性,並充分利用容器來管理和遷移服務。
基礎架構命令全都掌握在你手裏,只需按需定製便可。
手動瀏覽容器活動的開關及狀態。
這就確保了有效深刻的調試和測試、對資源的全方位使用,以及在各個級別進行深刻的性能監控。
第一個也是最重要的好處是「特有的易移植性」。你能夠將全部應用程序與全部依賴組合在一個小的 package 中並在任何地方運行它。
容器很是適合大型應用程序,由於其不受內存或大小限制。你是這裏全部涉及功能的惟一全部者。
若是要對比容器與 Serverless 計算之間的區別。
容器最適合大型和複雜的應用。 若是您的產品對環境敏感,則須要一絲不苟的質量保證和監控,容器是解決方案。
容器在遷移遺留的單體應用時也很方便。 您能夠將此大型應用程序碎片整理爲容器,並使用第三方工具進行安裝。
容器適用於大型電商網站。那種具備至關大的站點地圖或者有不少子域的網站。您可使用容器將每一個節點包裝在其中。
所以,若是您要開始一個新項目,且產品不須要太多遷移時,Serverless 是最好的選擇。例如,Serverless 是物聯網(IoT)應用程序的最佳選擇。該應用程序監測到水的存在,以識別儲水設施的泄漏。
一般,程序沒必要一直運行,但當泄露的狀況下,其須要準備好執行。
一般,當開發速度和成本最小化很是重要,且不想管理可擴展性時,Serverless 是理想的選擇。
您是否仍然堅持在容器與 Serverless 之間進行選擇?
截至目前,二者均可用於相同的開發項目,但用途不一樣。 Serverless 適用於處理數據事件驅動的觸發器。另外一方面,容器在技術規範上提供更大的可擴展性和獨立性。
有了適當的專業知識,您能夠經過容器管理項目的小碎片,做爲在 Serverless 上運行項目子集的一種方法。
但這取決於預算管理和項目要求。
結論
容器與無服務器計算?!!正如他們所說,這些是相互競爭的技術!!
基於容器和無服務器的計算是同時代的。 它們支持不斷髮展的雲和基於持續交付的軟件世界。 所以,若是您是尋求雲戰略的人,那麼集成技術以減輕弱點對您有利的。
你是哪一方? 你會考慮將二者結合起來嗎?
原文:https://geekflare.com/containers-vs-serverless/
譯者:萬想
------
9月福利,關注公衆號後臺回覆:004,領取8月翻譯集錦!往期福利回覆:001,002, 003便可領取!