什麼是無伺服器服務
無伺服器服務是一種雲的架構,將應用程式的部署和管理抽象化,讓開發者可以專心的開發應用程式。
以下圖為例
- 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 的 RAM 開得越高,執行的當然也越快,但這就必非代表越便宜喔!因為計算的價格是不一樣的,我們需要根據每個 Lambda 分析,取得最佳值,不然有可能會白白浪費錢!
已下圖為例
- RAM 128 MB,雖然每秒比較便宜,但執行時間過久
- RAM 1024 MB 以後,執行時間的並沒有在明顯的變快,反而讓帳單變更貴而已
- RAM 512 幾乎是效能 Cost 最低,效能還不錯的
這邊可以用官方的計算器來初估花費
網上也許有多大神開發的工具可以使用,例如由 Alex Casalboni 開發的 aws-lambda-power-tuning
評論