承接 Day 25,我們介紹了 Event-driven Lambda,看見 Serverless 架構如何幫助我們快速響應事件。
如果一個多人協作平台突然爆紅呢?例如:
系統需要「動態伸縮」的能力,否則延遲過高或直接崩潰。今天我們深入探討 Serverless 背後的 Lambda Scaling 機制,從概念出發逐步解釋,讓初學者也能跟上(假設你只知道 Lambda 是 Serverless、無狀態的 FaaS 服務)。然後,補充其他類型 Instance(如容器或虛擬機器)的 Scaling 方式,形成完整的伸縮策略。
Lambda 是 Serverless 的 FaaS(Function as a Service),無需管理伺服器,自動運行程式碼。當多個請求同時進來時,Lambda 需處理「併發」(Concurrency),也就是同時執行多個 Lambda 實例(instances)。
Lambda 就像咖啡店的咖啡機。只有一臺機器時,客人多就得排隊。Lambda 會自動複製多臺機器處理訂單,這就是「併發擴展」。在雲端實務上來看,比方今天在多人協作平台,有 50 人同時建立事件,可能瞬間觸發 200 個 Lambda 請求。處理不好,系統會變慢或失敗。 於是為了解決這個問題 Concurrency 的拓展機制就出現了。
Lambda 實例非永遠運行;無請求時,它會「睡覺」(idle)。第一次喚醒需「熱身」(初始化環境、載入程式碼),這叫冷啟動。
AWS 為每個帳戶設定併發上限(預設 1000 也就是最高只會幫你拓展出 1000 個Lambda),超過則「節流」(Throttling),拒絕額外請求。
假設 Concurrency Limit 為 8 則 Lambda 能擴展出的容器 Lambda Function <= 8
Lambda 的 Scaling 是 Serverless 核心優勢,大部分自動,AWS 處理背後細節,讓你專注程式碼而非基礎設施。我們從概念層級解釋,強調自動化而非使用者主動優化。
透過這些層級,Lambda Scaling 自動新增容器實體,處理併發,讓 Serverless 真正「無伺服器」。
若是你所設計的系統功能較複雜,那麼很有可能即使有擴展機制 Lambda 無法滿足你的需求。
Lambda 只適合短任務 (因為 Lambda 實例無法執行超過 15 分鐘),長任務則必須交給其他 Instance(如容器或虛擬機器)。在這種情境下 AWS Auto Scaling 提供伸縮擴展 (Elastic Scaling) 方案。
Auto Scaling 啟動多台 ECS/EC2,使用者如何知道請求該送哪一台?若無流量分配,可能「有人超載,有人閒置」。
ALB 是 Scaling 的關鍵夥伴,處理多 Instance 的流量分發。
除了 Lambda 的自動容器 Scaling 和其他 Instance 的 Auto Scaling/ALB,AWS 在不同層級提供機制,全面提升彈性:
今天介紹了 Lambda 以及其他常用執行實體的 Scaling Solutions 雖然由於篇幅有限僅止於概念而未深入實作部分,但希望透過今天的文章大家能對不同運算實體的 Scaling 有更清晰的想像,在介紹完監控以及拓展 Solutions 後,我們接下來將會介紹 AWS 上的成本管理工具,讓你在拓展來拓展去的時候不會帳單噴飛!