1. 程式人生 > >Serverless,下一個趨勢?

Serverless,下一個趨勢?

如果你看過有關2017年技術發展的預測,特別是雲端計算方面的預測,一定對Serverless Computing(無伺服器計算)印象深刻。

AWS在2014年推出了第一個大型無伺服器計算服務(AWS Lambda),其他雲端計算巨頭也紛紛在2016年開展了自己的Serverless Computing服務。對於Serverless Computing來說,2017年很可能會是收穫巨大突破的一年。

事實上,在Gartner推出的“2017年十大戰略技術趨勢”榜單中,Serverless Computing赫然在列。Gartner將Serverless Computing看作是MASA(the mesh app and service architecture)的重要部分,並解釋說,“MASA是一種多通道解決方案架構,利用雲端計算、無服務計算、容器、微服務、APIs及事件等提供模組化、靈活、動態的解決方案”。Gartner同時提醒到,這將是一個長期的趨勢,需要IT採用新的工具和工作方法。

所以,關於Serverless Computing 我們應該知道哪些事?

Serverless Computing並不是真的沒有伺服器

其實有很多人認為,Serverless Computing一詞並不是十分妥當。我們的工作負載仍然在某個伺服器上執行著,只不過我們不需要以任何方式部署、配置、維護或管理這些伺服器。我們甚至不需要知道所使用VM(虛擬機器)的型別和數量。

我們可以把Serverless Computing看作是對於終端使用者的IT抽象和簡化。虛擬化使使用者不在需要知道哪些物理伺服器正在執行;雲端計算使配置變得更容易,但仍需要使用者選擇VM型別、啟動或停止服務;而Serverless Computing則更進一步,將VM型別選擇、服務的啟動和停止操作都省去了。

Serverless Computing是雲端計算的一種

Serverless Computing的另一個更具描述性的名字是FaaS(Function as a service)。就像IaaS、PaaS、SaaS一樣,FaaS是雲端計算的一種。通過FaaS,使用者為應用的某一特定功能購買必要的功能。

舉個例子,假設企業有一個用來生成特定報告的分析應用。我們可以使用Serverless Computing來處理生成特定報告的功能。當分析應用需要完成這一報告時,服務將自動啟動必要的雲實例,並在功能完成後自動關閉。我們可以將FaaS用於整個應用程式或者某些功能。

Serverless Computing在程式碼執行時以毫秒計費

Serverless Computing將雲端計算按使用計費的模式提升到了一個新的粒度級別。例如,AWS Lambda按程式碼執行的每100毫秒和程式碼的觸發次數向用戶收費。

Serverless Computing的優勢

Serverless Computing的一個主要好處是,建立應用程式的開發者不再需要花費任何時間處理基礎架構並管理應用程式。開發者僅需上傳程式碼,支援Serverless Computing的平臺或服務將處理其他工作。

對於企業來說,支援Serverless Computing的平臺可以節省大量時間和成本,同時可以釋放員工,讓開發者得以開展更有價值的工作,而不是管理基礎設施。另一方面可以提高敏捷度,更快速地推出新應用和新服務,進而提高客戶滿意度。

Serverless Computing是DevOps的絕配

Serverless Computing在DevOps環境中執行良好,同樣源於它最大限度減少了開發者在管理伺服器上所花費的工作和精力。甚至在某些情況下,允許企業採用“NoOps”的方法,伺服器的部署和管理都已實現自動化,開發者不需要與運維人員一起同步工作。

Serverless Computing與微服務架構相關

微服務架構下,開發者將應用拆分為一個個可獨立構建、管理和擴充套件的小服務,而ServerlessComputing可以將之降低到更小的級別。

然而,行業內對於微服務和功能由什麼組成,還存在分歧。兩者之間的區別比較模糊,有些供應商在微服務和功能兩個術語的使用上甚至可以互換。

需要注意的是,目前有一種趨勢是將應用程式視為較小的獨立部分的元件,而不是作為一個整體。

不需要學習新開發語言

Serverless Computing支援廣泛的程式語言和框架,大多數人員可以立即開始使用Serverless Computing,這樣的語言支援,無疑是勝利和效率提升的一大助力。

Serverless Computing具有可擴充套件性

對於處於快速增長期的企業,Serverless Computing的可擴充套件性是其最具吸引力的特性之一。構建一個同時即適用於數百萬使用者又適用於數十個使用者的應用,是當今開發者面臨的最大挑戰之一。

Serverless Computing消除了這一挑戰,因為其每個功能都可以獨立擴充套件,而不需要員工配置額外的VM或例項。

Serverless Computing也有缺點

首先,Serverless Computing很新,不容易找到有經驗的工作人員和工具來支援。 其次,Serverless Computing簡化了一些工作,卻也讓一些工作變得複雜了起來。將我們的關注點從一個大的應用程式或幾個微服務,轉為對幾十個甚至上百個獨立功能,需要有新的管理技術和流程。 第三,與每一項新技術類似,Serverless Computing短期內很可能會給企業帶來額外的花費,並對企業的管理水平提出更高要求。