雲端計算
101/05/08
瀏覽次數
20874
謝錫堃|
成功大學電機系
陳柏誠|
成功大學電機系
從大型主機到雲端運算
究竟什麼是近來熱烈討論的雲端運算(cloud computing)呢?我們不妨從人類社會取水方式的發展歷程來了解。電腦從早期大型主機時代到現今雲端運算時代的演進,有如人類使用水資源方式的演進。
人類的生活離不開水,聚落總是靠近水源處。早期要汲水,必須把扁擔挑上肩,兩頭各掛一個水桶到水源地取水。因此,住在離水源地較遠的人家生活較辛苦。比方說,某戶人家住在高山上,而最近的水源在山溝裡,這戶人家每天就得派人到山澗旁打水,往返一趟得花好多時間。
在三、四十年前電腦設備尚不普及的年代,只有少數的大型機構(政府機關、銀行、大企業和研究型大學)才有能力購置電腦,進行資料的整理、運算與儲存,當時電腦是所謂的大型主機。
以學校的場景為例,整所大學可能只有一台大型主機設置在計算機中心,所有的使用者必須在終端機室才可以透過終端機使用電腦主機,並由主機負責所有運算,終端機只是傳遞使用者的操作命令,以及顯示主機的運算結果。這時期人們要使用電腦資源,就必須走到計算機中心的終端機室,就好比挑起扁擔到水源處打水一樣地不便。
後來時代進步了,人們懂得開鑿水井或製造汲水幫浦。每座村莊中,三、五家就可以共同集資鑿井,或小康人家在自家門口就設置私有汲水幫浦,如此一來就不必辛苦地到水源地打水了。然而,無論是鑿井引水或裝置汲水幫浦所取得的地下水,都需要自行消毒和過濾才能成為乾淨的飲用水。再者,掘井或裝設汲水幫浦所需的建置成本所費不貲,哪一天井塌了或幫浦壞了,都得自己花錢維修。
在1980年代以後,隨著積體電路技術的進步,電腦體積逐漸變小且效能提升,價格反而變便宜了。經濟實用的伺服器或工作站逐漸普及,各系所及各研究室都買得起這些設備從事研究、資料處理或儲存。這個時期這些系所單位使用電腦資源,就好比是自行鑿井引水或裝置汲水幫浦取水一樣,根據需求購置伺服器並自行管理。
不過,自行購置及管理伺服器並不是件容易的事。首先,必須根據用途規劃所需的伺服器硬體等級和購買數量,還要安排放置伺服器的空間,以及進行電力變更、空調設置、網路配線,以及伺服器採購後的系統建置、維護、管理等工作,例如軟/硬體升級、防毒/防駭,也需專人負責或付錢給廠商處理,這些都是有形或無形的負擔。
自行購入並管理伺服器的另一個問題是,很難彈性地調整電腦資源的規模。舉例來說,某大學的A實驗室購買了一台伺服器,讓這實驗室的研究生運行數值分析等模擬程式。平時研究生使用電腦的頻次不高,使用時間錯開,這一台伺服器游刃有餘地運行他們的程式。但是到了五、六月學生即將畢業的時期,實驗室裡的所有研究生都急著執行程式,以取得畢業論文所需的數據,當平時分散的工作量於短期間內集中在一起時,這一台伺服器要處理數量突然爆增的工作就顯得有點吃力。
解決這個問題的最簡單方法便是添購伺服器,然而所添購的伺服器平時的使用率並不高,導致資源浪費。而稍後提及的雲端運算,將有機會聰明地解決這些問題。
隨著時代進步,工程技術也不斷發展,到了近代開始有自來水公共基礎建設,大部分的人不再需要為了取水而煩惱。政府建設水庫並對貯水做多層次的消毒和過濾,透過輸水管線的配置,最後把水庫的貯水送到各戶人家。如今人們只要打開水龍頭,自來水便嘩啦嘩啦地流出。即使旱季時某些地區缺水,各個水庫之間也可以透過輸水管線互相調度,避免缺水地區完全停水。
此外,水庫、淨水設備、管線等的維護也都有專人負責。換句話說,普通人家不必再為了取水而事先投資設備,也無需考慮這些設備的養護問題,只需要根據用水量負擔相應的費用即可,用多少算多少。
那麼有沒有一種方式,可以讓人們使用電腦資源就如同使用自來水一樣「隨需即用,用多少算多少」,而不需要面對機房建構、軟/硬體採購,以及後續系統維護與財產管理的問題。本文的主角雲端運算的使用者只要利用手邊電腦打開瀏覽器,就可以透過網路存取遠端電腦的資源,網路就是雲端計算的自來水管,用戶端執行的瀏覽器就是裝水容器,使用電腦資源與使用自來水一樣方便。
雲端運算可根據資源提供的服務形式分為3大類,分別是:基礎建設即服務(Infrastructure as a Service, IaaS)、平台即服務(Platform as a Service, PaaS)、軟體即服務(Software as a Service, SaaS)。
基礎建設即服務
日常生活中所謂的基礎建設,指的是自來水、電力系統、電話網路、交通系統(如火車或高鐵系統)等設施,它們的共同特色之一是「依據使用者實際需求供應並計價」。把這樣的概念套到電腦資源的使用上,基礎建設即服務(IaaS)就是「把電腦的計算能力和資料儲存空間,依據使用者的實際需求供應並計價」。
也就是說,使用者不再需要自己購買伺服器來執行程式及儲存資料,也不必自行管理這些伺服器,而是根據需求透過網路向IaaS供應商購買所需的CPU計算能力和儲存空間。而其計價的方式可以是,使用某種等級的CPU進行1小時運算要價多少,租用10 GB的網路儲存空間1年要價多少等。更複雜的計價方式還可以涉及網路流量、服務供應的品質等。
目前最有名的IaaS供應商莫過於Amazon.com,這家公司是美國最大的網路電子商務公司。一開始Amazon.com只經營網路書店的業務,後來擴展到其他產品,包括3C、文具,甚至衣服、家具等,其雲端運算的解決方案是Amazon EC2及Amazon S3兩種商品(在台灣,中華電信也推出了類似的商品,稱為hiCloud)。
由於Amazon.com的業務規模相當大,因此本身便擁有許多擺放計算及儲存設備的大型資料中心。由於目前的電腦硬體都已相當強悍,一台伺服器可能配備了多顆CPU,每顆CPU又有數個計算核心,因此透過專門的軟體,Amazon EC2把每一台計算伺服器切割為數台的虛擬伺服器,並提供一個瀏覽器介面,讓使用者可以彈性地租用這些虛擬伺服器的CPU計算能力。
Amazon EC2服務的租用者可以隨時建立、執行、終止自己的虛擬伺服器,並且可以在虛擬伺服器上執行任何自己想要的軟體或應用程式,最重要的是這樣的服務是依據實際的使用量付費。Amazon S3則可以讓使用者彈性地租用資料儲存空間。
有了Amazon EC2和S3這樣的服務,前文所提及的A實驗室將不需要再自行購買和維護實體伺服器。A實驗室可以先租用一台虛擬伺服器滿足研究生平時運行程式的需求,並在學生即將畢業的期間臨時租用更多的虛擬伺服器,以應付所增加的計算需求。更重要的是,A實驗室再也不用煩惱硬體升級、維護等問題。
平台即服務
從IaaS供應商租用了數台虛擬伺服器後,使用者可以在這些虛擬伺服器上安裝任何作業系統,並在這些虛擬伺服器之間建立網路連線。然而,並非所有的使用者都希望親自進行這些系統設定的瑣碎工作。
讀者可以考慮以下情況。張先生是一名專業的網頁設計師,他打算設計一套網路遊戲。然而,張先生並不確定初期會有多少人玩這套遊戲,因此他打算租用雲端上的計算和儲存資源。如此一來,在初期,張先生只需要租用少量的雲端資源,並且隨著玩家人數增加,他隨時都可以動態地租用更多的雲端資源來滿足所有的玩家。
但是,張先生真正擅長的工作是把遊戲構想寫成程式碼,對於一台虛擬伺服器能夠應付多少玩家所帶來的工作量並沒有概念。因此他希望雲端供應商可以在玩家數量增加時,自動分攤各個虛擬伺服器的負載。
在這種情況下,張先生關心的不再是需要跟IaaS供應商購買多少虛擬伺服器,也不是要在這些虛擬伺服器上安裝哪種作業系統,張先生真正需要的其實是一個平台來運行他設計的網路遊戲。平台是一種機制或一種操作方式,當然他也希望這個平台可以彈性地伸縮其規模,無論要處理的玩家數量多寡,這個平台都必須能讓他的網路遊戲平順地服務所有玩家。類似這樣的需求,其解決方案就是雲端運算的另一類服務—平台即服務(PaaS)。
平台即服務的租用者只需要把軟體甚至是程式碼上傳到供應商所提供的平台,供應商自然會負責程式的執行。目前較有名的PaaS解決方案,是Google的Google App Engine (GAE)。GAE是Google的應用程式開發與代管平台,可讓使用者建置高流量的網路應用程式,但不必管理高流量的基礎架構(節錄自Google官方對GAE的簡介)。換句話說,使用者租用PaaS解決方案,便可以專心於其應用程式功能面的開發,而不需要擔心如何應付流量管理等問題,並且開發完成的程式也可以直接在租用的平台上運行。
當然,PaaS所提供的功能不僅如此。以GAE為例,它提供了很多的程式開發工具給使用者,這些程式開發工具使用的技術跟Google網站本身的技術相同,不僅快速且穩定。透過使用GAE提供的程式開發工具,可縮短在PaaS環境中編寫新程式的時間。
軟體即服務
前面提到的雲端IaaS與PaaS,其使用者多半來自企業或研究單位,非一般大眾。對於個人使用者來說,他們感興趣的是應用軟體所提供的服務,而非執行應用軟體的平台或支撐平台的底層基礎建設。因此,接著介紹雲端運算的第三類服務—軟體即服務(SaaS)。
過去,我們在自己的個人電腦裡安裝各種應用軟體,比方安裝Outlook Express收送email、安裝MS Office處理文書工作。現在,SaaS藉由網際網路提供雲端軟體,我們可以透過各種雲端軟體取代部分的傳統單機軟體,比方改用Google Gmail代替Outlook Express、改用Google Docs代替MS Office。事實上,許多人雖然沒聽過SaaS這個新名詞,卻早已使用過Google Gmail、Docs等雲端應用了。
簡單地說,SaaS供應商把應用軟體部署在自己的伺服器上,使用者只需要連上網路便可以使用這些雲端軟體。以Google Docs為例,使用者只知道自己透過跟單機文書處理軟體類似的瀏覽器介面在打報表文件,但是並不清楚這個瀏覽器介面的文書軟體在何處執行。因此,採用雲端軟體的使用者並不需要實際下載、購買、安裝程式,也不需要定期更新,SaaS供應商會負責所有軟體管理和維護的工作。
雖然上述Gmail、Google Docs的服務免費,但和IaaS或PaaS層級的雲端服務一樣,SaaS的軟體使用服務(例如客戶關係管理等商務軟體)也可以按照使用者的實際需求決定購買何種服務,並根據使用服務的時間長短來付費。這種按需求量計費的方式,對買賣雙方都帶來好處。對軟體供應商來說,SaaS在某種程度上可以遏止盜版的問題,因為使用者並不會直接拿到軟體。對個人或中小企業來說,透過租用的方式,可以用較低的成本使用新軟體的全部功能,並在確定該軟體符合自己需求時考慮長期租用。
雲端運算或許談不上是一個新觀念,然而足以支撐雲端運算的許多底層技術,確實是到了目前才慢慢成熟。本文把雲端運算分為IaaS、PaaS和SaaS三個環節分別探討其主要精神。與其說雲端運算是一種新興的技術,不如說它是電腦使用方式的一種自然演進,或者說是一種新的商業模式。
無論是IaaS、PaaS或是SaaS,雲端運算服務最主要特點是「隨需即用,用多少算多少」,使用者端透過網路能夠隨時隨地依需要存取雲端資源,雲端則能夠依使用狀況迅速地調配所需的資源,使用者再依使用量支付費用。當讀者日後碰到任何宣稱是雲端服務的產品時,不妨套用這個原則加以檢視。