無伺服器架構 是一種雲端應用模型,其中開發人員可以構建和運行軟體,而無需直接管理底層伺服器。雲端服務提供商仍然運行基礎設施,但大部分的配置、擴展和維護由提供商處理。
無伺服器通常與對事件或 HTTP 請求作出響應的函數相關聯。然而,這個更廣泛的模型還包括受管理的數據庫、儲存、消息傳遞、身份驗證和其他雲端服務。
什麼是無伺服器架構?
在無伺服器架構中,應用程式代碼在由雲端服務提供商管理的基礎設施上運行。開發人員主要專注於應用邏輯、配置、安全性和數據,而不是維護單個伺服器。
無伺服器工作負載通常是事件驅動的。當 API 請求到達、上傳文件、數據庫記錄發生變化,或計劃任務運行時,可能會執行一個函數。
無伺服器架構如何運作
- 用戶、應用或系統生成事件。
- 事件到達受管理的雲端服務或 API 端點。
- 平台調用所需的函數或服務。
- 應用程式執行其任務,並在必要時訪問其他受管理的資源。
- 函數完成,其執行環境可能會被平台重用或移除。
無伺服器與傳統伺服器架構的比較
| 領域 | 無伺服器 | 傳統基於伺服器的模型 |
|---|---|---|
| 基礎設施管理 | 主要由雲端服務提供商處理 | 組織管理更多基礎設施責任 |
| 擴展 | 通常由平台管理 | 通常需要配置擴展機制 |
| 計費 | 通常基於用量 | 通常基於已配置的容量 |
| 部署單位 | 功能和托管服務 | 伺服器、虛擬機、容器或應用程式 |
| 基礎設施控制 | 更抽象化 | 更大的基礎控制權 |
無伺服器的關鍵特徵
受管理的基礎設施
提供者管理大量基礎的計算基礎設施,包括供應和例行維護。
事件驅動執行
功能通常在事件響應中執行。這可以適合API、自動化、排程任務和數據處理。
自動擴展
許多無伺服器平台可以根據需求調整執行容量,受限於提供者的限制和配置。
基於使用的定價
無伺服器服務通常根據調用、執行時間、記憶體、請求、存儲或數據傳輸等因素收費。定價因提供者而異。
常見的無伺服器使用案例
- HTTP API和應用後端
- 事件驅動自動化
- 檔案和影像處理
- 排程任務
- 數據處理管道
- 通知和網絡鉤子
無伺服器架構的好處
- 減少直接的基礎設施管理。
- 可以自動擴展支援的工作負載。
- 對於事件驅動的應用程式效果良好。
- 當托管服務符合用例時,可以加速開發。
- 可以減少為間歇性工作負載供應容量的需求。
挑戰和權衡
無伺服器引入了約束,例如執行限制、併發限制、啟動行為、服務配額和提供者特定的特徵。這些可能會影響應用程式設計。
冷啟動對某些工作負載可能很重要。可觀察性也可能變得更加複雜,因為應用程式可能依賴於許多托管服務和短暫的執行環境。
無伺服器與微服務
無伺服器函數可以是微服務架構的一部分,但這兩個概念並不完全相同。微服務描述應用程式的組織,而無伺服器描述基礎設施和執行模型。
無伺服器安全性
將基礎設施管理轉移給提供者並不會消除應用程式的安全責任。
- 應用最低權限原則。
- 用適當的管理服務保護秘密。
- 驗證外部輸入。
- 根據需要加密敏感數據。
- 監控函數活動和身份驗證事件。
- 保持運行環境和依賴項更新。
無伺服器成本管理
對於間歇性工作負載,無伺服器可能具成本效益,但高流量應用可能產生顯著的使用成本。監控調用、執行時間、存儲、數據傳輸和下游服務使用情況。
如何設計一個無伺服器應用程序
- 識別受益於管理基礎設施或事件驅動執行的工作負載。
- 選擇合適的計算、存儲、數據庫、消息傳遞和身份服務。
- 定義事件流和服務邊界。
- 保持函數專注且可測試。
- 應用最低權限原則。
- 添加日誌、指標、追蹤和警報。
- 在現實流量下測量性能和成本。
- 測試重試、超時、重複事件和部分故障。
專家提示
- 在其操作模型解決實際問題時使用無伺服器。
- 設計事件處理以在必要時容忍重試。
- 共同監控應用性能和雲成本。
- 使用基礎設施作為代碼進行可重複的部署。
- 在生產部署前了解供應商配額。
- 當可攜性重要時,隔離供應商特定的依賴。
常見的無伺服器錯誤
- 假設無伺服器自動成本較低。
- 忽視超時和並發限制。
- 產生過多的服務對服務調用。
- 使用過於寬泛的權限。
- 未設計重試和部分故障。
- 忽視可觀察性。
- 在需要長時間運行或專門基礎設施控制的情況下使用無伺服器。
常見問題
無伺服器架構的簡單解釋是什麼?
它使開發人員可以在提供商管理的基礎設施上運行應用程序工作負載,而無需直接管理底層伺服器。
無伺服器是否意味著沒有伺服器?
不。伺服器仍然運行應用程序;雲提供商代表客戶管理它們。
什麼是無伺服器功能?
這是由已管理的平台在事件、請求、計劃或其他觸發器的響應下執行的應用代碼。
無伺服器是否與微服務相同?
不。微服務是一種應用架構,而無伺服器是一種基礎設施和執行模型。它們可以結合使用。
無伺服器是否比傳統託管便宜?
這取決於工作負載、流量、架構和提供商定價。成本應使用現實的使用情況進行評估。
什麼是冷啟動?
冷啟動發生在平台初始化執行環境以處理請求之前。其影響因平台和工作負載而異。
無伺服器是否安全?
提供商提供基礎設施安全控制,但應用團隊仍然負責代碼、權限、數據、依賴項和配置。
什麼時候應該使用無伺服器架構?
它適合事件驅動、間歇性、API、自動化和管理服務工作負載,在這些情況下,減少基礎設施操作是有價值的。
結論
無伺服器架構 將大部分底層基礎設施管理轉移給雲提供商。它可以簡化操作並自動擴展支持的工作負載,特別是對於事件驅動的應用程序。
然而,無伺服器並不是伺服器或容器的通用替代品。團隊在採用它之前應評估限制、可觀察性、安全性、可攜性、性能和總成本。
想更深入探索現代應用基礎設施嗎? 繼續閱讀我們即將推出的 Kubernetes 指南,了解容器編排如何幫助團隊管理分佈式工作負載。