Google提出的分散式運算技術,讓開發人員很容易開發出全球性的應用服務,雲計算技術可以自動管理大量標準化(非異質性)電腦間的溝通、任務分配和分散式儲存等。
雲源自分散平行運算,但比網格更擅長資料運算
雲技術可以算是網格技術的一個子集合,兩者目的相同,都是要把系統的複雜性隱藏起來,讓消費者只要使用而不需要瞭解系統內部如何運作。
各方跟進Google推廣雲服務,但定義不同
不同業者對於雲計算的定義各有不同,只有廣義上對於「雲模式」的概念是相通的。 凡是透過網際網路提供應用服務,讓消費者透過瀏覽器就能使用,不需要瞭解伺服器在哪裡,內部如何運作,都被稱為雲計算的服務。
Yahoo用Hadoop處理4 PB的網頁
Yahoo架構工程師Vivek Ratan表示:「目前使用Hadoop框架的雲計算,任務規模最大的是Yahoo用來建立網頁索引資料庫的運算, 同時使用1萬個Linux平臺的處理器核心,處理1兆個網頁連結,從4PB的資料,運算得出300TB的索引資料。 」
趨勢用雲技術解決大量資料的全球移動難題
趨勢科技4年前就開始利用平行運算的網格技術,來提供雲服務。
使用雲運平臺後,不論美國或中國的研究人員,都可以透過同一套運算平臺,共用病毒分析的資料。
雲技術降低SaaS門檻,小公司也能做全世界的生意
工研院資訊與通訊研究所副所長余孝先認為,即使企業沒有足夠的能力或財力,自行建立自己的機房與網路架構, 都能夠利用Amazon或Google的資訊架構,來提供全球性的SaaS(Software-as-a-Service)服務。
雲計算核心技術MapReduce
雲計算的關鍵技術MapReduce,是一種解決問題的程式開發模型,也是開發人員拆解問題的方法。 最早由Google提出,後來也運用在開源的雲技術Hadoop中。
雲源自平行運算,但比網格更擅長資料運算
最近,中研院網格計算團隊主持人林誠謙不論走到哪裡,都被問到一件事,從新加坡的學術論壇,到南臺灣的學術圈交流場合,大家都問他:「Google談的雲計算(Cloud Computing),和網格運算(Grid Computing)有什麼不同? 」
雲源自分散平行運算,但比網格更擅長資料運算
「雲技術可以算是網格技術的一個子集合,」林誠謙說:「兩者目的相同,都是要把系統的複雜性隱藏起來,讓消費者只要使用而不需要瞭解系統內部如何運作。 」
林誠謙認為,網格技術涵蓋了雲技術,但是,網格能夠處理更複雜的問題,而雲技術則可視為是網格技術的一種商業化結果。
「雲計算是從網格技術的分散平行運算技術和觀念發展出來,業界再用新名詞來包裝原有技術,只是使用的比喻不同。 」他進一步說:「對電腦產業而言,這麼做很重要,因為有助於推廣大眾對這項技術的瞭解。 」
同樣地,高速網路與計算中心企業與計畫管理組計畫主持人黃維誠認為,大體上來看,雲計算和網格運算背後的哲學是一致的,他說:「對消費者來說,不需要瞭解伺服器是什麼? 在哪裡? 就是把需求丟進去,就會得到結果,這是雲計算的想法,也是網格運算的想法。 」
再進一步分析兩者的差異,黃維誠說:「雖然雲計算源自平行運算的技術,不脫離網格運算的哲學,但是雲計算更專注在資料的處理。 」
單次資料處理量小,讓雲計算發展出不同于網格運算的實作方式
從處理的資料型態來看,黃維誠認為:「雲計算適合的任務,多半是資料處理次數頻率高,而每一次要處理的資料量小。 」
雲計算vs.網格運算
雲計算
網格運算
主要推動者
資訊供應商(如Google、Yahoo、IBM、Amazon等)
學術機構(如歐洲粒子研究中心CERN、中研院、國家高速網路與計算中心)
標準化程度
無標準化,各家採用的技術架構也不同。
有標準化的協定和信任機制
開源幅度
部分開源,目前有開源Hadoop框架,但Google GFS和資料庫系統BigTable則未開源。
完全開源
網域限制
企業內部網域
可跨企業、跨管理網域
單一運算叢集可支援的硬體
相同標準規格的個人電腦 (如x86處理器、硬碟、4GB 記憶體、Linux等)
可混合異質性伺服器(不同處理器、不同作業系統、不同編譯器版本等)
擅長處理的資料特性
單次運算資料量小(可于單台個人電腦上執行),但需要重複大量處理次數的應用。
單次運算資料量大的應用。 例如單筆數GB的衛星訊號分析。
例如像是網頁搜尋的工作,每一次運算只需要比對一個網頁,比對資料的大小可能不超過1MB,但是,全世界有幾十億個網頁,若要全數比對,要比對的總數據量就非常可觀。 黃維誠認為,這種特性與網格運算擅長的類型不大相同,網格運算適合解決科學研究,例如分析衛星回傳的資訊,每一次要分析的訊息檔案就高達數GB。
即使雲計算與網格技術同是採用平行運算的哲學,但因為雲計算較適合執行單次資料處理量較小的任務,黃維誠認為,雲計算在實作方式上就會與網格運算不同。
他進一步解釋:「例如搜尋網頁,每一次要比對的網頁,其實檔案都不大,所需耗費的處理器資源不多,所以用大量的個人電腦就可以來執行網頁搜尋的運算,但是,要用個人電腦來架設網格運算就比較難, 因為網格運算所需的處理資源較大。 」
所以,實作的差異就是,雲計算可以組合大量的個人電腦來提供服務,而網格運算則需要依賴能提供大量運算資源的高效能電腦。
網格技術的理想,是要讓任何伺服器,都能加入到一個運算網格中,以提供龐大的運算量,因而在技術上的困難,就是要解決不同伺服器、作業系統、甚至是程式編譯器版本差異等異質性問題。
然而,以Google的雲計算做法為例,則是使用大量規格相同的個人電腦等級伺服器,來執行雲計算的程式,所以不需要處理異質性的問題,可以簡化平行運算的系統架構,更容易協調伺服器間的資訊傳遞, 讓分散式處理的整體效能更好。 許多Google的產品或服務,例如Google搜尋、Gmail、Google Maps、Google Docs等,都使用到雲計算的技術,藉由大量低價伺服器的運算資源,來滿足大量消費者的需求。
雲名詞解釋
●雲計算(Cloud Computing):Google提出的分散式運算技術,讓開發人員很容易開發出全球性的應用服務,雲計算技術可以自動管理大量標準化(非異質性)電腦間的溝通、 任務分配和分散式儲存等。
●網格運算(Grid Computing):在網路上,透過標準化協定與信任機制,整合跨網域中的異質伺服器,建立運算叢集系統來共用運算資源、儲存資源等。
●服務在雲(In-the-Cloud)或雲服務(Cloud Service):供應商透過網際網路提供服務,消費者只需透過瀏覽器就能使用,不需瞭解供應商的伺服器如何運作。
●MapReduce模式:Google運用在雲計算中的關鍵技術,讓開發者開發大量資料的處理常式。 先透過Map程式將資料切割成不相關的區塊,分配給大量電腦處理,再透過Reduce程式將結果彙整,輸出開發者需要的結果。
●Hadoop:使用JAVA開發的開源雲計算框架,也是採用Google雲計算技術實作的框架,但所用的分散式檔案系統與Google不同。 2006年Yahoo成為該計畫最主要的貢獻者和消費者。
各方跟進Google推廣雲服務,但定義不同
從去年中開始,Google更進一步大力推廣雲計算,Google全球副總裁李開複說:「雲計算是Google最重要的關鍵技術,也是網路應用的未來趨勢。 」他認為,除了消費者可以使用Google雲計算的服務以外,不論企業規模大小,也可以運用Google的服務來滿足企業內部的資訊應用需求,或者利用Google提供的平臺,例如Google App Engine, 將自己開發的應用程式,藉由Google提供的雲計算環境,來服務全世界的消費者。
Google本身網路服務的成功案例,以及它對雲計算的推廣,陸續地吸引了其它業者如Yahoo、IBM、微軟、HP等,也紛紛表示自己擁有雲計算的產品和技術,或者未來將提供採用雲計算的服務。
不過,不同業者對於雲計算的定義又各有不同。 只有廣義上對於「雲模式」(Cloud Model)的概念是相通的。 不論服務的類型,或者是執行服務的資訊架構,凡是透過網際網路提供應用服務,讓消費者透過瀏覽器就能使用,不需要瞭解伺服器在哪裡,內部如何運作,都被稱為雲計算的服務,背後的技術也概稱為雲計算。 循此廣義地定義,另有業者也將這類應用稱為雲服務(Cloud service)或在雲層裡的服務(in-the-cloud)。
Amazon利用虛擬化技術提供雲計算服務
Amazon提供的EC2(Elastic Compute Cloud)和S3(Simple Storage Service)服務,與Google雲服務的實作方式不同。
EC2採用Xen虛擬化技術,提供一個虛擬的執行環境(虛擬實例Instance,或稱為虛擬機器器),讓租用Instance的企業來執行自己的應用程式。 Amazon提供不同規格的Instance,例如一個超大型的Instance組合,就包括15 GB 記憶體、8 個EC2運算單位(類似4個雙核心虛擬處理器)、1690 GB儲存空間、64位平臺。
企業只需要將自己的作業系統、網站伺服器和應用程式打包成一個Image檔案,上傳到EC2的伺服器後,呼叫EC2提供的指令來執行Image檔即可啟動服務,就像是擁有一台實體伺服器一樣, 企業可以自行控制在Instance中執行的作業系統。
EC2是提供Image檔案執行的環境,但結束後無法保留資料,所以,Amazon另外提供了一個分散式檔案系統S3,供企業保存EC2運算的輸出結果。 另外Amazon還提供了很多現成的Image範例,將常用的作業系統、網站伺服器、資料庫系統都先打包成一套執行環境範本,企業可以將這些Image檔放到租用的Instance中執行, 再把自己的網頁應用程式上傳到自己的Instance中,即可提供服務,不需要自己花時間進行各種系統的安裝與設定。
另外Amazon還能讓企業在執行應用程式的過程中,動態調整租用Instance的運算規格,例如原來租用的Instance運算速度滿載,或頻寬不夠時,還能動態擴增可使用的運算資源, 或者增加新的Instance來分擔流量。
各業者提供的雲計算,背後架構各有不同
Amazon透過Xen虛擬化技術,讓企業不需處理實體伺服器的維運,而能執行自己的服務,從廣義上來說,也是一種隱藏運算複雜性的雲服務。 這與Google所使用的雲計算,在實作技術上完全不同。
實際上,其它業者例如微軟,Yahoo也是自行開發雲計算平臺,各家採用的理論和實作架構不儘然相同。
不過,Google並非直到去年才開始對外發表這些雲計算的技術,其實,早在2004年,參與Google基礎架構建置的資深工程師Jeffrey Dean,和同僚在OSDI(Operating Systems Design and Implementation)研討會中,發表了Google雲計算的核心技術模式MapReduce,以及Google使用這些技術的成果。 Jeffrey Dean在報告中指出雲計算受到平行運算的List語言和函數程式設計(functional lauguage)的啟發,將原本的Map和Reduce兩種程式設計概念結合成MapReduce這個新模式, Google發現MapReduce運算模式,很適合用來處理大量資料的分散式運算。
開源社群用Google經驗發展出Hadoop框架
Google發表MapReduce後,2004年開源社群也用JAVA實作出一套使用MapReduce技術的框架Hadoop,讓JAVA開發者可以很容易寫出雲計算的應用。 隨著Hadoop框架的開發者Doug Cutting在2006年加入Yahoo,Yahoo遂成為Hadoop最主要的貢獻者和消費者,許多Yahoo提供的服務,例如網頁搜尋,已經是利用Hadoop框架所開發的雲計算。
目前Hadoop是唯一一套開源的雲計算框架,雖然與Google使用的雲計算技術略有不同,但是核心的設計概念都是來自Google的MapReduce模式和分散式檔案架構, Google也有不少工程師參與Hadoop計畫的發展,例如發起Google雲計算學術計畫的工程師Christophe Bisciglia,也參與了Hadoop的開發。
Google雲計算架構
MapReduce
模式
Big Table
資訊庫模式
GFS(Google File System)檔案系統
Yahoo用Hadoop處理4 PB的網頁
Yahoo架構工程師Vivek Ratan也是Hadoop框架的開發者之一,他表示:「目前使用Hadoop框架的雲計算,任務規模最大的是Yahoo用來建立網頁索引資料庫的運算,同時使用1萬個Linux平臺的處理器核心, 處理1兆個網頁連結,從4PB的資料,運算得出300TB的索引資料。 」他進一步補充:「以相用的機器設備,改用Hadoop來處理相同任務,比起原本利用叢集運算的方式,節省了1/3的時間。 」
雲計算用來處理大量資料的優勢,也吸引了許多企業投入。 例如IBM去年宣佈和Google合作,在大陸進行藍雲計畫(Blue Cloud),使用Hadoop框架,來處理科學計算或提供雲計算的服務。
和傳統超級電腦或大型主機的架構相比,Vivek Ratan認為雲計算的系統架構是完全不同的設計典範,傳統大型主機是垂直式擴充(Vertical Scaling)的設計架構,而像Hadoop或Google的雲計算, 則是採取水準式擴充(Horizontal scaling)的設計架構。
垂直式的擴充,是指不斷提高單一台伺服器的運算能力,例如,盡力讓單一台伺服器配備更多的運算核心,來提升應用程式可以處理的資料量;而水準式擴充則是,不斷增加伺服器的數量,就能提高應用程式可以處理的資料量, 而不需要提高單一台伺服器的運算能力。 所以,以採取水準式擴充設計的Hadoop來說,隨著使用應用程式服務的消費者越來越多,要處理的資料量越來越大,就只需要不斷增加新伺服器即可,而不需要修改原來的應用程式代碼。
Vivek進一步指出水準式擴充的兩個優點,他說:「因為可以藉由大量擴充伺服器來提高運算能力,所以不需要使用很貴的伺服器,一般PC等級的電腦就足夠。 」買一台大型主機需要上千萬元,但是企業用相同的費用可買到數百台個人電腦,透過Hadoop整合,就能提供超過單一台大型主機的運算能力,換言之,可以使用更低的成本,得到更高的運算效能。
另一個更大的優點是可以提高系統容錯能力。 雖然單一台大型主機的運算能力很高,但就像是將所有雞蛋都放在同一個籃子中,一旦當機,主機所執行的應用程式就會完全停擺,無法提供服務,即使有備援系統,也需要一段時間來轉換服務。 在Hadoop的架構下,則是透過一台Master主機將程式切割成很多部分,分配到很多台電腦中執行,即使有幾台電腦當機,Master主機也能馬上將需要運算的部分交給閒置的電腦執行,整體的應用程式服務不會中斷。
Vivek表示,在單一任務的運算中,甚至是即便有十分之一的電腦當機,運算仍舊可以繼續執行,他說:「雖然效能會變慢,但是不會中斷。 」網管人員只需要將作業環境的備份檔案,回復到新的機器中,就可以很快再加入Hadoop的運算環境中提供服務。
降低成本只是短期效益,速度會促成創新應用
運算成本的降低是雲計算最明顯的效益,Google工程研究所簡立峰表示:「大型企業逐漸感受到單台伺服器、儲存和維護等成本增加的壓力,以及管理人力增加的問題,目前有興趣的企業,多半先看到雲計算降低成本和人力的好處。 」他接著說:「再堅持一段時間,這些企業就會看到雲計算的速度價值。 」
簡立峰認為過去很多企業所提供的網路應用,往往受到技術上的限制,顧慮到企業使用的運算環境無法勝任大量資料處理及大量消費者連線,因此能提供的可行服務有限。 但是,透過雲計算,可以用較低的成本來處理大量資料,提供消費者幾乎是即時的資訊服務。 簡立峰說:「速度是產生應用的關鍵,隨著資料量越大,就越能感受到速度的差異。 」
趨勢科技正是善用雲服務的速度,來提供新的網路安全服務。 趨勢大約從4年前開始使用平行運算技術,來提供企業使用者過濾網頁內容的服務。 隨著網頁內容檢查的需求越來越高,企業或一般消費者希望趨勢科技的安全防護,可以過濾像是釣魚網站或惡意連結的網頁內容,確保使用者上網時的安全。
但是病毒演化速度越來越快,網頁惡意程式的手法日趨複雜,趨勢科技發現需要龐大的運算能力,才足以分析每天47億筆的網頁內容,而且病毒碼更新速度也必須隨時更新,才能讓消費者的防護沒有空窗期。
趨勢科技研究開發部專案經理楊覲甯說:「當外面環境快速改變時,消費者希望安全廠商還是能夠提供保障,因而產品更新的速度就很重要。 」
再加上,趨勢的研究團隊分散在中國、美國與日本等地,每天需要分析的資料量高達Terabytes的等級,若要跨國搬移資料,所需連線成本非常高,速度也很慢,連帶也會影響了產品更新的速度。
楊覲甯指出,趨勢利用開源的雲技術與網格技術,將服務放到雲(in-the-cloud),不但可以讓服務的反應速度很快、開發解決方案的速度很快,還能解決大量資料要跨地域運算的問題。 她說:「過去要跑一天的分析任務,現在幾秒鐘就可以得到結果。 如果消費者得等一天才能獲得安全防護,根本就來不及。 對資安廠商來說,雲服務是非做不可。 」
趨勢科技很早就體會到雲計算的威力,當相關技術都還在發展的過程,就已經開始投入。 隨著Google和Yahoo今年都相繼推廣雲計算,同時也與不少大學合作培訓雲計算的開發人力。 簡立峰認為企業運用雲計算的時機漸漸成熟,進入門檻將會越來越低,他說:「未來的應用都會跟雲計算有關,對想要創新的企業來說,可以開始思考這個技術的可能性。 」