2022-04-26|閱讀時間 ‧ 約 6 分鐘

Serverless (無伺服器架構) 和 AWS Lambda

什麼是 serverless (無伺服器運算)?

無伺服器運算是一種開發架構,允許開發者在不用管理伺服器的情況下建置部署和執行應用程式。無伺服器運算裡仍然有伺服器,只是伺服器是由雲端服務供應商負責處理配置、維護、拓展伺服器基礎設施的日常工作,開發者可以專注於開發程式碼。

4 個 serverless 的特性
  • 使用者無需配置或管理伺服器
  • 隨使用量增加或縮減資源
  • 按用量付費
  • 具有可用性和容錯率

採用 serverless 的優點
  • 提高敏捷性
  • 減少閒置資源浪費
  • 更專注於焦點
  • 自動拓展
  • 能快速面對市場

AWS Lambda 是什麼?

Lambda 是 AWS 的無伺服器運算服務,Lambda 藉由事件驅動,並按使用量計費,可以讓使用者執行程式碼,無須部署和管理伺服器。

AWS Lambda 的功能
  • 自訂邏輯拓展其他 AWS 服務
  • 自動擴展服務資源
  • 開發者可以使用自己的程式碼
  • 自動化管理所有基礎設施
  • 高可用性與容錯能力
  • 將函數封裝和部署為容器映像
  • 有效提高效能控管
  • 整合式安全模型

AWS Lambda 的應用方式
Event source (來源事件) → Lambda function (函式) → Services (服務)
  • Event source:例如資料更動、資源更動、端點請求等。
  • Lambda function:AWS Lambda 原生支援 Java、Go、PowerShell、Node.js、C#、Python 和 Ruby 程式碼,並提供 Runtime API,讓使用者可以使用任何其他程式設計語言編寫功能。
  • Services:可以結合其他 AWS 服務做後續處理

哪些來源事件可以觸發 AWS Lambda?
Lambda 函數和觸發程式 (trigger) 是使用 AWS Lambda 時的核心元件,Lambda 函數是處理事件的程式碼,而觸發程式是呼叫 Lambda 函數使其執行的事件,通常為 AWS 服務或應用程式。
AWS Lambda 常見的事件來源有 Amazon S3、DynamoDB、網站 HTTP 請求、APP 等,AWS Lambda 還有支援更多 AWS 服務當作事件來源,如果需要詳細資訊,可以至 AWS 官方文件查詢。

AWS Lambda 的使用案例

  • 從 Amazon S3 推送事件 (PUT、POST、COPY 或 DELETE 等) 並叫用 Lambda 函數
  • 從 Amazon Kinesis 串流或 Amazon SQS 佇列中提取記錄,然後為每個擷取的訊息執行 Lambda 函數
  • 使用 Lambda 函數訂閱另一個 AWS 帳戶中的 Amazon SNS 主題,並授予許可以允許這兩個資源可彼此存取
  • 設定 Amazon Lex 機器人時,指定 Lambda 函數執行驗證回應,或是叫用 Lambda 函數以履行使用者請求
  • 以 AWS Lambda 建立應用程式的後端

在 AWS 上採用 serverless 架構

Lambda 是 AWS 的無伺服器運算服務,除了 Lambda 外 AWS 也針對整合和資料儲存提供無伺服器服務。
如果想要在 AWS 上採用 serverless 架構,可以在 AWS 官方提供、開源架構或是第三方 Web 架構中選擇,以下是熱門的 serverless 架構。對於想要了解 serverless 的初學者來說,這些架構也是非常好的參考資料。
  • AWS Serverless Application Model (AWS SAM) 是一個開源架構,用於建置無伺服器應用程式
  • Serverless Framework 是由開源 CLI 和託管儀表板組成,提供完整的無伺服器應用程式生命週期管理
  • Chalice 是一個用 Python 編寫無伺服器應用程式架構
  • Architect 是用來在 AWS 上建置功能性網頁應用程式的簡易架構
  • Claudia.js 可以輕鬆將 Node.js 專案部署至 AWS Lambda 和 API Gateway

案例分享:Coca-Cola Freestyle

COVID-19 疫情期間大家會避免肢體接觸或共用物品以防止被病毒傳染,疫情持續改變著消費者的行為。可口可樂公司在 2020 年為此研發出全新的倒飲料方式:透過手機選擇、送出,就可以在 Coca-Cola Freestyle 供應機取得飲料。
Freestyle 專案從初始想法構思到完成,只花費不到 4 個月的時間,在 150 天內,Freestyle 團隊便將應用程式從原型拓展到 10,000 個機器。
根據 AWS 官網的介紹,Freestyle 團隊之所以能在這麼快速的時間內,測試、大規模推出新機器並且預期能正常運作,有很大一部份功能是靠著其背後採用的 AWS serverless 架構。
例如為了提供消費者即時的服務體驗, Freestyle 團隊在 AWS Lambda 建立後端及 Amazon API Gateway,因此應用程式能快速取的所以機器的所有成分庫存,在消費者以手機連線時,他們就能馬上知道 Freestyle 供應機可供應什麼飲料。

延伸閱讀

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.