作者:孫雅麗 / 臺灣大學計算機及資訊網路中心主任
您是否還在困惑「雲端運算」到底和目前的網路服務或是client-server 網路架構有何不同?本文從「應用的配置-顛峰負載效能品質保證服務」與「應用的服務-應用執行期限的保證服務」兩個主要面向介紹適合雲端運算的環境-創造一個資源「共有共享」、「充分利用」,但又能同時滿足各個應用/服務的目標效能。
當很多人還在困惑「雲端運算」到底和目前的網路服務或是client-server 網路架構有何不同,只好隨著這熱門議題「人雲亦雲」,於是就出現「眾說分雲」「不知所雲」、「各自表述」的有趣現象。目前一般而言,美國國家標準局(NIST)於2009年4月所提出的雲端運算的標準定義中,認為雲端運算包含「五個基礎特徵」是普遍為大家所接受的。這五個特徵是:(1)隨需自助服務(On-demand self-service)、(2)隨時隨地用任何網路裝置存取(Broad network access)、(3)多人共享資源池(Resource pooling)、(4)快速重新部署靈活度(Rapid elasticity),和(5)被監控與量測的服務(Measured service)。專家們認為未來進入雲端運算的時代,每個系統管理員將不再需要擔憂採購硬體的時間與流程,而是改以租賃方式(pay-per-use),動態地根據需求,自助啟動或關閉所負責的資訊服務,而這些服務都是透過各種網路裝置來存取。此外,由於不同應用共享這些軟硬體甚至人力資源,從統計與機率上,若異質性高,便能有效地互補彼此尖峰使用的時間,間接降低了不同企業的資訊成本。當然為了達成動態調配共享資源的目的,雲端服務供應商必須具備快速重新部署的靈活度,好讓各種被釋放出來的資源能馬上被其他客戶使用。最後,任何雲端服務都涉及計價行為,因此所有服務必須能被監控與量測,好統計租賃的帳單金額。
在這五個特徵裡,筆者認為雲端服務有別現在或是過往的運算服務的一個很重要特點是如何實踐在「雲端服務的提供者能夠提供使用者一個好像有無窮資源,可以隨時回應使用者需求(”An abstraction of infinite pool of resources”)」的概念。也就是要創造一個資源「共有共享」、「充分利用」,但又能同時滿足各個應用/服務的目標效能。而要達到這個目標的一個關鍵技術就是具有可規模化資源配置的能力(scalable resource allocation and management)。也就是說,一個雲服務提供者必須要有能力回應使用者架在雲端服務環境的應用(例如電子商務網站、網站、影音串流平台等),不會因不同的時間或是不可預期之負載狀況變化而影響服務效能品質;因為雲端服務提供者能夠提供使用者on-demand、最經濟、最妥適、最快捷的資源配置給有需求的服務,來保證服務的效能維持在設定的目標。
在這個架構下,有兩個重要的議題要先解決:
第一是雲服務提供者與使用者必須要簽訂一個服務協定書(Service Level Agreement SLA),而其中與雲端資源配置最相關的,就是服務的效能目標(performance goals)。
第二是有很多人談到要將目前很多的應用/軟體/服務/資料,從原本的執行架構或是運算環境轉移到雲端存放/運作/存取。但是,這裡有一個很重要的問題是大家所忽略的,也就是並不是所有應用軟體/服務以目前的形式放到雲端,都可以完全得到雲端運算的效益之一:可動態調度、規模化的資源分配與共享(resource pooling and rapid elasticity)。正確的作法應該是要能找出應用程式/服務執行的效能瓶頸,將資源配置到瓶頸點,才能有效地改善執行效能,避免效能下降。
一般而言,雲端運算無論是否使用虛擬(virtualization)技術,在雲端環境中的每個應用(application)應擁有一個專屬於它的作業環境。雲端服務提供者(對使用者而言,「雲」代表的是服務提供者(cloud service provider)的資源分配與管理元件會藉由多工(multiplexing)的方式,將雲端中的資源需求互補性的結合,以增加應用間所可以分享到的實體資源(例如實體處理器(CPU)、記憶體、網路頻寬等)。但是當某一應用有更多資源需求產生時,雲服務提供者可以隨時回應使用者應用的需求,部署額外所需的資源,例如最簡單的作法是如第一代server farm 的作法,將application process複製多份到不同的實體或是虛擬機器以應付更多資源的需求,滿足個別應用/服務的效能目標或是服務品質(QoS)。
雲服務提供者要能回應使用者應用的需求,第一要件是找到應用服務額外所需的資源,也就是要將目前執行效能瓶頸找出來,並將資源配置到瓶頸點(bottleneck),以改善執行效能。這部份就必須要透過了解應用程式的結構(structure)以及確定應用程式本身的內部組成程式元件的資源消耗情形(resource consumption profile),進行相關資料的收集、分析,找出瓶頸點,才能確實瞭解需要多少額外資源,才能保證該服務的效能品質。第二是應用的配置(application placement),也就是說雲端資源管理必須做整體的考量,包含如何將不同效能目標的應用部署在雲環境的哪些實體機器上最恰當,才能在確保各個目標效能達成下(例如回應時間(response time)以及同時間最大可處理的使用者連線個數 (maximum concurrent sessions per second、request rate)),同時保有高機動性、彈性的動態資源調度的做法也是一個必要且重要的因素。其中,如何最小化系統的downtime(服務或是應用成是完全無法使用的時間);以及如果必須做live application (component) migration或是重新配置的整體時間,在重新部屬的階段中必須避免不必要的服務中斷。這樣的技術與能力對雲端環境下雲服務提供者配置與部署應用程式的執行環境是非常重要的。
臺大計資中心的團隊目前正在研究、發展兩個能展現可規模化資源配置與目標效能管理的兩個創新雲服務與相關技術:
第一個服務稱為「顛峰負載效能品質保證服務」(Peak Load Service Quality Guaranteed Service),主要訴求對象是任何可能面臨不可預期之bursty loads的應用,例如web applications。很多的web servers 都有面臨突然大量負載的狀況,如何能即時分配到必須的資源,配置到瓶頸點,而不會影響對使用者的服務效能品質,過去的server farm, content distribution network (CDN)的技術都是針對這個問題的解決方案。
第二個服務稱為「應用執行期限的保證服務」(Applications with Deadline Service),主要訴求對象是任何有執行期程限制的應用,例如在許多的科學與工程的應用上,很多的研究者有模擬程式或是科學數值運算程式執行的需求,例如有一組 50 simulation runs 希望能在2週內跑完。這個服務的服務保證的是執行期限(guaranteed completion time),雲端服務提供者配置足夠(不多也不少)的資源以滿足這項目標服務品質保證。此服務的重點是要能估計應用程式的運算量,以提高平行度來達到使用者所設定的期限要求。