什麼是無伺服器運算

把伺服器的準備、數量管理、作業系統更新等交給雲端業者,使用者不必意識這些就能執行應用程式的形態。代表是 FaaS(Function as a Service),只在要求或事件到來時執行函式,依執行次數、時間與記憶體量計費。依負載的增減自動進行,不使用時幾乎不產生費用。另一方面,有一段時間未使用後第一次呼叫變慢的冷啟動,以及執行時間上限等限制。

日文名稱: サーバーレス

「無伺服器運算」出現在1領域的1道練習題中(雲端與容器基礎等)。

這個名詞所屬的領域: 雲端與容器基礎

其實還是有伺服器

「無伺服器」不是沒有伺服器,而是使用者不必管理伺服器的意思。業者依要求準備容器或輕量虛擬機器等執行環境來執行函式。常與託管的資料庫、儲存空間、訊息佇列等組合,構成整個應用程式。

冷啟動

一段時間沒被呼叫,執行環境就會被收掉,下次呼叫時需要準備環境、啟動語言的執行環境並初始化函式。這段延遲就是冷啟動,依使用的語言與函式庫的量,可能從數百毫秒到數秒。可藉由減輕初始化、使用預先準備一定數量環境的設定等來抑制。

適合的處理

適合像轉換上傳的圖片、定期彙總、接收 Webhook 這類依事件在短時間內結束的處理,以及負載波動大、閒置時間長的處理。對於持續承受高負載的處理,一直運作的伺服器或容器有時反而便宜。函式內不保留狀態,狀態放在資料庫等處。

練習無伺服器運算的題目

在無伺服器函式(FaaS)中,有時只有一段時間沒被呼叫的函式的第一次呼叫,回應會慢數百毫秒到數秒。關於這個現象的說明,下列何者正確?

  1. A第一次呼叫的結果會被快取,第2次以後不執行函式的程式碼,只回傳儲存的結果
  2. B需要時間重新準備執行函式的環境,並啟動語言的執行環境、進行初始化處理(冷啟動)
  3. C第一次呼叫時,函式的程式碼會被送到使用者的裝置,在裝置上編譯後才執行
查看答案與解析

正確答案:B. 需要時間重新準備執行函式的環境,並啟動語言的執行環境、進行初始化處理(冷啟動)

在無伺服器函式中,業者依需要準備執行環境(容器或輕量虛擬機器等),一段時間未使用就會收掉。收掉之後的第一次呼叫,需要準備環境、啟動語言的執行環境並進行函式的初始化處理,回應就慢了這麼多。連續呼叫時會重複使用已準備好的環境,因此較快(暖啟動)。對策包括減輕初始化處理與載入的函式庫、使用預先準備一定數量環境的設定等。

常見問題

無伺服器與容器是對立的嗎?

不是對立的。許多無伺服器平台內部使用容器或輕量虛擬機器,也有能把容器映像檔直接當作函式執行的服務。差別在於由誰管理數量與執行環境。

改用無伺服器一定比較便宜嗎?

不一定。因為用多少付多少,用量少且波動大的處理會比較便宜,但持續有一定以上負載的處理,一直運作的伺服器有時更便宜。比較時也必須把資料傳輸費等納入。

解析中的「無伺服器運算」

出現「無伺服器運算」的題目(1題)

  1. 在無伺服器函式(FaaS)中,有時只有一段時間沒被呼叫的函式的第一次呼叫,回應會慢數百毫秒到數秒。關於這個現象的說明,下列何者正確?

相關名詞

不可變基礎設施 可用區域 可觀測性 共同責任模型 自動擴展 物件儲存 金絲雀部署 容器技術 容器映像檔 基礎設施即程式碼(IaC)

前往名詞解釋列表