簡介
無伺服器運算提供了一種使用雲端服務設計和部署應用程式的新方法。但它究竟是什麼?又是如何運作的呢?
在本文中,我們將探討什麼是無伺服器、它的運作方式,以及它如何影響開發體驗。我們將涵蓋它提供的一些優勢,並討論一些可能不適用的情境。這應該能為您提供所需的背景知識,以便進行額外研究,並確定無伺服器模型是否適合您的專案。
查看 Prisma Data Platform,在單一位置管理您的所有應用程式資料。
無伺服器是什麼意思?
無伺服器描述了一種模型,其中處理潛力是通過 API 而不是實際伺服器公開的。應用程式可以使用計算資源來執行程式碼,而無需管理將執行程式碼的環境。
在許多方面,無伺服器代表雲端供應商為使用者抽象資源的下一個邏輯迭代。供應商不是提供虛擬化伺服器來存取資源,而是使用隨用隨付模式提供對資源本身的存取。從不同的角度來看,無伺服器是一種託管服務(例如,類似於託管資料庫實例),用於更通用的計算邏輯。
無伺服器運算
大多數時候,當人們使用「無伺服器」這個詞時,他們指的是無伺服器運算。無伺服器運算是一種範例,使用者可以建立函數或計算邏輯,這些函數或計算邏輯將在 API 被調用時由供應商執行。因此,無伺服器運算供應商通常被稱為函式即服務 (Functions as a Service, FaaS) 平台。
當使用無伺服器運算進行開發時,您需要預先定義您希望供應商運行的邏輯。您的應用程式可以設計為使用盡可能多的離散函數。然後,當應用程式通過公開的端點調用不同的程式碼時,這些函數會按需執行。您的函數產生的任何輸出或資料都會返回給調用者或卸載到外部儲存空間,因為函數本身不維護狀態。
作為開發人員,在使用無伺服器時,您無需擔心維護用於執行程式碼的環境。此外,此模型在處理不同流量時提供了彈性,而無需管理擴展。您支付的成本與您使用的計算能力直接相關,因此您無需預先估計和分配資源。
無伺服器資料庫
無伺服器資料庫將無伺服器範例應用於資料庫功能。實際上,這意味著後端伺服器資源、擴展、資料管理都從使用者端抽象出來。使用者可以使用資料庫作為 API 驅動的服務,從而無需規劃容量來處理不同的情境。
一般來說,無伺服器資料庫是使用分層架構實作的。使用者能夠與 API 或代理閘道互動,該閘道自動處理到後端資源的路由。在閘道後面,執行工作者池處理他們收到的任何查詢的請求。實際資料維護在第三層中,任何執行工作者都可以存取和操作該層。
使用此模型,計算和儲存資源都可以根據需求在後台獨立擴展。使用者不控制擴展。相反,他們需要為執行的查詢和儲存的資料量付費。
權衡利弊
既然我們已經討論了什麼是無伺服器以及它通常如何從使用者的角度運作,我們就可以開始確定無伺服器解決方案在哪些方面很適合。
無伺服器技術並非適用於所有情況的解決方案。雖然這些新範例可以簡化開發、部署和管理生命週期的一部分,但它們最適用於某些類型的工作負載和應用程式設計。讓我們來看看應用程式和組織的一些特徵,這些特徵可能表明無伺服器是否適合。
何時無伺服器是個好選擇?
在許多情境下,無伺服器環境可能是一個不錯的選擇。
如果您的系統管理經驗有限
如果您的團隊沒有豐富的系統管理經驗,無伺服器提供了一種卸載該責任的方法。用於運行您的應用程式程式碼的基礎架構由 平台供應商維護,讓您可以專注於您的業務邏輯。從您的責任列表中消除基礎架構管理可以幫助您更快地開始並在專案成熟時保持速度。
如果您需要出色的擴展性
開發人員轉向無伺服器平台的主要動機之一與前一點密切相關。無伺服器架構通過從您的關注領域中移除擴展,使擴展變得簡單。雖然您的應用程式今天可能只需要少量操作,但隨著您獲得採用或出現使用高峰,它可能需要更多操作。
無伺服器平台可以自動適應這些情境。這表示您的基礎架構永遠不會過度或不足配置,因為資源分配會自動反映您的使用模式。您無需弄清楚您的峰值或平均負載,也無需測試和配置擴展策略,因為您的供應商已經設計了為您完成這些工作的解決方案。
如果您對成本敏感
如前所述,如果成本是一個主要考量因素,無伺服器平台也相當有吸引力。使用無伺服器,您只需為您執行的操作付費。您無需為閒置伺服器付費,而這些伺服器只是為了以防萬一可能需要而準備的。這在整個開發生命週期中都很有幫助。您的開發和測試系統可以使用與您的生產系統相同的平台,這有助於您更準確地進行測試,而無需承擔與維護專用環境相關的成本。
何時避免使用無伺服器
無伺服器模型有很多優點,但並非適用於所有情況。
如果您的應用程式對效能敏感
如果您的應用程式對延遲或效能敏感,無伺服器架構可能無法滿足您的需求。雖然無伺服器平台可以根據您的使用情況進行擴展,但在識別出使用量增加並配置系統以處理新需求之前,會出現明顯的延遲。
這通常被稱為「冷啟動」問題,並且它在任何使用量發生顯著變化時都會影響系統。這種增加的啟動時間排除了無伺服器在許多需要一致響應時間的用例中的應用,而無論之前的活動水平如何。
如果您不習慣基於雲端或特定供應商的解決方案
如果您不習慣或無法使用基於雲端或特定供應商的解決方案,您也可能會選擇避免使用無伺服器平台。如果基於雲端基礎架構因合規性、隱私問題或簡單的偏好而不可行,則使用無伺服器平台將不是一個選擇。
無伺服器平台也代表了供應商鎖定的情況,因為您的應用程式變得與供應商的實作綁定。雖然將您的應用程式邏輯分解為離散函數集合似乎可以使您的工作負載具有可移植性,但每個服務的工作方式的細節很可能會阻止您在沒有大量遷移投資的情況下更換供應商。
如果您已經有管理基礎架構的經驗
最後,如果您的團隊已經傾向於管理基礎架構並使用傳統部署提供的環境,那麼無伺服器可能不會為您提供很多優勢。例如,如果您已經有一個強大的 DevOps 團隊在管理基礎架構和服務,那麼無伺服器提供的優勢可能就沒有那麼吸引人了。
此外,您的開發人員可能對他們如何在無伺服器環境中測試和調試應用程式程式碼抱有期望,這些期望可能無法實現或難以實現。以開發人員使用傳統基礎架構的方式分析部署到無伺服器平台的函數可能是不可能的。
在為您的專案評估無伺服器時,務必考慮所有這些權衡。對於某些情況來說,這是一個很好的解決方案,但重要的是要弄清楚您的用例是否屬於其中之一。
總結
在本文中,我們重點解釋了「無伺服器」的實際含義,以及為什麼它對於許多專案來說可能是一個有吸引力的選擇。我們討論了函式即服務模型如何將應用程式伺服器管理卸載到平台供應商,以及無伺服器資料庫產品如何能夠將資料庫操作與資料儲存分離。之後,我們查看了哪些情境最適合無伺服器設計,以及何時可能不是正確的解決方案。
關於無伺服器應用程式、資料庫、供應商和設計,還有很多東西需要學習。當您繼續學習時,以下資源可能會有所幫助
- 頂級 13 家無伺服器運算和資料庫供應商
- 常見無伺服器挑戰簡介
- 傳統資料庫 vs 無伺服器資料庫
- 無伺服器詞彙表
- Martin Fowler 關於無伺服器架構的頁面(Mike Roberts 撰寫)
- Cloud Academy 的「什麼是無伺服器運算」
查看 Prisma Data Platform,在單一位置管理您的所有應用程式資料。
常見問題
無伺服器架構是一種構建和運行應用程式和服務的方式,無需管理基礎架構。
您的應用程式仍然在伺服器上運行,但所有伺服器管理都由供應商完成。
無伺服器應用程式是使用無伺服器架構構建的應用程式。
您的應用程式不需要您佈建或管理任何伺服器。
因為無伺服器本質上將基礎架構的控制權讓渡給供應商,因此他們提供金鑰管理、身份驗證和授權等安全服務。
無伺服器安全性需要改變您看待應用程式安全性的思維方式,因為安全性不是圍繞應用程式本身構建的。供應商處理圍繞應用程式功能的安全性。
無伺服器後端是無伺服器範例在資料庫功能上的應用。
實際上,這意味著後端伺服器資源、擴展、資料管理都從使用者端抽象出來。使用者可以使用資料庫作為 API 驅動的服務,從而無需規劃容量。
無伺服器運算是一種範例,使用者可以建立函數或計算邏輯,這些函數或計算邏輯將在 API 被調用時由供應商執行。
因此,無伺服器運算供應商通常被稱為函式即服務 (FaaS) 平台。