「雲端」目前還像是個流行詞彙,常被解讀成各式各樣的意義。美國Gartner的說法是「a style of computing where massively scalable IT-enabled capabilities are delivered 'as a service' to external customers using Internet technologies」,也就是「透過Internet技術,提供大規模延展性以及有需要時能立刻取用的運算環境」。

雲端的本質是延展性
把運算環境的構成要素大致分成「應用程式」、「平台」以及「基礎架構」這三層,然後分別討論各層可以實現的延展性(擴充性)(圖8.1)。從應用程式層來看延展性,利用美國Google開發的MapReduce等技術,即可不必在意底層,透過API讓應用程式分散到更多不同的機器上執行。在平台層實現的話,可以透過分散快取等技術,將Web三層系統直接轉移到雲端環境上執行。若在基礎架構層實現,則是以虛擬化技術達到自由增加運算資源,即為自由增加節點的目標。


基礎架構層的延展性
如果想在自己的公司裡建立虛擬雲端服務,大概就需要考慮這層的延展性。使用公用雲端時,由於有Amazon EC2這樣的公用雲端供應商提供服務,所以只要直接使用服務即可,不必在意基礎架構內部的實做方式。但是如果要自行建構私有雲端,就必須先弄清楚基礎架構支撐雲端運算的技術。

OS虛擬化與硬體虛擬化
討論平台層的延展性時,曾經提到雲端環境的延展性基本要靠向外延展達成。因此,基礎架構層需要能迅速提供屬於基礎架構的伺服器。尋找滿足這個需求的技術時,最初會想到的是,對裸機(沒有安裝軟體與OS的)伺服器使用硬碟映像檔工具、部署工具的伺服器構築技術。

映像工具一如其名,是可以直接複製整個硬碟內容原始資料(映像)的工具。它與OS、檔案系統無關,代表產品包括Norton Ghost、Power-Quest DriveImage等等。另一個部署工具指的是將OS檔案在檔案系統層級複製的技術,代表產品是Symantec Altris Deployment Server等等。用這些工具建構伺服器,會在硬體驅動程式等處遇到硬體限制,如果新硬體不同,就無法瞬時建構伺服器環境。

如果透過虛擬化技術,把裝置驅動程式這類與硬體相依的部分跟OS分離,就能更迅速地提供伺服器。虛擬化技術包含VMware、Xen、Hyper-V這類x86(x64)環境的「硬體虛擬化」技術,以及更上層的「OS虛擬化」(Sun Solaris Container、Parallels Virtuozzo Container)等等。

硬體虛擬化是在硬體與OS之間插入虛擬層,在硬體虛擬層執行管理的OS與多台虛擬機器。各個虛擬機器都可搭載自己的OS與應用程式,看起來就像在許多套硬體(CPU與記憶體)執行,實現硬體虛擬化的軟體為「hypervisor」。另一方面,OS虛擬化指的是將host OS與應用程式之間插入OS虛擬層,在OS虛擬層執行多個應用程式。多個應用程式分別看起來都像在獨立的OS上執行,但是OS本身只有host OS一個。目前因為在同樣的硬體上,沒有統一OS的需要,因此通常都使用x86(x64)環境的硬體虛擬化。

硬體虛擬化的方式
硬體虛擬化的基本方式,大致分成Monolithic 型與Microkernel型這兩大方式。

這兩種類型的硬體虛擬層(hypervisor)額外負荷都是應用時的考量重點。

雲端上的生態系統

雲端運算改變了資訊業長久以來「販賣硬體與軟體」、「系統整合」的傳統。因為,以往由IBM與Microsoft之類的平台廠商所建構的資訊業界生態系統,孕育了Amazon與Google這類的雲端企業。

生態系統指的是,像是OS這類平台,以及第三方開發,在OS上運作的應用程式、資料庫等中介軟體,以及把他們結合起來販售的系統整合商,這一系列相關的周邊業務。

至今為止,大型主機、伺服器與用戶端系統(C/S)、Web系統以及變遷的企業系統,不管哪一個都受到強固的生態系統支援。因為有不少「Windows 有很多軟體,所以選擇 Windows 電腦」的使用者,Windows才能獲得很高的市占率。平台的價值明顯受到生態系統的價值影響。

而雲端也營造了新的生態系統(圖 1.3)。

比如說,美國的RightScale是在Amazon EC2的虛擬機器上,運用關聯式資料庫MySQL提供資料庫叢集管理服務的廠商。這間公司的CEO MichaelCrandell提到「我們的服務,可說是管理 EC2 這個基礎架構的『中介軟體』」。

Salesforce也有第三方設計的應用程式。英國的會計套裝軟體開發商CODA,就透過Salesforce的Force.com提供會計SaaS「 CODA 2go」服務。

日本也有同樣的廠商。總部位於東京都台東區的TerraSky,就是以Salesforce 相關服務作為事業核心的新世代系統整合商。這間公司的主力軟體,是把傳統Excel設計的表單轉移到Salesforce,變成輸入介面的服務「SkyEditor」。2008年6月,隨著PaaS的Force.com開始對日本提供服務,它們也開始提供使用Force.com的整合服務。SkySuite事業部長竹澤聰志就極力表示「Force.com對我們這種開發企業資料庫應用程式的公司而言,是最理想的平台」。

雲端業界也在彼此合作。2008年4月,Google就與Salesforce合作,讓Salesforce的CRM應用程式可以直接取用 Google的郵件、行事曆、辦公軟體等等。比如說,Google的電子郵件服務Gmail可以與Salesforce的顧客聯絡管理功能一同運作。

Salesforce的使用者可以用企業版Gmail(允許使用各公司自有網域名稱的郵件服務)與顧客聯絡,將會面日期與時間傳給顧客,之後可以直接在Gmail 的畫面裡,將聯絡顧客的資訊登記到Salesforce的CRM程式裡。反過來說,也能從CRM程式的顧客清單中,直接透過Gmail寫信給顧客。

2008年11月,Salesforce發表與Amazon的合作計畫,讓在Force.com平台服務上執行的應用程式,可以使用Amazon S3儲存資料;以及讓Force.com 應用程式的擴充模組,可以在Amazon EC2上面執行等等。

傳統生態系統的核心公司Microsoft也在打入這個領域。Microsoft預定在 2010 年開始提供服務的有Windows Azure與SQL Data Service,不僅針對提供 Web 應用程式的新創公司,也鎖定大規模企業客戶作為推廣目標。現有的開發工具Visual Studio可以直接用來開發雲端程式,因此目前的.NET應用程式開發者能平順地轉移到雲端環境。

雲端運算是資訊產業耗時25年才辦到的世代交替。資訊產業的主角從硬體、軟體製造商,轉變為超巨型資料中心以及在其上提供服務、形成生態系統的業者群了。(摘錄整理自第一章)

虛擬機器的部署功能
接著來看看實際的虛擬機器部署功能。一般來說,硬體虛擬化會提供下列三種功能(圖8.16)。

(1)製作虛擬機器的範本
以某台虛擬機器為雛型,建立虛擬機器範本,登記以便往後複製使用的功能。

(2)建立虛擬機器
為虛擬機器範本指定特定資訊(主機名稱、IP位址等等),建立虛擬機器的功能。

(3)虛擬機器的複製功能
複製已建立的虛擬機器的功能。


硬體虛擬化之後,可以用這些功能快速構築新伺服器。但是實際構築整個基礎架構時,仍有不少力不從心的地方,例如:

(A)範本單純是OS層級的虛擬化映像,設定OS上的軟體堆疊等系統建立過程,要另外執行。

(B)範本很接近磁碟映像檔,因此難以當成重組新系統的元素。

(C)虛擬映像的部署對象必須先配置好硬體。比如說,尋找哪台伺服器還有多餘資源等等,需要分別管理各實體伺服器執行的虛擬機器。

除此之外,從建構系統的觀點來看,還需要進行網路設定等等,但目前還沒有產品提供相關功能,這是因為目前的虛擬化軟體尚未完全考慮到「建構雲端基礎架構」這種應用方式的關係。

另一方面,因為美國有許多提供雲端環境的業者,也有一些專門用來構築基礎架構的產品,而且這類產品也已經有不少用戶,接下來要介紹其中最有名的3tera Applogic。

Applogic
美國3tera公司以加州為據點,在2004年創立,目前已將軟體授權給英國British Telecom等上百間企業使用,也有合作企業提供寄存(代管)服務。

Applogic可說是雲端OS的核心,雲端OS是一般的OS加上複數節點的 CPU、記憶體等資源的統合管理介面,可以建構不依存節點的分散檔案系統。Applogic是把複數節點整合管理的產品,跟以往虛擬化產品只能管理單一主機、執行部署作業有很大差異。Apploogic可以定義系統整體架構之後,一次建構整個系統,因此能更快速地提供系統。

此外也能設定包含網路在內的配置資訊,虛擬機器映像也考慮到重複使用的情形,能為廣範圍的系統環境虛擬化,提供更高效率的建構功能。

圖8.17是Applogic提供的功能與架構圖,功能主要分為下列三大部分。

(1)硬體網格功能
Applogic 能把其下管理的複數節點資源,透過硬體網格整合管理。以管理工具設定想建立的系統環境(應用程式)之後,即可自動在網格限制範圍內的機器上分散執行。

(2)Applogic Distributed Kernel
將設定檔定義的整個系統(應用程式)自動分散配置,提供執行機制。例如它可以為虛擬機器的映像(稱為「appliance」)之間,提供虛擬網路連線,以及提昇耐障礙能力的分散式檔案系統。

(3)管理功能
系統整體(應用程式)的設定工作可透過圖形介面完成,同時也有儲存庫。設定檔交給Applogic Distributed Kernel即可執行,Applogic整體的死活管理、執行狀況可透過管理介面統一掌控。


以往的虛擬化技術,部署對象只有包含OS的映像檔,像是OS的參數、Web 伺服器與DB伺服器的設定,都必須另外管理。因此,虛擬化映像檔需要為執行環境(CPU數量、執行環境等等)準備個別版本才行。

相對之下,Applogic提供針對appliance這種虛擬機器映像檔提供外部淹數的功能,因此可以根據CPU數量與記憶體,執行時動態指定Web、DB連線數與OS共享記憶體大小等細部設定,讓appliance易於重複使用。

藉著虛擬化技術,以單機節點快速建構環境的技術,已經達到一定程度,但是迅速提供雲端運算整體架構的技術,仍在發展中。像Applogic這種容易建構整體系統的產品,是大家都在等待的東西。(摘錄整理自第八章)

雲端上的生態系統

雲端不只改變了業界結構, 也大幅改變了技術與架構的潮流,關鍵詞是分散處理。

進入2000年代之後,電腦單機的性能提升幅度遇到了瓶頸。在1990年代裡,處理器性能的主要指標「頻率」年年不斷上升,但是以Intel公司製造的處理器而言,最高頻率的紀錄是2004年11月推出的Pentium 4所達到的3.8GHz,在那之後,紀錄就沒有繼續更新。2009年3月的高階處理器Core i7,最高運作頻率只有3.2 GHz。

當然,以Core i7而言,已經把當年Pentium 4的單一核心擴展到四核心。有為多核心運作實施多執行緒設計的程式,在多核心晶片上的性能會比傳統晶片好。但是沒有設計成多核心、或者是難以設計成多核心的程式還有不少,多核心處理器難以發揮實力也是事實。

硬碟也是電腦單機性能停止提升的零件之一。3.5吋硬碟的轉速在2000年2 月達到15,000rpm( 每分鐘轉數),但桌上型電腦的3.5吋硬碟主流仍是7,200rpm,筆記型電腦的2.5吋則還在5,400~7,200rpm,更小型的1.8吋硬碟主流仍是4,200rpm。硬碟的容量還在猛烈成長,但讀取、寫入速度卻沒什麼進步。

這些硬體零件性能停止提升的狀況,導致在個人電腦上執行的軟體無法提升效能。Microsoft在2007年1月釋出的Windows Vista,不斷有使用者提出「反應遲鈍」之類的惡評,就是最典型的例子。以往 Windows 版本發售時,反應都會比較遲鈍,等到經過一兩年,電腦的效能提升之後,惡評才會淡化。但是Windows Vista在發售2年之後,「遲鈍」的評價卻沒有消失。

「高速」的原因是分散資料處理技術
雲端被重視的理由之一,是雲端提供的應用程式反應速度常常比桌面應用程式更快。

以Gmail來說,就算收件匣有超過1 GB的信件,依舊不到1秒就能完成全文搜尋。儘管Outlook 2007這類桌面的電子郵件程式也以建立索引、加快搜尋速度為賣點,但是搜尋速度完全比不上Gmail。Google Maps地圖服務的處理量、資料量太過龐大,不可能用一台電腦完成。使用者支持Google 相關應用的理由,不僅是因為它們免費而已。

雲端應用可以高速運作的原因在於,資料的儲存、處理工作分散在大量伺服器執行。以Google來說,資料是存放在Google File System(GFS)這種分散檔案系統上,GFS會把檔案切成64 MB的區塊(chunk),分散到許多台伺服器上存放。在讀取或儲存的時候,都能讓多台伺服器分散、同時執行動作,讓整個檔案讀寫的速度加快不少。

GFS會把1個chunk複製2份以上,存放在不同的伺服器。有人提出Google擁有高達3百萬台的伺服器,在處理某個動作的時候,資料中心發生某台機器故障的機率也跟著提高,即使故障的機器上面的chunk消失了,也能透過最初建立的複本讀回資料。

Google為了高速處理透過GFS分散存放的資料,獨自開發MapReduce這套中介軟體。存放資料的GFS及處理資料的MapReduce,共同支撐Google的雲端架構。

大規模分散資料處理技術,與傳統資料處理技術的核心「關聯式資料庫」(RDBMS)大相逕庭。Google App Engine的資料庫BigTable、Amazon提供的資料庫服務Simple DB、Microsoft 的SQL Data Service都不屬於 RDBMS。這些系統都不像RDBMS把資料切成欄位、存放在表格裡,而是以key(名稱)與value(值)的形式儲存,因此稱為key-value data store(鍵值資料庫)。

Key-value的資料庫能輕易根據key,把資料分散到許多台伺服器上,所以適於分散處理。與RDBMS相較之下,結構比較單純,因此讀寫資料的速度也比較快,因為它不像RDBMS需要處理索引或是獨占鎖定。

從ACID到BASE
隨著雲端的發展,資料處理的潮流也從集中處理邁向分散處理、從RDBMS變成key-value資料庫。但是有幾個必須注意的地方,其中之一,是在分散處理的世界裡,難以維持RDBMS的前提——ACID特性。

ACID指的是Atomicity(原子性)、Consistency(一致性)、Isolation(獨立性)、Durability(永續性)的縮寫。一般的RDBMS 系統上,通常具備下面這些特質:處理動作只有「結束」與「未執行」兩種狀態(沒有中間狀態),即為「原子性」;資料沒有矛盾情形(一致性);動作之間沒有相依關係(獨立性);就算系統發生障礙,處理結果也能完整保留(永續性)。

但是分散資料處理則難以保持一致性。比如說,大多數的分散資料處理技術,都會把資料複製起來存放,並只對其中一份執行更新動作,更新結果也不會立刻反應到其他複本上。如果在同步之前,存放更新結果的伺服器離線,就只會留下更新之前的資料。

在分散資料處理的世界裡,要完全解決一致性的問題是很困難的。加州大學柏克萊分校(UC Berkeley)的Eric Brewer教授在2000 年發表了CAP定理,指出在分散資料處理時,資料一致性(Consistency)、系統可用性(Availability)與分散程度(Partition)三者之中,最多只能同時實現兩者。

雲端重視可用性與分散性,所以有犧牲一致性的傾向。

而在最近出現BASE 這個新的思考方式。BASE是Basically Available(可用性優先)、Soft-state(靈活的狀態)、Eventually consistency(最終結果一致)的縮寫。以可用性(Availability)為優先,盡量延緩系統同步(Softstate),所有資料的複本終究(Eventually)會同步,讓系統整體成為一致的狀態(Consistency),這種處理資料的方式就是BASE。

像銀行交易系統這類需要嚴密一致性的系統,今後應該仍會繼續使用ACID的思考方式。然而,世界上並不是所有的資料都需要銀行交易系統這樣的一致性。在雲端的世界裡,大規模處理、高速處理、廉價處理是比資料一致性更值得追尋的目標,也因此才會有BASE這樣的資料處理新觀念。

隨著雲端運算技術受到重視,技術面應該也會有很大的轉變。開發者、系統管理者該如何掌握雲端的技術元素、評估哪些應用適合在雲端環境上實現,相信會是未來需要慎重研究的課題。(摘錄整理自第一章)


雲端運算大解密

日經BP研究團隊/著;鄧瑋敦/譯
PCUSER電腦人出版
售價:520元

《作者簡介》

第一章作者:中田敦
日經BP社 日經電腦雜誌編輯
第八章作者:西片公一
野村綜合研究所股份有限公司 基礎技術部 上級工程師

熱門新聞

Advertisement