无服务器计算,如何节省时间和成本?
戳藍字“CSDN云計算”關注我們哦!
譯者 | 風車云馬
出品 | CSDN云計算(ID:CSDNcould)
為了解決面臨的業務問題,通常需要開發人員花費一定的時間編寫完代碼,再交由運維工程師確保正常的運行,整個過程下來比開發的時間要多的多。因為運維工程師不僅要清楚如何在特定的計算機上運行開發人員編寫的代碼,而且要確保它們在后續工作中平穩的運行——這倒像是一個永無止境的任務。為什么不把這部分工作留給別人呢?
在過去20年的發展中,IT領域的許多創新——虛擬機、云計算、容器——不必過多考慮代碼運行的底層物理機器。近年來,無服務器計算也變得越來越流行。它不用了解運行代碼的任何硬件或操作系統,因為所有這些都由服務供應商來提供。
什么是無服務器計算?
無服務器計算是云的一個執行模型,在這個模型中,云提供商動態地分配特定代碼段所需的計算和存儲資源。涉及的服務器也完全由供應商負責供應和維護。2017年,亞馬遜的無服務器倡導者克里斯·芒斯(Chris Munns)在一次會議上表示,“在編寫和部署代碼的開發者看來,根本不需要管理或提供服務器。任何涉及到主機管理或在操作系統級別的處理,都不屬于無服務器世界?!?/p>
開發人員Mike Roberts解釋說,這個術語曾經用于所謂的“后端即服務”場景,即移動應用程序將連接到完全托管在云中的后端服務器。如今當人們談到無服務器計算或無服務器體系結構時,他們指的是“功能即服務”,其中客戶只編寫處理業務邏輯的代碼并將其上傳到供應商那里。供應商負責相關硬件供應、虛擬機和容器管理,也包括多線程這樣的任務。
無服務器服務是事件驅動型的,這意味著只有觸發請求時才調用代碼。供應商只按執行代碼的時間收費,而不是對維護的物理或虛擬服務器收費??梢詫⑦@些服務創建成管道或者應用程序的組件,與容器或傳統服務器上運行的其他代碼進行交互。?
無服務器計算的優點和缺點
無服務器計算有兩個明顯的好處:開發人員只需要關注代碼的業務目標,而不是基礎設施問題;而且企業只為它們實際使用的計算資源付費,而不是購買物理硬件或租用閑置的云服務。
這對于事件驅動的應用程序特別有優勢。例如應用程序可能大部分時間處于空閑狀態,但在某些條件下必須同時處理許多事件請求;或者有一個應用程序,它處理來自有限或間歇性Internet連接的物聯網設備的數據。在這兩種情況下,傳統的方法都需要提供一個強大的有處理峰值能力的服務器,但是該服務器在大多數情況下都沒有得到充分利用。使用無服務器架構,您只需為實際使用的服務器資源付費。無服務器計算也適用于特定類型的批處理,例如上傳和處理一系列單獨的圖像文件,并將它們發送到應用程序的另一節點。
無服務器最明顯的缺點是,它們不適合長期任務。大多數無服務器供應商不會讓代碼執行超過幾分鐘,但是每次啟動服務時,它不會保留以前運行實例中的任何數據。還請注意,無服務器的代碼可能需要長達幾秒鐘的時間來啟動——這對于大多數用例來說都不是問題,除非您的應用程序需要較低的延遲。
無服務器也存在其他一些缺點,這可能與廠商有關。目前無服務器市場由大型商業云提供商所主導,這意味著開發人員一旦使用來自供應商的工具,如果不滿意就很難切換。而且,由于太多的無服務器計算是在供應商的基礎設施上進行的,因此很難將無服務器代碼集成到內部開發和測試管道中。
無服務器供應商:AWS Lambda、Azure和Google云
無服務器計算始于2014年推出的AWS Lambda,這是一個基于亞馬遜云服務的平臺。2016年,微軟也推出了Azure功能。2017年,谷歌云功能開始測試,于2018年7月正式生產。這三種服務的優勢、劣勢、支持的語言和處理方式略有不同。還有IBM Cloud功能也在部署中,它是基于開源Apache OpenWhisk平臺。
無服務器堆棧(Serverless stacks)
與許多軟件領域的情況類似,無服務器時代見證了軟件堆棧的演變,這些堆棧將構建無服務器應用程序所需的不同組件組合在一起。無服務器堆棧包含要編寫代碼的語言環境、為代碼提供結構的應用程序框架和平臺啟動代碼的觸發器。
這些內容根據供應商的不同,也有一些區別。例如對于開發語言,AWS Lambda支持 Node.js、Java、Go、C#和Python,但是Azure只支持JavaScript、C#和F#。關于觸發器,AWS Lambda其中許多都是針對AWS平臺的,比如Amazon Simple Email Service和AWS CodeCommit;谷歌云服務還可以通過通用HTTP請求觸發。
無服務器框架(Serverless frameworks)
軟件框架/軟件架構對構建應用程序非常重要。Amazon有自己的軟件架構,如無服務器應用模型( Serverless Application Model,SAM),其中大多數是跨平臺的,也是開源的。其中最流行的是無服務器框架,例如AWS Lambda、Azure服務、谷歌云服務和IBM OpenWhisk。另一個受歡迎的產品是Apex,它的優勢在于提供了更為豐富的語言環境。
無服務器數據庫(Serverless databases)
無服務器計算的缺點是沒有持久狀態,這意味著本地變量的值不會保存。因此代碼需要訪問的任何持久性數據都必須存儲在其他地方,大部分無服務器供應商都提供了可以與之交互的數據庫。
與其他服務不同的是,無服務器數據庫的數據是無限期存儲的。通過配置集群,數據庫所有的維護、補丁、備份、復制和擴展都將自動完成,從而大大節省成本開銷。功能即服務,您只需要為實際使用的計算時間付費,并且能夠根據需要對資源進行靈活調整。
?
三大無服務器提供商都提供了自己的無服務器數據庫:Amazon有Aurora serverless和DynamoDB, Microsoft有Azure Cosmos DB,谷歌有Cloud Firestore。不過,這些并不是唯一可用的數據庫。
無服務器計算和Kubernetes
容器有助于在底層支持無服務器技術,由供應商負責管理容器的開銷,因此對用戶是不可見的。許多人將無服務器計算視為實現微服務容器化的一種方法,甚至開始討論后容器時代。
事實上,容器和無服務器計算可能會在未來的許多年中共存,而且無服務器服務可以與容器化的微服務存在于同一個應用程序中。最流行的容器編制平臺Kubernetes也可以管理無服務器的基礎設施。您可以使用Kubernetes在單個集群上集成不同類型的服務。
無服務器離線運行(Serverless offline)
這樣看來,無服務器計算貌似需要與供應商簽約(合作開發)才能體驗,是不是感覺使用無服務器計算的前景有點嚇人。但是不要擔心:無服務器的代碼也是可以在本地硬件上離線運行的。例如,AWS SAM就提供了一個本地運行代碼的插件Serverless-offline,支持離線測試Lambda代碼。快來嘗試吧!
如果你是一個狂立學習flag卻屢屢打臉的懶癌晚期,或者是一個對云計算方面云里霧里,不知所措的好學者,亦或是一位資深行業專家,都歡迎關注【CSDN云計算公眾號】,爆發自己學習的洪荒之力吧!
福利
掃描添加小編微信,備注“姓名+公司職位”,加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習!
推薦閱讀:
屢試不爽的互聯網架構三大馬車!
抖音微博等短視頻千萬級高可用、高并發架構如何設計?
20大5G關鍵技術
Fast.ai:從零開始學深度學習 | 資源帖
10個簡單小竅門帶你提高Python數據分析速度(附代碼)
程序員爬取 3 萬條評論,《長安十二時辰》槽點大揭秘!
暗網竟成比特幣最大用戶? 上半年5.15億美元被用于非法活動
真香,朕在看了!
總結
以上是生活随笔為你收集整理的无服务器计算,如何节省时间和成本?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上海青浦宋庆龄学校旁边单人公寓怎么租
- 下一篇: 新的硅胶地毯为什么被敲起?