2010年5月21日

為何虛擬化技術是雲端運算的計量(&計費)基礎

五月初上了一堂跟雲端運算有關的課,重點是虛擬化技術在雲端運算中扮演的重要角色。這次的講師是胡嘉璽老師(參考資料-12),不像一般常見的討論著重在如何將 Cloud ComputingUtility ComputingGrid Computing 區分開來(例如 Wikipedia 上的 Comparisons,或者研究所考試的題目),胡老師將 Cloud Computing 視為電腦運算發展最終的目標,而 Grid Computing 和 Utility Computing 則是技術演化過程中出現的重大里程碑,兩者都可視為是 Cloud Computing 的基礎。這些重要技術的演進可以下圖來看:
1
其中 Utility Computing 作為 Cloud Computing 中的計量 (以及計費)基礎,就跟水電瓦斯一樣,用了多少運算能力就付多少錢 (pay-as-you-go)。而 Grid Computing 則是作為 Cloud Computing 中的計算基礎,用以組織數量龐大的電腦來執行平行運算,以提昇運算效能 & 容錯能力。
接下來再這次聽到的「如何用一句話定義雲端運算」:
雲端運算就是將已量化的許多運算資源,以網路為媒介,透過特定的介面提供給需要服務的使用者。
其中幾個重點包括:
  • 已量化:方便計算使用量 –> 方便計費 –> Utility Computing 的觀念
  • 許多:認定硬體的不穩定性(終究會壞),因此要以 redundant 的方式提供運算資源 –> Grid Computing 的觀念
  • 運算資源:包括 CPU、RAM、Storage、Bandwidth 等
從另一個角度來看,雲端運算所做的事情就是:
將運算資源打散,找出最小的計量單位,之後將其全部集中起來,並重新分配的過程。
廠商提供服務就是為了賺錢,要賺錢就得知道要收多少錢。為了要計費,就必需要先計算使用量,因此必須先「量化」。要計算使用量,就必需要定義出「最小計量單位」,就和水電瓦斯會定義甚麼叫做「一度」,一定要先定義出消耗多少電能稱為一度,才能定義一度電要收多少錢(and for 廠商的成本估算),最後紀錄每個月每戶的使用量(用電度數),就能以此為依據跟用戶收錢了。
因此在衡量電腦運算資源時,要如何定義出一個最小的計量單位,就是一個重要的課題。「最小計量單位」跟上一篇文章中提到的強大擴充性有關:
我覺得使用者能夠 on-demand 的、基本上無上限的(只要付的出錢來)、在短時間內(數十秒到幾分鐘)擴充所需的運算資源,是雲端運算最重要的特性,因為這是以往的架構所做不到的。
在上述這些運算資源中(CPU/RAM/Storage/Bandwidth),通常會將 Storage 隔離出來(以 NAS 實作),因為 Disk Space 的劃分是很容易的,可以動態根據使用者的需求來切割。而剩下的 CPU/RAM/Bandwidth 則可以用一個完整的作業系統來包裝,包裝起來之後成為一個「最小計量單位」,當需要擴充系統的運算能力時,便可以一個作業系統為單位,看要增加幾個作業系統來提供服務,而後依照用戶使用的作業系統數量 & 時間來收費。
基本概念是如此,但是如果作業系統必須被安裝在實體機器上,那麼要擴充運算能力時就必須新增實體機器,這往往要耗費大量的時間和人力,對於應付短時間內暴增的運算需求是緩不濟急的(e.g., 美國的 Black Friday),例如紐約時報的 PDF 轉檔案例 (中文資料),在 24 小時內開啟 100 個 EC2 VM 的 instance 將 4TB 的原始資料轉換為 1.5TB 的 PDF 檔,為求結果正確,整個運算還執行了兩次!如果要買進 100 台實體機器來執行這個運算任務,光是把這 100 台實體機器組裝、上架 & config 好,可能就要耗去一週了 (就算是湊出 100 台舊機器也是很浩大的工程)。更重要的是,這種一次性的運算執行完畢以後,最頭痛的就是後續這些機器要怎麼運用,而紐約時報只要關閉那 100 個 VM 的 instance,就不用再持續付出任何成本了。
為了解決實體機器造成的龐大成本問題(金錢 & 時間),虛擬化技術扮演非常重要的角色,除了把 CPU/RAM/Bandwidth 包裝成作業系統以外,進一步包裝成虛擬機器 (VM) 後,配合最近幾年幾個虛擬化技術的成熟,終於讓「在極短時間內大幅擴充運算能力」的願景得以實現。
虛擬化技術發展已經很久了,最早從 1960 年代開始,最近幾年的重要技術包括:
  • VM templates and clone:可將 VM 製作成範本,而後以此範本為基礎大量產生新的 VM (現在從 Amazon EC2 開啟一個 VM 就是這樣的效果)(參考)
  • VMware vMotion/Hyper-V Live Migration:在 VM 不停機的狀況下,將 VM 從一台實體 server 移轉到另一台實體 server 上執行,在此期間該 VM 所提供的服務不中斷 (MS Hyper-V demo)
透過這些技術讓使用者得以在短時間內新增 VM instances 以提供服務,並且更容易針對硬體規格 & 使用量去訂價,例如 Amazon EC2
4
至於每種 Instance 的規格是甚麼,就要看 EC2 Instance Types 的說明:
5
使用者(除了 IaaS 廠商之外)只要選擇合適的硬體規格,再跟據需求啟用適當數量的 VM Instance 之後,就可以開始執行運算任務了,整個過程在數分鐘內就可以完成,如此就不用自己建置、維運數量龐大的實體機器了!對於 IaaS 廠商來說,透過 VM 可以有效提高實體機器的利用率,提昇服務的可靠性,以服務更多的使用者,才可以賺更多的錢。
以上補充虛擬化技術在雲端運算中扮演的角色,如有錯誤歡迎指教 :D
相關文章:

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D