網頁

2020/6/8

AWS Elastic BeansTalk 與 AWS Lambda 差別

AWS Elastic BeansTalkAWS Lambda的差別。

在AWS部署Web應用程式時,AWS上除了常見的EC2外,還有Elastic BeansTalk與Lambda兩種服務,兩者都能讓開發者只要上傳程式碼,其餘的基礎建設如建置部署,自動擴展,負載平衡等都由AWS處理,讓開發者能專注在業務程式碼的開發上,而不用花太多時間去管理基礎設施配置,但仍有以下差別。

AWS Elastic BeansTalk是「平台即服務(Platform as a Service, PaaS)」,其實是EC2的再包裝,並由AWS處理建置部署、自動擴展、附載平衡、防火牆等工作。開發者雖然也是上傳程式碼(Web應用程式)即可,不過開發者仍要決定使用哪種語言平台,實例大小,資料型等。計價仍是以使用的EC2實例運行時間來計算。

AWS Lambda是「功能即服務(Function as a Service, FaaS)」,是“無伺服器(serverless)”服務(不是沒有伺服器,而是指開發者無需管理伺服器),開發者只需上傳程式碼(一般的程式碼,函式),而不用選擇使用什麼平台及伺服器。計價是以函式的請求數及程式執行時間計算。



昨天自己玩了一下依照官網的範例想把Spring Boot應用程式打包好的uber jar部署到AWS Lambda,試了老半天加了AWS API Gateway來trigger裡面的RequestStreamHandler.handleRequest()都沒成功,後來才發現AWS Lambda不適合用來部署Web應用服務程式,而是拿來部署一個簡單的函式(Function),難怪稱為Function as a Service。而且Node.js和Python等直譯語言可以直接在AWS Lambda修改並部署,相較Java還要打包丟上去才能用來得方便許多。

所以一個CRUD的API功能設計上就會有四個AWS Lambda函式,然後透過一個配置文件來管理API名稱和參數之類的。


沒有留言:

張貼留言