在 2014 年, AWS 首推 Lambda 無伺服器運算 (Serverless) 服務,標榜一旦運用此項技術,開發過程便無需管理底層伺服器資源,當時即引起各方為之震撼;迄至今日,環顧各項原生雲端相關議題, Serverless 已稱得上新顯學之一。
銓鍇國際主任雲端架構師李明政說,回顧過去 20 年來的運算架構革命歷程,始於虛擬化技術,幫助企業整併許多 x86 伺服器,造成資料中心的伺服器走向軟體化(虛擬機器);在虛擬化崛起的 5 年後,吹起雲端運算的風潮, AWS 開始提供 IaaS 服務,讓企業在雲端上運行虛擬機器; 2013 年 Docker容器 (Container) 技術問世,為一種作業系統層級的虛擬化技術,每個容器不需附帶 OS ,較虛擬機器更精簡,啟動速度也由以往分鐘等級急遽縮減至秒級,因而獲得愈來愈人青睞。
但即便有了容器,仍存在著軟體伺服器的部署與維運需求,意即使用者必須執行相關的部署、調度、管理與資安等作業。對開發者來說,若能夠完全不會任何伺服器管理事宜,才是最完美的,遂使得 Serverless 概念興起,觸發一場新革命。
李明政指出,現今多數系統依然是以「單體式架構」進行開發,即是把所有功能打包運行在同一進程,固然此舉易於開發、部署、測試與水平擴展,但也不乏缺點,包括功能及程式碼愈多,維護成本高且交付週期;模組資源衝突時,擴展很困難;技術模式的可變性低;耦合性太高導致可靠性低等等。隨著企業業務的複雜度增加,單憑此類架構,已經無法完成敏捷性開發需求。
在此情況下,使得「微服務」思維逐漸興起,它不再如同過去開發一個巨大的單體式應用,而將應用分解為小的、互相連線(透過 REST API 溝通)的微服務,不僅讓應用的部署更加容易,且模組可重複利用,有助加快應用開發進程。
只不過,使用微服務開發架構,仍需仰賴許多工具的協助,譬如 Web 伺服器、資料庫、 Web 服務/應用程式架構、部署模式、 CI/CD、容器,乃至所有類似的工具…等等,依然有其進入門檻。為此 AWS 基於微服務提供各式服務,例如容器雲端服務 (Container as a Service) 便是其中之一,但這些工具與創新技術仍需依賴「伺服器」。
按理說,雲端計算本應猶如水電插座,需求者僅需插上就可用,不必自己蓋電廠,更無需理會電力是怎麼提供的;直到 Serverless 的出現,才讓你我距離「運算資源如水電」的願景更加接近。
李明政解釋, Serverless 具有三大主要特色,分別是「全託管」:不需佈建、完全不需管理且具高可用性;「開發人員生產力」:可專注在重要的商業邏輯程式碼,同時拜高重複使用性所賜,得以縮短上市時間、快速創新;「持續擴展」:自動化依使用狀況擴展或縮減規模。現今 AWS 已提供眾多無需佈建、無需安裝、隨時 Ready 、雲端上確保高可用性的無伺服器選項,其中無伺服器、事件驅動的運算服務 AWS Lambda ,便是頗具代表性的項目之一。
換言之, AWS Lambda 使用者在執行程式時,完全無需再思考伺服器,繼而自選諸如 Alexa、S3 … 等等事件來源,執行事件驅動,最終僅需按「處理的請求數」及執行程式所需「運算時間」付費。談及 Lambda 的使用效益,除了如前述不用伺服器、不用管理、自動化、持續擴展、即用即付費、不再需要為閒置設施付錢外,更重要的一點則來自 「Lambda@Edge」 ,它能讓 Lambda 執行環境更靠近資料端,大幅提升反應速度,加上 AWS 已在台灣設有網路節點,便於企業就近執行 Lambda 函數,對多數企業而言確實甚具誘因。
李明政補充, Lambda 並非只能靠事件驅動,也可搭配 API Gateway ,在符合 SOA 開發架構下、用最簡單的方式建構 Serverless 。至於 Lambda 的最佳實務,則以符合「使用量在每個月 1 千萬次以下」(可節省將近 99% 成本)、「非複雜的運算」、「限制 Function 的規模」(例如需費時啟動 JVM 的 Java 應用便不適合)等條件的應用情境為宜,並不是所有應用都適合在 Serverless 環境開發。
From: March 9, 2018 CIO價值學院第一堂課:企業雲端原生架構