在AWS Lambda問世之後,經過了一年多的醞釀, Serverless逐漸獲得開發者的青睞,而其他雲端運算廠商也逐漸意識到,無伺服器運算架構可能成為未來運算架構的潮流,諸如Google、微軟、IBM等知名雲端服務廠商,陸續加入Serverless的行列。
微軟在2016年2月宣布推出Azure Function,Google則推出Cloud Function測試版,而IBM則不僅在BlueMix雲端服務平臺推出OpenWhisk無伺服器運算服務,還將OpenWhisk開源,讓企業可以自建無伺服器運算架構。目前OpenWhisk已被Apache軟體基金會納入育成專案。
一時之間,Serverless這種強調使用者不須管理伺服器的新型態雲端運算服務,成為兵家必爭之地,雲端廠商競相角逐的新市場。而領先眾人將近兩年的AWS,近來更將Serverless推向大家都想像不到的境界。
AWS Lambda功能大躍進
從AWS在re:Invent 2016全球用戶大會所發表的新服務來看,雖然AWS仍繼續提升EC2服務的能耐,不論是提供更多、更大的虛擬機器規格,亦或是搶先推出FPGA雲端服務,都是在保持EC2的領先競爭力;在競爭激烈的容器服務CaaS(Container as a Service)的布局上,也有對應的策略。但是 AWS更大的企圖其實是在Serverless,因為許多重要的新服務都支援或內建Lambda,Lambda可說無所不在。在Serverless服務的布局上,AWS比起其他雲端服務廠商還要積極。
Lambda支援.NET開發平臺
首先,AWS將Lambda擴展至微軟開發陣營,藉助微軟開源的.NET Core,讓AWS Lambda可以支援C#,同時也提供Visual Studio的擴充套件,以吸引.NET開發者使用Lambda。許多企業使用.NET是不爭的事實,AWS的Lambda也向.NET開發者招手,顯見AWS想讓Lambda延伸至更多企業應用的企圖心。此外,AWS在去年年中併購了雲端整合開發環境(IDE)服務商Cloud9,可預期AWS在未來提供更易於開發Lambda的程式開發環境。
CloudFront網路節點也能執行Lambda
再者,AWS推出Lambda@Edge服務,把Lambda擴展到AWS雲端運算環境的邊界,今後在CloudFront網路節點就可以執行Lambda函數。AWS目前在全球布建60個網路節點,若能夠在靠近使用者的網路節點執行Lambda函數,速度一定比在較遠距離的運算區域來得快。
Lambda@Edge在整個Lambda生態是個很大的進展,它讓Lambda執行環境更靠近資料端,大幅提升反應速度,這將會是企業決定採用Lambda的關鍵。目前AWS在臺灣已經設有網路節點,所以企業在臺灣就能就近執行Lambda函數。
IoT裝置內嵌Lambda
AWS除了將Lambda推向網路節點,也推出AWS Greengrass,把Lambda延伸至IoT物聯網裝置,也是往前推進一大步。Greengrass讓IoT裝置與IoT閘道器可以內嵌Lambda執行環境,也就是說IoT裝置也能執行Lambda函數,在裝置端可以就近運算,例如先將感測器的資料預做處理,之後再回傳至物聯網雲端平臺。而且不論是IoT裝置或雲端服務的應用程式開發,都可以使用同一套Lambda開發方式,解決了IoT開發所面臨的裝置離線管理問題。
微服務流程設計與監控
此外,AWS還推出微服務流程設計工具Step Functions,它提供視覺化的流程圖介面,讓使用者可以安排一連串的微服務,輕易設計整個微服務的工作流程。而透過視覺化的流程圖,也能快速理解微服務的運作流程,在主控臺則會顯示每個步驟的即時狀況及記錄。
微服務的好處是高度彈性,架構也就相對複雜。以全部利用Lambda打造後端架構的MoonMail郵件行銷平臺為例,他們串接了超過70種AWS的服務,其架構的複雜度可想而知,而AWS Step Functions,可讓開發者不必過於擔心微服務架構的複雜性,即便架構複雜,透過視覺化圖表的呈現也能有條不紊。
AWS同時還推出另一個視覺化應用程式管理工具Amazon X-Ray,它提供應用程式追踨、除錯、監控等服務。X-Ray未來也會支援Lambda,因此Lambda函數的狀態與訊息傳送過程,都可由X-Ray得知,有助於Lambda程式的監控與除錯。
在AWS re:Invent 2016的重點發表產品中,還有一些耐人尋味之處。例如Amazon新推出的Snowball Edge版本,這款做為離線使用的資料儲存裝置,既內建物件儲存服務S3的執行環境,也有Lambda執行環境,同時具備儲存與運算功能,已可說是儲存設備的一體機了。由於該機可執行Lambda,使用者可撰寫Lambda函數,以控制資料的處理,例如在資料搜集期間先針對特定資料預先處理,待其與AWS雲端服務連線後,依照預定的政策更新雲端資料。
Snowball Edge可說是AWS Greengrass的最佳示範,然而當其他廠商紛紛在IoT解決方案採取容器技術的同時,Amazon卻反其道而行,不採用容器技術,而壓寶在Lambda這個Serverless運算架構。
Amazon新推出的Snowball Edge版本,既內建物件儲存服務S3的執行環境,也有Lambda執行環境,同時具備儲存與運算功能,當其他廠商紛紛在IoT解決方案採取容器技術的同時,Amazon卻反其道而行,不採用容器技術,而是壓寶在Lambda這個Serverless運算架構。
另一方面,Step Functions與X-Ray兩項服務可說是AWS的BPM(Business Process Management), 加諸在Lambda身上,對於開發Lambda應用程式無疑是如虎添翼。
從上述種種跡象來看,AWS如此大陣仗布局,似乎不是只為了以Lambda鞏固無伺服器運算的新市場,反而比較像是Amazon以Lambda這個關鍵元件為核心,打造一種全新的作業系統。
為此iThome當面詢問AWS技術長Werner Vogels,Amazon是否正以Lambda打造一種新的作業系統?Werner Vogels表示:「沒錯……你可視為網際網路的作業系統(Internet OS),許多服務串連起來一同運作,而Lambda就是連結這些服務的膠水。」
兩年前AWS推出Lambda時,乍看只是再推出了一項新服務,以搶進Serverless的新市場,但其實Lambda是AWS對自己的EC2先起了革命,在新的敵人還沒出現前,就先對自己來個破壞性挑戰。Amazon更大的企圖,是在AWS建立一種全新的網際網路作業系統,打造新的生態圈,涵蓋更大的IT應用範疇。
目前Serverless仍處於早期發展階段,各方人馬爭相競逐這個雲端新處女地。緊追在後的微軟、Google、IBM等雲端服務廠商,各自祭出不同的策略,例如採取有別於AWS封閉環境的作法,一開始就全部開源,又或是提供企業自建版本。此外,新創公司也嗅到了商機,投入Serverless的速度也不落人後,好幾個Serverless框架就如雨後春荀般冒出來。而未來到底誰會勝出,現在還很難說,但可以肯定的是,Serverless將會在未來的IT架構占有舉足輕重的位置。
專訪Amazon技術長Werner Vogels
iThome問:AWS在re:Invent 2016發表好幾項與Lambda有關的服務,看起來像是Amazon在打造某種型式的作業系統?
AWS技術長Werner Vogels答:我認為你的看法沒錯。以我們的一位客戶WeTransfer為例,這家公司提供檔案傳輸服務,特別是解決使用者無法隨著電子郵件寄送的大型檔案。如果電子郵件附檔過大而無法寄出,使用者可以將檔案傳送到WeTransfer的雲端中心,讓收件者以安全的方式下載檔案。
WeTransfer還為這些檔案提供了搜尋與壓縮功能,而為了提供這些功能以及預防使用量可能瞬間提高,他們起碼得租用數百臺AWS EC2虛擬機器,而且即便使用者沒有上傳檔案,他們還是得為閒置的EC2主機付費。
如果是用Lambda的話,那麼只要在使用者上傳檔案,以及執行壓縮或搜尋功能時才計算運算費用,這兩者其實有很大的不同,其中包含了對於運算型式的不同思維,以及如何靠技術去實現。
在Lambda的模式下,不論是只有一位使用者在傳輸檔案,或是同時湧進上萬名使用者,WeTransfer都不必為了到底該預備多少臺伺服器而傷透腦筋。
不過,Lambda只是整個Serverless的一部分,整個Serverless服務的好處還有很多,包括你不需要自己運行API、不需要維運API閘道、不需要維運資料庫,也不需處理資料載入或系統高可用性的問題,這些所有服務完全由Amazon負責維運,就連你的程式碼運作,也由Amazon處理。
而且,不論如何我們都可以確保程式執行的可靠度,因為Amazon有很多資料中心,一旦其中一個資料中心發生問題,可以調度至其他資料中心來執行。
Serverless的確可以視為是網際網路的作業系統(Internet OS),把許多服務串連起來一同運作,而Lambda就是連結這些服務的膠水。