略過巡覽連結首頁 > 產業觀察

產業觀察

雲端議題面面觀

作者/葉翔騰

[發表日期:2010/6/22]

前言

全球知名的分析公司—Gartner,針對10大策略技術進行分析,將雲端運算由2009年的第三名拔升到今年的首位,雲端議題的發燒,是可以預見的。


《圖一》


本文將廣泛介紹幾個與雲端相關議題,來看看這個最夯的議題,如何影響整體IT產業發展方向。

顛覆 80/20 理論的長尾現象

簡單說明一下由克里斯.安德森所撰『長尾理論─打破80/20法則的新經濟學』這一本書中所提到的觀念:

一、80/20理論:對於營利公司而言,80%的獲利來自於20%的重要客戶。

二、長尾現象:只要提供的商品夠多,貢獻度小的客戶,所提供的獲利總合將與貢獻度大的客戶所提供的獲利總合相當。

為了說明『長尾』的概念,筆者借用該書的三張圖,注意圖四右下方,縱使是排名80萬以後的歌曲,下載次數仍然不是 0!


《圖二》



《圖三》



《圖四》


為了便於說明,我們把長尾現象這群所謂貢獻度小的族群統稱為”長尾族群”!正常的情況下,任何一間營利公司怎麼也沒辦法提供所謂”足夠”的商品!解決的方法之一是:提供一個平台與工具,讓長尾族群自己成為商品的製造者!

營利廠商由商品的製造者退而成為只是平台的提供者,就像只提供機器、電力設備的工廠,要生產什麼商品全由”長尾族群”自己來!只要有足夠的商品,提供這個平台的廠商就能不斷地獲利!

如果一個服務,需要透過網際網路來滿足長尾族群的需求,就必須考慮到系統回應時間(Response Time)、可靠性(Reliability)、自動化管理與安全性(Security)等架構需求,這些議題,全部都在雲端基礎設施的討論範圍內。

分散式運算(Distribute Computing)與網格運算(Grid Computing)

科技永遠追不上需求!就好比讓牛去耕田,與其等待科學家創造出強而有力的『基因改良牛』,不如想辦法讓多養頭牛一起協同工作!分散式運算的概念也是如此:為了完成一個需要耗用大量運算資源的需求,與其永無止境的強化單一部伺服器的運算功能,不如想辦法協同不同伺服設備一起合作!

這方面的需求,比如說:搜尋引擎,當使用者輸入一個關鍵字,搜尋引擎可以協同不同的伺服器,從新聞、電子書、網站、BBS、研究論文等不同資料來源,針對該關鍵字進行搜尋。

網格運算很類似分散式運算,只是它還考慮到跨不同OS(如:Windows 與 Linux)的伺服器之間的協同運作。

MapReduce 演算法

如果要同時使用多部主機來完成一件『大』的任務,那麼首要工作,就是將『大』任務,分成多個『小』任務,讓參與的伺服器分開執行。其次,就是必須有一個機制,以便蒐集所有伺服器的執行結果。

MapReduce就是Google為了上述目的,所想出來的演算法。Map就是前半段有關任務分派的部分;Reduce則是後半段運算結果統整的部分。

虛擬機器(Virtual Machine)

在有 VM之前,一部伺服器同一時間就只能有一個作業系統(Operating System)運行,這個作業系統獨自使用所有的系統資源(Memory/CPU/Network/Disk IO等)。

有了 VM之後,一部伺服器同一時間,可以運行多個 OS,每一個 OS 共同分享該設備的系統資源。這樣的改變,最大的好處是:

一、一部伺服器可以更有彈性的被運用:如果一部設備不再受限於特定一種 OS、不再受限同一時間只能跑一個 OS,我們可以將一部伺服器的資源做更有效率的運用。

二、系統的管理變得非常容易:一個 VM只是一個檔案,這使備份或備援變得簡單多了。

集中化與綠能

這裡所謂的集中化,已經不單單指形式上宣示主權的集中式管理,而是更進一步的有效運用管理範圍內的伺服器。

以往,在沒有『集中化』之前,一個軟體系統都是依系統本身的最大使用量來評估它所需要的伺服器等級。但是往往一個系統所謂的最大使用量(Peak Time),一年可能只出現一次,這會讓伺服器大部分的時間是處於低負載的情況,以資源管理的角度來看,這是一種浪費!如果可以透過『集中化』與虛擬機器(VM)等相關的技術,選擇低負載的時機,讓其他系統運行在這部伺服器上,這樣當然可以有效提昇系統資源的使用率。

有效提昇系統資源的使用率的結果,就是同一時間需要 Active的伺服器設備總數量的降低,這就代表伺服器設備的減少與節能的環保概念。

IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)與SaaS(Software as a Service)

雲端的服務可以分成 Iaas、PaaS與 SaaS三種。

IaaS(Infrastructure as a Service)指的是提供網路、伺服器、負載平衡器、自動化佈署與監控等基礎設施的服務。

PaaS(Platform as a Service)指的是在基礎設施之上,加上一些應用系統會共用的機制,如:認證與授權(A&A)、Memory Cache、Job Queue、使用 Map-Reduce 之類的分散式運算介面、存取分散式資料庫的介面等。將上述機制做為服務的內容,就是 PaaS 的範疇。

SaaS(Software as a Service)指的是類似 FaceBook 這一類將應用軟體做為服務的軟體系統。

分散式作業平台的 Open Source:Hadoop

Hadoop 是 Apache 的一個分散式作業平台 Open Source(Java Base),提供三項與分散式運算(或雲端運算)關係密切的實作:

一、MapReduce-Hadoop MapReduce
二、分散式檔案管理系統(DFS)-HDFS
三、分散式資料庫(DDB) -HBase (相當於 Google 的 BigTable)


如果任何資訊廠商想要取得公有雲的相關技術,從 Hadoop 下手,其研發成本當然比重頭做起來得低。

公有雲與私有雲

所謂的公有雲(Public Cloud),就是提供基礎設備(伺服器、網路、負載平衡等)與 PaaS的雲端服務,像 Google 的 APP Engine 與 微軟的 Azure就是典型的公有雲。這類的公有雲,有幾個特色:

‧其服務的對象,其一:就是準備在這個公有雲上面提供 SaaS的開發者;其二、就是未來使用這些 SaaS的使用者。

‧在這個公有雲上 run 的軟體,一律是 Web AP。

‧因為『曝露』在 SaaS開發者面前的只有一些標準的 Platform Interface,所以在公有雲開發軟體系統,就必須遵守公有雲擁有者的遊戲規則!以 Google 的 APP Engine 為例,所有使用者開發的軟體,都是在它所謂的『Sandbox』內執行的,這個 Sandbox (不論是 Python runtime or Java runtime),因為安全性的考量,一律禁止使用某些特定指令(如:create socket、file 的存取等)

‧提供必要的 PaaS,如:Memory Cache、Scheduled Job Queue、跨 AP 的介接模式(Web Service)

‧提供防範網路駭客行為(如:SQL Injection)的機制,如:APP Engine Python Base 使用Django Framework 可過濾數種可能的駭客行為!

相對於公有雲,私有雲(Private Cloud)的使用者只有局限在特定的範圍(如:一個企業內)。私有雲的重點,很容易地會被聚焦在基礎設施的自動化佈署、虛擬機器等與 IaaS有關的議題,理由就是:透過節省伺服器的購置成本與節省能源等方式,達到企業降低營運成本的目標。

結語

有人提到雲端運算是否有可能會步上2000年網路泡沫的後塵?關鍵其實就在於未來提供雲端服務(尤其是 SaaS)的人或廠商比較多,還是提供雲端相關技術的廠商比較多!如果是前者,雲端運算就不可能泡沫化了!

底下,提供一些深入閱讀的資訊:

‧如果你想運用你自己的創意,開發 SaaS,放在Google(Java or Python) 或微軟(.Net) 的公有雲,讓其他人來使用,你應該去研讀 Google APP Engine 或 MS Azure 相關的技術文件。

‧如果你想透過分散式作業系統,進行大量的資料分析,你應該去研讀 Apache Hadoop相關的技術文件。

‧如果你想瞭解 PaaS 範疇內的相關技術,如:MVC Framework 、Memory Cache 等,你應該去研讀 Django Framework(Python Base)、Spring(Java or .Net Base)與 memcached 等相關的技術文件。

參考資料

1.長尾理論─打破80/20法則的新經濟學http://www.bookzone.com.tw/Publish/book.asp?bookno=CB345&type=excerpt

2.與 Google APPs Engine 有關的參考書籍
 O’REILLY Google Press『Using Google App Engine』Charles Severance 2009
 O’REILLY Google Press『Programming Google App Engine』Dan Sanderson 2010
 Apress『Beginning Java Google App Engine』Kyle Roche & Jeff Douglas 2009
 Apress『Developing with Google App Engine』Eugene Ciurana

3.與 Windows Azure 有關的參考書籍
 Apress『Windows Azure Platform(Pro)』Tejaswi Redkar 2009
 Wrox『Cloud Computing with the Windows Azure Platform』Roger Jennings 2009
 Apress『Introducing Windows Azure』Henry Li 2009

4.與 Apache Hadoop有關的參考書籍
 O’REILLY Yahoo! Press『Hadoop-The Definitive Guide』Tom White 2009
 Apress『Pro Hadoop』Jason Venner 2009

5.與memcached 有關的參考書籍
 Wrox 『Developing Web Application with Perl、memcached、MySQL and Apache』Patrick Galbraith 2009

6.與 Django 有關的參考書籍
 Apress『The Definitive Guide to Django-Web Development Done Right』Second Edition Adrian Holovaty and Jacob Kaplan-Moss 2009
 Apress 『Beginning Django in e-Commerence』Jim McGaw 2009

 

回上層