當大多數人談論無伺服器架構時,首先想到的是基于雲的服務,例如Lambda。在雲端,無伺服器允許你使用經濟高效的支付模式按需運作幾乎無限數量的功能。
但是,并非所有無伺服器架構都在雲中。有一些可以在内部部署,例如OpenWhisk和Fission.io所提供的。
為什麼要内部部署無伺服器?在這麼做時,你需要考慮哪些注意事項?
- 内部部署的和基于雲的無伺服器的差別
借助基于雲的無伺服器架構,應用程式代碼可部署到雲提供商那裡,如AWS Lambda或Microsoft Azure Functions。特定的事件,從HTTP請求到GitHub(取決于雲提供商支援的内容),觸發代碼。通過這種方式,基于雲的無伺服器架構非常有用,因為它可以通過“按使用付費”功能降低成本。
然而,對于内部部署的無伺服器架構,無伺服器功能托管在本地基礎設施上,而不是作為雲中的托管服務運作。應用程式代碼部署到本地伺服器,并被觸發運作指定的事件。
對于不同的公司,内部部署無伺服器可以以不同的形式提供。Platform9等雲管了解決方案允許使用者在托管雲之上部署托管無伺服器平台。Platform9提供了多租戶雲服務架構,無需運作工作負載,允許使用者在内部運作其工作負載。OpenWhisk等開源選擇也可以在内部部署。
- 為什麼選擇内部部署?
雖然不需要管理實體伺服器并且具有幾乎無限的可擴充性是基于雲的無伺服器架構的主要吸引力,但是内部部署無伺服器架構也有着一些顯著的好處。
——避免雲供應商鎖定:使用基于雲的無伺服器,你的應用程式完全依賴于第三方供應商,這意味着你依靠該供應商的持續可用性,并要考慮它們的成本(可能會有所變化) 。變更供應商幾乎肯定會導緻你的應用程式發生重大變化。而通過内部實施,工作負載在本地運作,供應商鎖定帶來的風險會降低。
——安全性:對于處理非常敏感資料的公司,基于雲的解決方案可能不是最佳的。大多數服務提供商都是多租戶,這意味着它們在同一實體伺服器上為不同的客戶運作軟體。即使工作負載通過虛拟工作負載或容器隔離,鄰近應用程式中的任何安全漏洞或故障都可能會對應用程式代碼的可用性和一般性能産生負面影響。在本地内部部署的伺服器上運作工作負載可降低這些風險并確定資料安全。
——效率和間接成本:從長遠來看,在專用本地伺服器上運作工作負載可能比在基于雲的無伺服器架構上執行長任務要便宜得多。此外,在間歇性運作應用程式代碼的情況下,内部部署無伺服器可降低基礎設施的使用率不足(因為僅在少數伺服器上運作多個應用程式更有效)。
- 結論