Serverless計算與容器技術:您應該使用哪一種?
無服務器計算和容器都使開發(fā)人員能夠以比傳統(tǒng)服務器或虛擬機上托管的應用程序更少的開銷和更大的靈活性構建應用程序。開發(fā)人員應該使用哪種風格的體系結構取決于應用程序的需求,但無服務器應用程序更具可擴展性,而且通常更具成本效益。
在本文中,我們看一看爭論:無服務器計算與容器,并提供我們對這兩種模型的見解。
newrelic去年進行的一項研究顯示,70%的企業(yè)已經(jīng)將大量工作負載遷移到公共云上。在這組人中,39%的人使用無服務器,40%的人使用容器,34%的人使用某種容器編排。這說明了無服務器技術的采用如何與容器的采用相匹配,但還不太清楚的是在生產(chǎn)應用程序中的使用范圍。
什么是無服務器計算 serverless computing?
Serverless是一種開發(fā)方法,它用計算能力取代長時間運行的虛擬機,這種計算能力是按需產(chǎn)生的,使用后立即消失。
不管名稱如何,運行應用程序時肯定會涉及到服務器。只是你的云服務提供商,不管是AWS、Azure還是Google云平臺,都在管理這些服務器,而且它們并不總是在運行。
相反,您可以配置觸發(fā)無服務器函數(shù)執(zhí)行的事件,如API請求或文件上載。當該操作完成時,服務器將處于空閑狀態(tài),直到請求另一個操作為止,并且不會為空閑時間計費。
換句話說,無服務器計算是操作系統(tǒng)之上的另一種抽象,它提供了一種機制,可以在許多較小的部分中運行應用程序。它提供函數(shù)或模塊來執(zhí)行應用程序任務,這些任務可以按需執(zhí)行,而不必擔心底層操作系統(tǒng)和硬件基礎設施。這些任務通常是短期的,并根據(jù)應用程序的要求定期運行。與云計算需要物理硬件的方式類似,無服務器計算也需要服務器來執(zhí)行任何應用程序。
采用無服務器模式可以降低成本,加快部署速度,提高可擴展性,并減少過度工作的IT團隊的管理時間。Serverless還非常適合支持各種微服務,并受到DevOps開發(fā)人員的歡迎。
無服務器計算的好處包括:
- 降低成本
- 無服務器管理
- 簡化的可擴展性
- 快速部署和更新
- 簡化的后端代碼
- 更快的周轉
什么是容器?
Docker認為,容器是一個輕量級的、獨立的、可執(zhí)行的軟件包,包含運行它所需的一切:代碼、運行時、系統(tǒng)工具、系統(tǒng)庫和設置。
容器解決了當軟件從一個計算環(huán)境中移出時運行軟件的問題,它本質(zhì)上是將軟件與其環(huán)境隔離開來的。例如,容器允許您將軟件從開發(fā)轉移到暫存,從暫存轉移到生產(chǎn),并使其可靠地運行,而不考慮所有環(huán)境的差異。
容器不是像虛擬機那樣虛擬化硬件堆棧,而是在操作系統(tǒng)級別虛擬化,多個容器直接在操作系統(tǒng)內(nèi)核上運行。這意味著容器更加輕量級:它們共享操作系統(tǒng)內(nèi)核,啟動速度更快,與啟動整個操作系統(tǒng)相比,只使用了一小部分內(nèi)存。
有許多可用的容器格式。Docker是一種流行的、開源的容器格式,在Google云平臺和Google Kubernetes引擎上都得到了支持。
采用趨勢
根據(jù)一些調(diào)查和研究,無服務器和容器的采用率都在快速增長。以下是我挑選的一些亮點。
- Cloudability的一項研究發(fā)現(xiàn),2017年第四季度,AWS用戶的容器采用率增長了246%,高于第三季度的206%。與此同時,同一項研究發(fā)現(xiàn),2017年第四季度AWS用戶的無服務器采用率增長了667%,高于第三季度的321%。
- Serverless Inc.最近的一項調(diào)查發(fā)現(xiàn),2018年,82%的記者在工作中使用Serverless,高于2017年的45%。超過53.2%的人表示,他們使用Serverless技術對工作至關重要。
- serverlessinc.的調(diào)查還顯示,24%的通訊員在采用Serverless之前對公共云的體驗有限或為零。20.2%的記者在1000人以上的大企業(yè)工作。
- Logz.io的DevOps Pulse調(diào)查發(fā)現(xiàn),2018年60.71%的通訊員采用了集裝箱編排,高于2017年的42.11%。
根據(jù)Rightscale的說法,serverless是一種正在增長的云服務:
開發(fā)人員應該如何選擇Serverless架構和容器?
選擇Serverless無服務器體系結構的開發(fā)人員將能夠快速發(fā)布和迭代新的應用程序,而不必擔心應用程序是否可以擴展。此外,如果應用程序沒有看到一致的通信量或使用情況,那么無服務器計算將比容器更經(jīng)濟高效,因為代碼不需要一直運行。
容器使開發(fā)人員能夠更好地控制應用程序運行的環(huán)境(盡管這也需要更多的維護)以及所使用的語言和庫。因此,容器對于將遺留應用程序遷移到云非常有用,因為可以更緊密地復制應用程序的原始運行環(huán)境。
混合方法
也可以使用混合體系結構,一些無服務器功能和一些部署在容器中的功能。例如,如果應用程序功能需要的內(nèi)存超過無服務器供應商分配的內(nèi)存,如果某個功能太大,或者某些功能需要長時間運行,而其他功能不需要長時間運行,則混合體系結構使開發(fā)人員能夠在仍然使用無服務器支持的功能的容器的情況下獲得無服務器的好處。
無服務器和容器也可以并排使用,而不是選擇一個或另一個。事實上,許多公司通過混合方法獲得了成功。他們:
- 在serverless滿足其需求的工作負載中使用serverless
- 在沒有容器的地方使用容器,例如,對于以下工作負載:
- 是長期的
- 需要更可預測的性能
- 需要比使用無服務器更容易實現(xiàn)的恢復能力
- 不斷地大規(guī)模運行,每次調(diào)用付費的定價模式變得過于昂貴
結論
Serverless無服務器計算和容器都為希望擴展其工作負載的企業(yè)提供了優(yōu)勢。