一隻箱子裡的貓,看著電腦螢幕

Schrödinger's Programmer

奔跑吧工程師,趁年輕跑得越遠越好

Serverless 簡介

使用 AWS 服務簡單介紹什麼是 Serverless

Ray

因為公司的服務都是基於 AWS,且大量使用各種無伺服器運算服務
以前完全沒摸過這部分,這系列算筆記整理,內容未來可能會隨時修正

雖然叫做「無伺服器」但是實際上伺服器還是存在,只是交給雲端平台部署與維運
對使用者來說只要撰寫程式碼即可!而不用折騰伺服器調校
後端工程師常常都要兼職管理伺服器,都懂這有多痛苦
而透過 Serverless 的架構
只需要寫好設定檔(並掏出老闆的神奇小卡)就可以把基礎設施管理交給雲端服務商

magic card

常見的雲端服務商都有各自的 Serverless 服務

  • AWS:Lambda
  • Microsoft Azure:Functions
  • Google:Cloud Functions

而 AWS 提供的 Serverless 相關服務大致上分成這些
aws serverless services

Serverless ≠ Lambda Function

這是一個很常見的誤會
除了 Lambda Function 外,Serverless 也包含事件來源及其他資源的組合
如 API、資料庫和事件來源對應,以共同執行任務

而 AWS 提供了 AWS Serverless Application Model(AWS SAM)
是一個用於建置無伺服器應用程式的開源架構

優點

基本上就是把基礎建設外包給雲端服務商幫你解決

  • 高可用性:透過自動擴展和負載平衡增加程式的流量彈性與穩定性
  • 減少伺服器閒置效能:依使用量收費,用多少收多少而不用一直開著主機
  • 降低伺服器建置維護人力成本
  • 安全性:不需要顧慮伺服器整體的安全性

缺點

主要來自沒有主機一直在運轉而衍伸出來的問題

  • debug 會有點麻煩,需要用到 log 處理機制:Cloud Watch
  • 無法處理 Schedule job => Lambda 非 always running
  • 會有啟動時間
  • Request 無法保證運行在同一個 Lambda 上 => 是 stateless 的,必須透過其他服務同步狀態

程式架構

透過 lambda 撰寫不同 function 取代原有虛擬主機的一整包集合式程式碼
可以視為一種 FaaS(Function as a Service)的實作

大致上的流程是

來源事件 -> Lambda 函式 -> 服務

以簡單的代辦事項應用程式來說,若是使用 Serverless 的系統架構圖大概就會長這樣
主要可以關注圖的右邊ToDo App那塊虛線的部分
該部分符合上面提到的來源事件 -> Lambda 函式 -> 服務流程

arch-diagrams serverless.jpg

最新文章

Category

Tag