如果您是才接觸雲計算,您可能會因為遇到大量的首字母縮略詞而躊躇不前。現如今,幾乎所有產品(甚至是運輸)都是作為服務(aaS) 出售的。為了弄清楚一些可用產品,我們來看看其中一些 aaS 首字母縮寫詞,即:基礎架構即服務 (IaaS)、平臺即服務 (PaaS)、容器即服務 (Caas) 和無伺服器(也稱為功能即服務 (FaaS))。
在嘗試確定哪一種產品最適合您時,您可以根據自己的預算來確定。
無限預算
我們來從最昂貴的解決方案開始,然後逐步展開。如果預算沒有限制,那麼您可能不需要這些產品。因為您可以購買自己的樓宇,在裡面配備伺服器機架和網絡設備,再僱人來完成安裝、運行和維護。您可能還需要大量的空調設備。
但這種情況很罕見。即使是預算非常充足的政府機構,也要僱用外部公司來為其運行數據中心。這是為什麼呢?什麼事情都自己做其實是一件相當痛苦的事,這可能就是最初引入雲計算的原因。由此提出了第一個要討論的產品:基礎架構即服務 (IaaS)。
基礎架構即服務
IaaS 與擁有自己數據中心的情況最為類似。您可以控制所需的各種機器數量、用於連接(或分離)機器的網絡以及數據存儲形式。您可以租用實際硬體,也可以獲取具有相同性能的虛擬機。這是最昂貴的產品,但提供了最大的控制權。
因此,在確定哪一個產品最適合您時,成本不再是最主要的考量因素。成本不一定是唯一的限制條件,但可能是一個非常重要的考量因素。您可以根據工作的複雜度來做出更明智的決策。我們還可以根據所需的控制程度來考慮這個問題。
功能即服務
能否將您嘗試要完成的工作分解為幾段代碼?如果可以,那麼功能即服務 (FaaS) 可能是一種理想的選擇。下面以我最近參與過的一個項目為例。為 GitHub 問題添加特定標籤時,我想要創建一個新的存儲庫:
在此示例中,從 GitHub 中生成 Webhook 時將運行一項操作。該操作會檢查其查找的標籤是否已應用,如果已應用,則會對 GitHub 進行 API 調用以創建期望的存儲庫。這作為雲功能非常有用,它是由易於定義的事件觸發的一小段代碼。在此處可以節省一大筆資金。您只需為執行少量代碼所需的時間付費。如果您的代碼每天只執行幾次,那麼時間可能只有幾秒鐘。
平臺即服務
雖然 FaaS 對於拆分小任務非常有用,但如果要部署更大或更複雜的應用程式,那麼它就不是理想之選。平臺即服務 (PaaS) 可能更適合您。利用 IBM Cloud Foundry 等平臺,您可以發布、更新和擴展應用程式,而不必擔心用於運行應用程式的硬體類型。使用 PaaS 產品,您可以獲得更大的控制權,例如,可指定運行應用程式所用的實例數以及允許每個實例耗用的內存量。藉助 PaaS,您的應用程式會一直運行,而 FaaS 則是僅在需要時執行代碼。它使用的資源更多一些,因此價格也高一些。
前端就比較適合使用 PaaS 進行部署。這是 Web 應用程式中面向用戶的部分,它將連接到用戶無法直接訪問的其他後端服務(例如數據存儲)並使用這些服務。
GitHub 上 Cloud Foundry 存儲庫中最受歡迎的樣本應用程式是 spring-music,這是一個 Java 應用程式,允許用戶瀏覽和編輯音樂收藏。這對於 PaaS 中的部署非常有效,因為可以根據需要擴展應用程式,同時可以對數據存儲進行單獨管理(備份、增強彈性)。
在選擇服務產品時,另一個重要的考量因素是您的部署是否需要保存狀態。有狀態的應用程式會跟蹤交互及其進度,而無狀態的應用程式則不會,它們是依靠任何給定請求附帶的信息來保存狀態。當然,更簡單的做法是推送無狀態代碼並利用平臺託管服務來處理請求歷史記錄。如果您期望的部署需要自行保存狀態,那麼可以使用容器。
容器即服務
容器即服務 (CaaS) 介於 PaaS 和 IaaS 產品之間,您可以在 CaaS 中指定有關運行應用程式的環境(例如,作業系統)的更多信息。顧名思義,使用 CaaS 可以部署一個或多個容器,而使用 PaaS只能部署一個應用程式。但它不是一個完整的虛擬機,因為它與其他容器共享一個內核,且具有自己的安全性。CaaS 的主要優點是能夠同時部署多個相互協作的容器。在大型部署中,您可以為應用程式前端、底層資料庫、搜索功能、日誌存儲和處理等提供單獨的容器。所有這些容器可以作為一個組(稱之為集群)進行管理。
下圖展示了容器化應用程式的一個更簡單的示例,即 Guestbook。
在 Kubernetes 文檔中,部署 Guestbook 應用程式是您的第一個練習。它由一個用於存儲 Guestbook 條目的單實例 Redis 主實例、多個用於讀取的複製 Redis 實例以及多個 Web 前端實例組成。如果您既要管理前端又要管理後端,並且要控制這兩者之間的通信方式,那麼 CaaS 產品更符合您的需求。
沒有一種產品是「萬靈丹」
其實,我用直線展示決策過程並不恰當。尤其是上述產品都不互斥。在微服務時代,完全可以將其中部分或全部產品組合在一起,以便最有效地實現所需的部署。甚至可以將容器託管為雲功能。生成的功能並不會一直運行,因此它不會是有狀態的,但存在這種可能性。可能性的數量幾乎與用於部署的首字母縮略詞一樣多。
希望您現在已弄清楚了從何處開始雲之旅!
本文翻譯自:When to use IaaS, FaaS, PaaS, and CaaS(https://developer.ibm.com/depmodels/cloud/articles/when-to-use-iaas-faas-paas-and-caas)(2019-07-01)
------------END-----------