什麼是無伺服器服務

無伺服器服務是一種雲的架構,將應用程式的部署和管理抽象化,讓開發者可以專心的開發應用程式。

以下圖為例 serverless

  • On Premise(本地部署):
    • 在本地部署模式下,所有的硬體和軟體都由自己和管理。
    • 需要負責硬體的購買、配置、維護和更新,以及軟體的安裝、配置和更新。
    • 本地部署提供了最大的控制權,但也需要更多的資源和成本進行管理和維護。
  • Infrastructure as a service/IaaS(基礎設施即服務)
    • 在IaaS模式下,雲供應商提供虛擬化的計算資源,包括虛擬機器、儲存空間和網路。
    • 使用者可以通過雲端管理控制台或API來管理這些計算資源,包括啟動、停止、調整規模等操作。
    • 使用者負責管理操作系統和應用程式層面的配置和維護,雲端服務提供商負責底層基礎設施的管理。
    • Exampple: AWS EC2
  • Platform as a Service/PaaS(平台即服務)
    • 雲供商不僅提供基礎設施,還提供了開發工具、執行環境和相關服務,使開發者能夠更快地構建、部署和管理應用程式。
    • Example: Elastic Beanstalk
  • Serverless(無伺服器)
    • 在無伺服器模式下,開發者只需上傳程式碼到雲端服務平台,而不需要關心伺服器的配置、管理和維護。
    • 雲端服務平台會根據實際需求來分配計算資源,並且按照使用量來計費,使開發者只需為實際使用的資源付費。

什麼是 AWS Lambda

Lambda 是 AWS 的無服務器服務,基於 Event-driven Architectures,當有一個事件(Event) 進來時,AWS 才會動態的啟動所需的運算服務,並將事先準備好的程式部署到上面去運行。 一個是事件可以是一個來自 API Gateway 的請求,或者是 S3 流出的事件,再者也可以是 CloudWatch Scheduler 排程排好的。

Lambda 的好處

  • 自動擴展 Scalability
    • AWS 會根據當下並行的請求數量,來自己決定 Auto Scaling ,所以在沒有請求的情況下,甚至是可以不需要有任何運算服務
  • 依用量計價
    • AWS 是根據運行的時間(毫秒)來計價,所以如上面的自動擴展來說,在沒有任何運算服務的時候,可以不用付任何錢給 AWS
  • 無須管理伺服器
    • 所有的硬體,操作系統等維護,都交由 AWS 管理。我們只需專注在開發上面就好。而且 AWS 確保 Lambda 的高可用性和容錯性。
  • 快速進入市場
    • 由於 Lambda 讓開發者只需專注於 軟體(Function) 的開發,而且也省掉了硬體的購買時間,所以讓一個服務在短短幾分鐘內,就上到互聯網上供人使用。

Lambda 計價

Lambda 只可以設定 RAM 的大小,而隨著 RAM 的大小,是會影響 CPU 的,而不同 RAM 的大小,收費價格也不同,已下圖東京為例,我們可以看到隨著 RAM 越多,每毫秒的價格也越貴。

lambda pricing

所以 Lambda 的 RAM 開得越高,執行的當然也越快,但這就必非代表越便宜喔!因為計算的價格是不一樣的,我們需要根據每個 Lambda 分析,取得最佳值,不然有可能會白白浪費錢!

已下圖為例

  • RAM 128 MB,雖然每秒比較便宜,但執行時間過久
  • RAM 1024 MB 以後,執行時間的並沒有在明顯的變快,反而讓帳單變更貴而已
  • RAM 512 幾乎是效能 Cost 最低,效能還不錯的 lambda memory power

這邊可以用官方的計算器來初估花費

網上也許有多大神開發的工具可以使用,例如由 Alex Casalboni 開發的 aws-lambda-power-tuning