如何節省雲端運算費用?為您解析 Google Cloud Spot VM 五大應用與最佳實踐

雲端是建立在具有彈性的基礎設施上,可根據企業對資源的需求進行增減,許多企業早已擁抱雲端並持續關注如何進行成本優化。本篇文章將為您介紹 Google Cloud 經濟實惠的運算資源-Spot VM,適用於執行具有容錯能力的工作負載,如高效能運算、大數據和分析、持續整合/持續推送軟體更新 (CI/CD) 等,讓企業能以極優惠的價格來善用 Google Cloud 空餘的運算資源進行工作。我們統整了五個常見的 Spot VM 使用案例及最佳實踐,幫助企業了解如何善用 Spot VM 來達到成本優化的效益。

延伸閱讀:簡介 Google Compute Engine(GCE)四大面向功能與優勢:機器類型、備份到機器管理

應用一:3D 渲染

繪製 2D、3D 等元素時,往往需要大量的運算資源與時間,用戶可能會透過渲染農場(Render Farm)或稱互聯的運算叢集來幫助其加快產出的速度。而要維運一套渲染農場,你會需要專業的 IT 人員來幫你管理其硬體與軟體。在叢集 100% 全速運轉的情況下,除了維運基礎架構,任務管理更是一大挑戰。

如果今天你的渲染工作具備容錯能力,那使用 Spot VM 做為渲染農場背後的運算資源會是你很好的選擇。Spot VMs 便宜與優惠的價格讓用戶能以更優惠價格的價格使用虛擬機 (Virtual Machine) 並降低其渲染農場的總體持有成本 (Total Cost of Ownership)。除外,透過與 Queuing System 的配合,用戶可以透過 Spot VMs 的搶佔通知(preemption notice) 來追蹤 Spot VMs 被搶佔後受影響的工作,讓任務發派更具備彈性。

而如果你的 Renderer 支援渲染中快照 (Snapshot),即便 Spot VM 被搶佔,用戶還能透過儲存到 Google Cloud 雲儲存空間 Cloud Storage 的快照備份,進一步將工作遺失的比率降到最低。你也可以利用新功能「suspend and resume a VM」來降低未使用 Spot VM 時的花費。

應用二:財務模型(Financial modeling)

資本市場公司投注大筆資金在他們的基礎設施,以打造最頂尖的世界級運算網格。自有運算網格以來,內部研究人員便將其運用於測試交易假設(trading hypotheses)及回溯測試(perform backtesting)等工作。但是,隨著業務增長,且所有研究人員都想試驗他們想法時,就需要相互競爭有限的運算資源,造成測試時間延長。此時,企業便可善用 Spot VM,以 Google Cloud 作為其地端運算網格的延伸,暫時增加運算資源,或是選擇將所有的運算網格都放上 Google Cloud 平台。無論是應付突如其來的研究需求或是成本優化方面,Spot VM 都是企業合適的選擇。

得益於 Spot VM 較低的機器使用成本,研究人員可在有足夠資源的情況下以更低的單次測試成本進行更多交易假設,進而為企業產出更佳的模型。 Google Cloud Spot VM 的優惠價格不僅僅針對虛擬機器本身,還涵蓋其使用的 GPU 加速器,為想要處理更大且更複雜模型的公司提供更強大的處理速度。而一旦這些任務完成後,Spot VM 可以迅速關閉,以更好地控管成本。

應用三:CI/CD 管道(CI/CD pipelines)

對現在的開發人員來說,持續整合 (CI) 與持續部署 (CD)工具是相當普遍的。這些工具讓開發人員可以創建測試 Pipeline,使開發人員及 Quality Engineer 得以確保新創建的程式碼在他們的環境中可以順利運行,且部署的過程中不會毀損其他部分。CI/CD 工具及測試環境非常適合透過 Spot VM 進行,因為 CI/CD Pipeline 的運行對於大部份企業來說不是最急迫的任務,部署或測試晚了15分鐘或甚至數小時,對於營運不會有太大的影響。透過使用 Spot VM,企業可以大幅降低運作 CI/CD 管道的成本。

舉例來說,你可以將 Jenkins Master Server 安裝在代管執行個體群組(Managed Instance Group, MIG)中並且將其使用的虛擬機形式設定為 Spot VM。如此一來當虛擬機被搶佔時,CI/CD Pipeline 會停滯直到新的虛擬機重新被啟動。很多人第一時間會擔心, Jenkins 有本地資源存取的需求,如果機器被搶佔了,資料不就遺失了?針對此問題,Google 提到,用戶可以將 Jenkins 的儲存目錄移動到 Google 的全代管檔案儲存空間  Google Cloud Filestore  來保存資料。如此一來,當新的 Spot VM 虛擬機啟動後,Spot VM 虛擬機便可以重新連線到 Google Cloud Filestore 檔案目錄存取資料。如果你有大型 Jenkins 部署建置作業,那你可以運用 Spot VM 作為運算資源擴充的戰力,並且利用普通的虛擬機作為部署建置作業的管理端。這種混合運用的方式可以盡可能地降低建置時出錯或失敗的風險,並且同時大幅降低用戶擴充資源時的花費(Google 表示,透過 Spot VMs 擴充其成本可以比普通虛擬機便宜至高 91%)

應用四:Web 服務及應用程式

大型線上零售商為大幅增加訂單量,常會瞄準每個月的特定時段如當月最後一天進行促銷,每月舉辦像是黑色星期五或網路星期一等短期促銷活動,也因此,企業通常會為此購置大量的機器來支援短期的高流量需求。然而,如果這些企業使用的是地端資源,一個月中,這些設備閒置的時間長達 29 到 30 天,還要加上冷暖空調及電力等成本,淡季時便會產生機器閒置的問題。

如今,得益於雲端資源部署非常彈性的特性,用戶在雲端上可以自由的在需要時擴增或是縮減所需的計算資源,解決了地端環境資源配置不彈性的難題。而如果想要更近一步達到成本優化,Spot VM 會是企業很好的選擇。Spot VM 在水平擴充的需求情境下表現十分出色。試想以下情境,如果我們在搭配負載平衡器後,我們能夠:

  • 使用一組執行個體群組(Managed Instance Group, MIG)搭配普通虛擬機部署前端網頁,使前端網頁具備自動擴充縮減之能力以對應日常網站流量
  • 使用第二組執行個體群組(Managed Instance Group, MIG)搭配 Spot VM 虛擬機在大型活動開始前(例如午夜 11:45分)進行資源擴增。第一組與第二組的執行個體群組便可以應對約莫8至9成的流量
  • 最後,使用一組執行個體群組(Managed Instance Group, MIG)搭配普通虛擬機部署作為應對突升流量的運算資源,在 Spot VM 虛擬機無法應對流量時作為備援或增援的方案。如此一來,便可以在盡可能保持成本優化的情況下確保服務可以達成所訂定的 SLA 目標

應用五:Kubernetes (K8s)

許多企業使用 Google Kubernetes Engine(GKE)來管理容器化資源,而 Spot VM 也支援與 GKE 整合使用,企業可使用 Spot VM 搭配標準 GKE 叢集,或是使用 Spot Pods 搭配 Autopilot 叢集節省 GKE 的運算花銷。GKE 支援 Spot VM gracefully shut down 功能,讓你在 Standard GKE 上之應用服務即便遇到搶佔之情形也留有時間暫存或停止目前的工作狀態。而在應用服務關閉後,GKE 緊接著會將應用服務根據先前的設定,重新部署到可以部署服務的其他虛擬機上。如果用戶使用的是 GKE Autopiliot,,用戶則可以透過 Kubernetes node Selectors 或 Node affinity 部署 Spot Pods 到 Spot VM 上,讓用戶能在成本及可用性之間取得最佳平衡。

Google Cloud Spot VM 最佳實踐

除了上述的案例使用情境,企業如果有工作負載屬於無狀態、可擴增、可以在 30 秒內儲存工作狀態並中止、或在地點及硬體上具備機動性,就適合評估使用 Spot VM 作為其運算資源。

為了使用戶更順利地使用 Spot VM,以下 Google 提出幾項最佳實踐建議供參考:

  1. 在區域代管執行群組 (Regional Managed Instance Groups, RMIGs) 選用 Spot VM 虛擬機部署 :
  • 因為 RMIG 有可重建 Spot VM的能力,所以 RMIGs 非常適合利用 Spot VM作為運算資源。
  • 使用您的工作量概況評估來決定 RMIG 的目標配置偏度。舉例來說,如果有一個批次的研究工作量,您可以選擇任何目標配置偏度。這可讓 Spot 的執行個體在不同的區域中以不同的方式配置,進而完整利用尚未被完全使用的資源。
  • 透過設定,用戶可調整 RMIG 的 target distribution shape 以更完整的使用 Google Cloud 閒置的 VM 資源。 舉例來說,針對批次性的工作,你可以選用 ANY 模式作為  target distribution shape 的設定,此模式可以幫助 RMIG 更好的尋找各個 Zone 閒置的資源作為您 Spot VM 的虛擬機使用 。
  • 針對有狀態 (Stateful) 應用服務,可以透過並用普通虛擬機與 Spot VM 虛擬機來幫助用戶在提升應用服務可用性的同時降低成本花銷。
  1. 確保您有關機指令
  • 當發生 Spot VM 先占時,用戶可以透過關機指令將應用服務的狀態或是資料儲存到 Cloud Storage 以及撰寫指令將程式 gracefully shutdown。
  • 當用戶欲測試關機指令,可以透過將關機指令設定到任意虛擬機上,並透過手動停機或是刪除虛擬機來觸發關機指令驗證實際執行效果
  1. 將中繼(Checkpoint)資料寫到 Cloud Storage 儲存
  2. 考慮在負載平衡器後使用多個 MIG 。

本文編譯自 Google Cloud Blog

訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。