雲端計算架構

xigongdaacm發表於2018-05-13

雲端計算架構

分類: OpenStack&雲端計算架構 3580人閱讀 評論(0) 收藏 舉報

目錄(?)[+]

一、雲端計算概述

    雲端計算到底是什麼呢?在這個問題上,可謂眾說紛紜。比如,在維基百科上的定義是“雲端計算是一種基於網際網路的計算新方式,通過網際網路上異構、自治的服務為個人和企業使用者提供按需即取的計算”;著名諮詢機構 Gartner 將雲端計算定義為“雲端計算是利用網際網路技術來將龐大且可伸縮的IT能力集合起來作為服務提供給多個客戶的技術”;而 IBM 則認為“雲端計算是一種新興的IT服務交付方式,應用、資料和計算資源能夠通過網路作為標準服務在靈活的價格下快速地提供終端使用者”。
    雖然這幾個定義都有一定的道理,但在我看來還沒抓住雲端計算的核心,在我眼中, 雲端計算應該有如圖 1-1 ,雲端計算是新一代IT模式,它能在後端龐大的雲端計算中心的支撐下能為使用者提供更方便的體驗和更低廉的成本。


    具體而言,由於在後端有規模龐大、非常自動化和高可靠性的雲端計算中心的存在,人們只要接入網際網路,就能非常方便地訪問各種基於雲的應用和資訊, 並免去了 安裝和維護等繁瑣操作,同時,企業和個人也能以低廉的價格來使用這些由雲端計算中心提供的服務或者在雲中直接搭建其所需的資訊服務。在收費模式上,雲端計算和 水電等公用事業非常類似,使用者只需為其所使用的部分付費。對雲端計算的使用者(主要是個人使用者和企業)來講,雲端計算將會在使用者體驗和成本這兩方面給他們帶來 很多非常實在的好處。 

1、雲端計算的特點

    (1)超大規模:大多數雲端計算中心都具有相當的規模,比如, Google雲端計算中心已經擁有幾百萬臺伺服器, 而Amazon 、IBM 、微軟、Yahoo等企業所掌控的雲端計算規模也毫不遜色,並且雲端計算中心能通過整合和管理這些數目龐大的計算機叢集來賦予使用者前所未有的計算和儲存能力。
    (2)抽象化:雲端計算支援使用者在任意位置、使用各種終端獲取應用服務,所請求的資源都來自“雲”,而不是固定的有形的實體。應用在“雲”中某處執行,但實際上使用者無需瞭解、也不用擔心應用執行的具體位置,這樣能有效地簡化了應用的使用。
    (3)高可靠性:在這方面,雲端計算中心在軟硬體層面採用了諸如資料多副本容錯、心跳檢測和計算節點同構可互換等措施來保障服務的高可靠性,還在設施層面上的能源、製冷和網路連線等方面採用了冗餘設計來進一步確保服務的可靠性。
    (4)通用性:雲端計算中心很少為特定的應用存在,但其有效支援業界大多數的主流應用,並且一個“雲”可以支撐多個不同型別應用的同時執行,並保證這些服務的執行質量。
    (5)高可擴充套件性:使用者所使用“雲”的資源可以根據其應用的需要進行調整和動態伸縮,並且再加上前面所提到的雲端計算中心本身的超大規模,使得“雲”能有效地滿足應用和使用者大規模增長的需要。
    (6)按需服務:“雲”是一個龐大的資源池,使用者可以按需購買,就象自來水、電和煤氣等公用事業那樣根據使用者的使用量計費,並無需任何軟硬體和設施等方面的前期投入。
    (7)廉價:首先,由於雲端計算中心本身巨大規模所帶來的經濟性和資源利用率的提升,其次,“雲”大都採用廉價和通用的 X86 節點來構建,因此使用者可以充分享受雲端計算所帶來的低成本優勢,經常只要花費幾百美元就能完成以前需要數萬美元才能完成的任務。
    (8)自動化:雲中不論是應用、服務和資源的部署,還是軟硬體的管理,都主要通過自動化的方式來執行和管理,從而極大地降低整個雲端計算中心龐大的人力成本。
    (9)節能環保:雲端計算技術能將許許多多分散在低利用率伺服器上的工作負載整合到雲中,來提升資源的使用效率,而且雲由專業管理團隊運維,所以其PUE(Power Usage Effectiveness ,電源使用效率值)值和普通企業的資料中心相比出色很多,比如, Google資料中心的PUE值在 1.2 左右,也就是說,每一塊錢的電力花在計算資源上,只需再花兩角錢電力在製冷等裝置,而常見的PUE在2和3之間,並且還能將雲建設在水電廠等潔淨資源旁邊,這樣既能進一步節省能源方面開支,又能保護了環境。
    (10)完善的運維機制:在“雲”的另一端,有全世界最專業的團隊來幫使用者管理資訊,有全世界最先進的資料中心來幫使用者儲存資料。同時,嚴格的許可權管理策略可以保證這些資料的安全。這樣,使用者無需花費重金就可以享受到最專業的服務。
    由於這些特點的存在,使得雲端計算能為使用者提供更方便的體驗和更低廉的成本,同時這些特點也是為什麼雲端計算能脫穎而出,並且能被大多數業界人員所推崇的原因之一。

2、雲端計算的影響

    雖然雲端計算最初只是由IBM和Google這兩家公司所主導的,但是就像圖1-4所示那樣雲端計算將會對整個IT產業帶來非常深遠的影響,其中包括伺服器供應商、軟體開發商和雲終端供應商這三個雲端計算建設者和作為雲端計算運維者的雲供應商。


    (1)伺服器供應商的角度
    這型別的公司主要包括IBM、HP、Dell和Cisco等。主要有兩個方面的變化:其一,是需求方面的變化,雖然中小企業會不斷地加大對IT技術使用,但由於它們將會把雲服務作為首選,所以對伺服器供應商而言,來自中小企業的訂單將會不斷的減少,但來自雲供應商的訂單則會大量的增加;其二,是 產品方面的變化,由於大型雲端計算中心,對硬體有自己一套的設計和想法,所以會希望伺服器供應商能生產為它們定製的硬體,這導致伺服器供應商他們整體產品的方向將會從原先的以生產通用的x86伺服器為主,轉變為通用和定製兼顧,而且為雲端計算做優化的解決方案將受到極大歡迎。雖然雲端計算將會對部分非常依賴中小企業的硬體廠商帶來非常不利的影響, 但是從長期而言,對那些不斷創新,並且提出非常優秀的雲端計算解決方案的硬體廠商,將會脫穎而出,並從雲端計算大潮中獲利豐厚。

    (2)軟體開發商的角度
    最典型的公司有微軟、Red Hat 、Oracle和VMware等。主要有三方面的變化:首先,在軟體交付方式上的變化,由於虛擬器件(Virtual Appliance)等軟體釋出格式的引入,使得不僅軟體的開發,維護和銷售等方面的成本和複雜度得到了降低,而且也加快了軟體部署的速度;其次,在軟體銷售和釋出方式上的 變化,由於各種基於雲的軟體釋出平臺(比如蘋果的App Store 、中國移動的Mobile Market和VMware Virtual Appliance Marketplace等)的出現,使得釋出、推廣和銷售軟體越來越簡單,而且成本更低。比如,和傳統軟體釋出前期需要大量資金支援不同的是,在蘋果的App Store上釋出軟體的成本基本為零,而且能直面超過5000萬iOS系統(包括iPhone 、iPod Touch和iPad)的使用者,同時這些使用者的消費能力也是非常強大的;最後,在技術上的變化,軟體將與雲技術進行深度地整合,比如,應用類的軟體,基本上都將選擇Web作為其首選的介面,而中介軟體和底層的系統軟體將會為執行在雲中做更多的優化。

    (3)雲終端供應商的角度
    這方面的公司有Apple、Nokia、三星和聯想等。由於移動裝置的輕便型,再加上效能的日漸提高和能方便地接入多種無線網路(比如 WIFI 和 3G 等),所以市場對移動裝置需求將與日俱增,而且將來雲終端將不會僅是手機、平板和筆記本這幾種移動裝置,而將會涉及社會的方方面面,比如電視和汽車等,所以在這方面會有非常大創新空間等待著這些公司。

    (4)雲供應商的角度
    相關的公司有國外的Amazon、Google和RackSpace等,國內的有中國移動和中國電信等。隨著雲端計算不斷推廣和被大眾所接受,使得雲端計算中心在運營的規模上會不斷地增大, 這將會給雲供應商帶來很多機會來降低其運營成本,並提升經營利潤,比如,將雲端計算中心建設在能源成本底的地方(比如電廠附近)或者建在製冷成本低的地方(比如天氣寒冷的地點)。而且由於執行的工作負載的規模非常龐大,將整體提高伺服器利用率。同時雲的業務都屬於非常穩定的,所以能給雲供應商帶來持久的現金流。

    (5)整個IT產業的角度
    不可否認,在短期內,由於產業結構的變化,雲端計算有可能將會給整個IT產業帶來一定程度的陣痛,但是從長期而言,雲端計算將會對整個IT產業帶來非常正面的影響,因為雲端計算將推動整個產業的進一步的優化佈局和專業分工,並且提供一個讓所有IT人不斷地創新的舞臺,最終,這些參與者會像之前大型機時代和PC時代那樣同心協力創造出一整套屬於雲端計算的產業鏈。

3、雲端計算的應用

    有些 IT 從業人員在談到雲端計算的時候,總是認為雲端計算只是廣告詞而已,實際的用處是非常有限。對於這種看法,我不以為然,因為不僅雲端計算的部分技術已經落地,而且雲端計算將在 IT 產業各個方面都有其用武之地,在這裡,選擇十個比較典型的應用場景來加以介紹。
    (1)IDC雲
    傳統IDC(Internet Data Center,網際網路資料中心)的服務已經無法滿足使用者的需求,使用者期望更強大、更方便和更靈活的IDC服務。IDC雲是在IDC原有資料中心的基礎上,加入更多雲的基因,比如系統虛擬化技術、自動化管理技術和智慧的能源監控技術等。通過IDC的雲平臺,使用者能夠使用到虛擬機器和儲存等資源。還有,IDC可通過引入新的雲技術來提供許多新的具有一定附加值的服務,比如,PaaS等。現在已成型的IDC雲有Linode和Rackspace等。
    (2)企業雲
    對任何大中型企業而言, 80%的IT資源都用於維護現有應用的,而不是讓IT更好地為業務服務。使用專業的企業雲解決方案來提升企業內部資料中心的自動化管理程度,將整個 IT 服務的思維從過去的軟硬體思維轉變為以提供服務為主,使得IT人員能分出精力來為業務創新,成為半個業務人員。企業雲對於那些需要提升內部資料中心的運維水平和希望能使整個IT服務更圍繞業務展開的大中型企業非常適合。相關的產品和解決方案有IBM的WebSphere CloudBurst Appliance、Cisco的UCS和VMware的vSphere等。企業自己使用的雲也稱為私有云,位於公司防火牆之內,由組織自己管理。它們是在企業內部建立和控制的雲服務。私有云具有許多與公有云相同的優點,主要差異在於您的組織負責建立和維護雲。公有云是供一般公眾或大型行業組織使用的雲,由銷售雲服務的組織擁有和供應。公有云被看作一般意義上的雲;也就是說,離站的第三方提供商使用web應用程式通過Internet動態地供應資源,它們提供共享的資源並按使用量收費。
    (3)雲端儲存系統
    由於資料是企業的非常重要的資產和財富,所以需要對資料進行有效的儲存和管理,而且普通的個人使用者也需要大量的儲存空間用於儲存大量的個人資料和資料,但由於本地儲存在管理方面缺失,使得資料的丟失率非常高。而云儲存系統能解決上面提到這些問題,它是通過整合網路中多種儲存裝置來對外提供雲端儲存服務,並能管理資料的儲存、備份、複製和存檔,還有,良好的使用者介面和強大的API支援也是不可或缺的。雲端儲存系統非常適合那些需要管理和儲存海量資料的企業,比如網際網路企業,電信公司等,還有廣大的網民。相關的產品有中國電信的E雲、 Amazon的S3雲端儲存服務、 Google的Picasa相簿和微軟的SkyDrive網路硬碟等。

    (4)虛擬桌面雲
    對許多企業而言,桌面系統的安裝、配置和維護都是其IT運營非常重要的一個方面,桌面系統的分散管理將給整個IT部門帶來沉重的壓力,而且相關的資料和資訊保安不能受到有效地監控,同時企業更希望能將降低終端桌面系統的整體成本,並且使用起來更穩定和靈活。虛擬桌面雲是這方面一個非常不錯的解決方案,其是利用了現在成熟的桌面虛擬化技術。桌面虛擬化技術是將使用者的桌面環境與其使用的終端進行解耦,在伺服器端以虛擬映象的形式統一存放和執行每個使用者的桌面環境,而使用者則可通過小型的終端裝置來訪問其桌面環境。另外,系統管理員可以統一地管理使用者在伺服器端的桌面環境, 比如安裝、升級和配置相應地軟體等。這個解決方案比較適合那些需要使用大量桌面系統的企業。相關的產品有Citrix的Xen Desktop和VMware的VMware view。

    (5)開發測試雲
    開發測試總是繁瑣、易錯和耗時的過程,特別是在準備測試環境上面,還有會遇到諸如測試資源管理混亂,難於重現問題發生的環境和缺乏壓力測試所需要的強大計算能力等棘手問題。而開發測試雲能有效解決上面這些問題,其通過友好的Web介面,可以預約、部署、管理和回收整個開發測試的環境,通過預先配置好(包括作業系統,中介軟體和開發測試軟體)的虛擬映象來快速地構建一個個異構的開發測試環境,通過快速備份/恢復等虛擬化技術來重現問題,並利用雲的強大的計算能力來對應用進行壓力測試,比較適合那些需要開發和測試多種應用的組織和企業,比如銀行、電信和政府等。相關解決方案有IBM Smart Business Development and Test Cloud 。
    (6)大規模資料處理雲
    企業需要分析大量的資料來洞察業務發展的趨勢,可能的商業機會和存在的問題,從而做出更好、更快和更全面的決策。還有,物聯網會採集海量需要處理的資料。大規模資料處理雲通過將資料處理軟體和服務執行在雲端計算平臺上,能利用雲平臺的計算能力和儲存能力來對海量的資料進行大規模的處理,除了上面提到的物聯網之外,還有許多企業和機構都會有這方面的需求。相關產品有Apache的Hadoop等。
    (7)協作雲
    電子郵件、IM(Instant Messaging,即時通訊)、SNS (Social Networking Services ,社交網路服務)和通訊工具(比如Skype和WebEx)等都是很多企業和個人必備的協作工具,但是維護這些軟體和其硬體卻是一件讓人非常頭疼的工作。協作雲是雲供應商在IDC雲的基礎上或者直接構建一個專屬的雲,並在這個雲搭建整套的協作軟體,並將這些軟體共享給使用者,非常適合那些需要一定的協作工具,但不希望維護相關的軟硬體和支付高昂的軟體許可證費用的企業與個人。這方面,最具代表性的產品莫過於IBM的 LotusLive ,它主要包括會議、辦公協作和電子郵件這三大服務。當然Google Apps也是不容忽視的,其中Gmail和Gtalk都是協作的利器。
    (8)遊戲雲
    由於傳統遊戲軟體容量都非常巨大,無論是單機,還是網遊,都需要在遊戲之前,花很多時間在下載和安裝上,使玩家無法很盡興地玩遊戲,再加上游戲的購置成本偏高,使得玩家在嘗試新遊戲方面,興趣驟降。在這方面,業界部分公司推出了遊戲雲的解決方案,主要有兩大類:其一是使用更多基於Web的遊戲模式,比如使用JavaScript 、Flash 和Silverlight等技術,並將這些遊戲部署到雲中,這種解決方案比較適合休閒遊戲;其二是為大容量和高畫質的專業遊戲設計的,整個遊戲都將在執行雲中,但會將最新生成的畫面傳至客戶端。總之,休閒玩家和專業玩家都會在遊戲雲找到自己的所愛。在產品方面:第一種遊戲雲,已經有很多遊戲都採用這種方案,比如許多Facebook上的休閒遊戲採用了後端雲和前端Flash這樣的組合;而第二種遊戲雲,AMD已經發布了類似的技術,但礙於現有的網路環境,所以短時間內不會有特別成熟技術出現。
    (9)HPC雲
    在科學方面HPC(High Performance Computing,高效能運算)領域,現在主要有兩方面挑戰:其一是供需不平衡,要麼是現有的HPC資源太過稀少,無法滿足大眾的需求,要麼就是貧富不均,導致HPC資源無法被合理的分配;其二是現有的HPC設計和需求不符,雖然HPC已經發展了很多年,但是在設計還是將所有的計算資源整合在一起以追求極致速度為主,但是現在的主流需求則常以只需要一小塊計算資源為主,這導致HPC計算資源被極大地浪費,所以新一代的高效能運算中心不僅僅需要提供傳統的高效能運算,而且還需要增加資源的管理、使用者的管理、虛擬化的管理、動態的資源產生和回收等等。這時,基於雲端計算的高效能運算應運而生,也就是HPC雲,其能夠為使用者提供可以完全定製的高效能運算環境,使用者可以根據自己的需求來改變計算環境的作業系統、軟體版本和節點規模,從而避免與其他使用者的衝突, 並可以成為網格計算的支撐平臺,以提升計算的靈活性和便捷性。HPC雲特別適合需要使用高效能運算,但缺乏巨資投入的普通企業和學校。北京工業大學已經和IBM合作建設國內第一個HPC雲端計算中心。
    (10)雲防毒
    新型病毒的不斷湧現,使得防毒軟體的病毒特徵庫的大小與日俱增,如果在安裝防毒軟體的時候,附帶安裝龐大的病毒特徵庫的話,將會影響使用者的體驗,而且防毒軟體本身的執行也會極大地消耗系統的資源。通過雲防毒技術,防毒軟體可以將有嫌疑的資料上傳到雲中,並通過雲中龐大的特徵庫和強大的處理能力來分析這個資料是否含有病毒,這非常適合那些需要使用防毒軟體來捍衛其電腦安全的使用者。現有的防毒軟體都支援一定的雲防毒這個特性,比如360防毒和金山毒霸等。

二、雲端計算的架構

    在對雲端計算進行了三年多的研究之後,覺得雖然雲端計算涉及了很多產品與技術,表面上看起來的確有點紛繁複雜,但是雲端計算本身還是有跡可循和有理可依的,所以在個人理解的基礎上,我總結出了一套雲端計算的架構,具體請看圖 2-1 。


    上面這個雲架構共分為服務和管理這兩大部分。

    在服務方面,主要以提供使用者基於雲的各種服務為主,共包含三個層次:其一是Software as a Service軟體即服務,簡稱SaaS,這層的作用是將應用主要以基於Web的方式提供給客戶;其二是Platform as a Service平臺即服務,簡稱PaaS,這層的作用是將一個應用的開發和部署平臺作為服務提供給使用者;其三是Infrastructure as a Service基礎架構即服務,簡稱IaaS,這層的作用是將各種底層的計算(比如虛擬機器)和儲存等資源作為服務提供給使用者。從使用者角度而言,這三層服務,它們之間關係是獨立的,因為它們提供的服務是完全不同的,而且面對的使用者也不盡相同。但從技術角度而言,雲服務這三層之間的關係並不是獨立的,而是有一定依賴關係的,比如一個SaaS層的產品和服務不僅需要使用到SaaS層本身的技術,而且還依賴PaaS層所提供的開發和部署平臺或者直接部署於IaaS層所提供的計算資源上,還有,PaaS層的產品和服務也很有可能構建於IaaS層服務之上。
    在管理方面,主要以雲的管理層為主,它的功能是確保整個雲端計算中心能夠安全和穩定的執行,並且能夠被有效地管理。

1、軟體即服務SaaS

    軟體即服務(SaaS)為商用軟體提供基於網路的訪問。您有可能已經使用過SaaS,即使您當時並不知道。SaaS的示例太多了,例如Netflix、Photoshop.com、Acrobat.com、Intuit QuickBooks Online、Gmail、Google Docs、Office Web Apps、Zoho、WebQQ、新浪微盤等等。可能不太明顯的SaaS實現包括移動應用程式市場中的相當一部分。

    SaaS為企業提供一種降低軟體使用成本的方法 — 按需使用軟體而不是為每臺計算機購買許可證。尤其是考慮到大多數計算機在差不多70%的時間是空閒的,SaaS可能非常有效。企業不必為單一使用者購買多個許可證,而是讓許可證的使用時間儘可能接近100%,從而儘可能節省成本。

1.1 SaaS的優勢

    SaaS 給軟體廠商提供了新的機會。尤其是,SaaS軟體廠商可以通過四個因素提高 ROI(投資回報):提高部署的速度、增加使用者接受率、減少支援的需要、降低實現和升級的成本。
    (1)提高部署的速度
    在過去,部署傳統的桌面應用程式需要很大的工作量。實際上,我曾經多次聽到桌面應用程式開發人員把更新他們的應用程式稱為 “部署噩夢”。正如Tariq Ahmed在Flex 4 in Action (Manning Press) 的第1章中指出的,“要想讓數千甚至數萬客戶機同時執行軟體的某一版本,後勤方面的複雜性是非常高的。”
    Ahmed說,複雜性這麼高,以致於大多數桌面軟體開發公司甚至認為這根本不合理或不可行。過去受到這個問題困擾的開發商應該考慮部署軟體的SaaS版本。但是,妨礙傳統軟體開發公司進入SaaS市場的最大障礙是讓桌面應用程式能夠作為SaaS應用程式執行。在許多情況下,這需要在某種程度上重新編寫軟體,一些公司覺得這麼做成本太高。
    這正是向雲端計算轉移的過程比較緩慢且平緩的主要原因之一。在大多數情況下,符合邏輯的解決方案是分階段地把軟體轉移到雲中,首先以SaaS的形式提供原應用程式的高度簡化的版本。考慮到開發商對版本控制的控制水平,這麼做是很合理的。在這裡,分析一下SaaS的特點會很有幫助。
    您可以看出在雲端計算與過去的 “LAN 計算” 之間有許多相似之處。典型的LAN架構由站內的許多工作站組成,它們常常被稱為啞終端,它們通過連線強大的大型機(常常由IBM 提供)執行應用程式。這種計算型別過去非常適合企業,因 IT部門能夠完全控制版本,可以非常方便地多次部署更新。同樣,過去妨礙桌面軟體應用程式開發商進行版本控制的後勤障礙在雲中也不存在,因為軟體在開發公司能夠直接訪問的基礎設施上執行。
    考慮到SaaS必須能夠服務的客戶機數量,SaaS基礎設施的規模要比LAN大得多。但是底層的概念是相同的。大型機能夠駐留足夠多的軟體例項,從而為本地網路中連線它的所有客戶機提供服務;而云由許多不同的計算機資源組成,它們共同提供計算能力,從而執行為世界各地的客戶機提供服務所需的許多軟體例項。 

    (2)增加接受率
    如果您走出企業,看看SaaS對於一般消費者的意義,就會發現以前一些軟體的許可證費用太高,而現在SaaS讓一般消費者能夠以合理的價格使用它們。一個好例子是 Adobe 以SaaS的形式提供Adobe Photoshop。儘管這項工作是Adobe正在做的試驗,但是已經取得了一些效果。例如,我注意到在需要執行簡單的照片編輯任務時,在我的朋友和家庭成員中越來越多的人開始使用Photoshop.com進行基本的照片編輯,而不是啟動全功能的版本。出現這種趨勢的原因是,不需要完整版本中的功能的人現在可以省錢。與此同時,過去不使用Photoshop的人也開始使用Photoshop.com了,這給Adobe帶來了爭取新的長期客戶的機會,擴大了潛在客戶的範圍。
    SaaS提供的多種業務模型尤其有吸引力。例如,Intuit 以SaaS的形式提供QuickBooks Online,按月收取服務費。作為經常旅行的企業主,我發現這種服務非常有用,尤其是因為我的業務夥伴住在400英里外的另一個州里。同時,Adobe在Photoshop.com和Acrobat.com中應用了SaaS,以freemium服務的形式提供軟體 — freemium服務是指一種基於許可證軟體產品的SaaS縮略版的業務模型。
    freemium SaaS基於的收入模型是,預計免費使用者中的一部分最終會覺得軟體很有用,他們會升級到啟用了更多特性的SaaS付費版本,或者購買包含所有特性和功能的桌面版本的許可證。這種方法往往比通過 “受限制的演示” 模式試用軟體更好,因為演示模式要求使用者在桌面計算機上安裝他們可能不會購買的應用程式。另外,如果免費使用者中升級的比例低於預期,還可以通過廣告進一步補充這個模型。隨著雲端計算的發展,傳統的桌面軟體廠商經常使用這種方法適應市場的變化。
    (3)減少支援的需要
    大型客戶服務中心的成本很高,不得不支援多種平臺會導致支援問題增加,而SaaS可以大大緩解這些難題。首先,部署的簡便性讓開發人員能夠在發現bug之後很快進行修復,這意味著大多數bug可以在大量使用者遇到它們之前被修復,這會減少客戶支援部門接到的電話數量,提高客戶滿意度,降低客戶流失的可能性。
    另外,傳統桌面軟體應用程式的開發商常常必須支援多種平臺。例如,開發商可能必須支援Windows 7和Apple Mac OS X 10.6作業系統,新增對第二種作業系統的支援差不多會讓開發成本加倍;而且,如果支援這些作業系統的許多不同版本,問題會更多。支援作業系統的多個版本還會產生限制。
    例如,如果您要構建一個在Windows 7上執行的程式,但是它必須與Windows XP相容,就必須非常小心,要確保特性和功能在這兩個版本上都能夠執行;否則,就必須把專案分為兩個分支,為每個版本開發單獨的程式碼,這會不可避免地降低生產力和效率,延長完成專案的預期時間。讓業務執行官心跳加速的最快方法之一是,告訴他後兩年的預期開發進度要減慢一半兒。另外,支援不同的作業系統和這些作業系統的不同版本會增加預算;這個問題和其他因素導致目前軟體開發專案的失敗率非常高。
    (4)降低實現和升級的成本
    SaaS推動ROI的第四個因素與第一個因素有點兒相似。但是,部署的速度是指快速、簡便地部署應用程式更新所帶來的好處。與之相反,降低實現和升級的成本是指開發公司由於能夠控制版本和執行軟體的基礎設施所獲得的經濟利益。
    因為開發商可以控制執行軟體的平臺(平臺通常對於使用者完全透明),所以他們不必負擔在多個平臺上測試和部署bug補丁和新特性的額外開銷,這會節省大量資金。這讓SaaS應用程式的升級成本更低。節省的大量時間和資金讓開發商有機會更好地響應客戶的請求並增強易用性,從而提高客戶滿意度,降低客戶流失的可能性,這會帶來間接的經濟利益。

1.2 SaaS的使用者體驗設計

    SaaS 應用程式代表著一種新一代應用程式設計方式。儘管在我目前看到的文件中沒有明確地指出,但是看起來SaaS程式也帶來了一種新的UI設計方式,這種方式與大多數其他行業中的產品設計流程更一致。這種方式包含一個稱為使用者體驗設計 (UXD) 的流程,在這個流程中由產品團隊而不是開發團隊設計GUI。
    UXD的主要目的是,確定哪些特性會讓應用程式對於目標客戶最有價值,並在設計中融入這些知識。儘管對於是否應該在所有型別的軟體的開發中都執行這個流程有爭議,但是在SaaS應用程式開發中這種做法非常普遍。出現這種現象的原因可能是,SaaS可以實現的業務模型與傳統軟體不同,需要執行UXD;而且通過開發SaaS可以節省大量時間和資金,讓開發商有能力執行UXD。

1.3 SaaS使用的技術

    由於SaaS層離普通使用者非常接近,所以在SaaS層所使用到的技術,大多耳熟能詳,下面是其中最主要的五種:
    (1)HTML :標準的Web頁面技術,現在主要以HTML4為主,但是即將推出的HTML5會在很多方面推動Web頁面的發展,比如視訊和本地儲存等方面。
    (2)JavaScript :一種用於Web頁面的動態語言,通過JavaScript ,能夠極大地豐富Web頁面的功能,最流行的JS框架有jQuery和Prototype 。
    (3)CSS :主要用於控制Web頁面的外觀,而且能使頁面的內容與其表現形式之間進行優雅地分離。
    (4)Flash :業界最常用的RIA(Rich Internet Applications)技術,能夠在現階段提供HTML等技術所無法提供的基於Web的富應用,而且在使用者體驗方面,非常不錯。
    (5)Silverlight :來自業界巨擎微軟的RIA技術,雖然其現在市場佔有率稍遜於Flash,但由於其可以使用C#來進行程式設計,所以對開發者非常友好。
    在SaaS層的技術選型上,首先,由於通用性和較低的學習成本,大多數雲端計算產品都會比較傾向HTML 、JavaScript和CSS這對黃金組合,但是在HTML5被大家廣泛接受之前,RIA技術在使用者體驗方面,還是具有一定的優勢,所以Flash和Silverlight也將會有一定的用武之地,比如VMware vCloud就採用了基於Flash的Flex技術,而微軟的雲端計算產品肯定會在今後大量使用Silverlight技術。

2、平臺即服務PaaS

   平臺即服務(Platform as a Service,PaaS)提供對作業系統和相關服務的訪問。它讓使用者能夠使用提供商支援的程式語言和工具把應用程式部署到雲中。使用者不必管理或控制底層基礎架構,而是控制部署的應用程式並在一定程度上控制應用程式駐留環境的配置。PaaS的提供者包括Google App Engine、Windows Azure、Force.com、Heroku等。小企業軟體工作室是非常適合使用PaaS的企業。通過使用雲平臺,可以建立世界級的產品,而不需要負擔內部生產的開銷。

    通過PaaS這種模式,使用者可以在一個提供SDK(Software Development Kit,即軟體開發工具包)、文件、測試環境和部署環境等在內的開發平臺上非常方便地編寫和部署應用,而且不論是在部署,還是在執行的時候,使用者都無需為伺服器、 作業系統、網路和儲存等資源的運維而操心,這些繁瑣的工作都由PaaS雲供應商負責。而且PaaS在整合率上面非常驚人,比如一臺執行Google App Engine的伺服器能夠支撐成千上萬的應用,也就是說, PaaS是非常經濟的。 PaaS主要面對的使用者是開發人員。

2.1 PaaS的優勢

    在軟體開發過程中,一些東西常常會出問題。以我的經驗,設定伺服器環境以駐留開發團隊要構建的Web應用程式可能會帶來許多爭吵。即使在最大的企業中,通常一位網路管理員要負責為幾個開發團隊服務。在不使用PaaS的情況下,設定開發或測試環境通常需要完成以下任務:
    * 獲取並部署伺服器。
    * 安裝作業系統、執行時環境、原始碼控制儲存庫和必需的所有其他中介軟體。
    * 配置作業系統、執行時環境、儲存庫和其他中介軟體。
    * 轉移或複製現有的程式碼。

    * 測試並執行程式碼以確保一切正常。
    在很多情況下,管理員已經非常忙了,所以讓他們抽出時間部署新環境會很困難。對於客戶機和伺服器端的web應用程式開發人員來說,另一個主要問題是在本地複製執行時環境以便執行測試。
    現在,想像一下您是使用PaaS的開發團隊的成員。在這種情況下,您會有一個虛擬機器 (VM),其中包含完整的伺服器環境,可以把它放在USB快閃記憶體驅動器中帶在身邊。這無疑是非常方便的。一般來說,和現有的基於本地的開發和部署環境相比,PaaS平臺主要有下面這六方面有非常大的優勢:
    (1)友好的開發環境:通過提供SDK和IDE(Integrated Development Environment ,整合開發環境)等工具來讓使用者不僅能在本地方便地進行應用的開發和測試,而且能進行遠端部署。
    (2)豐富的服務:PaaS平臺會以API的形式將各種各樣的服務提供給上層的應用。
    (3)精細的管理和監控:PaaS能夠提供應用層的管理和監控,比如能夠觀察應用執行的情況和具體數值(比如吞吐量Throughput和響應時間Response Time等)來更好地衡量應用的執行狀態,還有能夠通過精確計量應用使用所消耗的資源來更好地計費。
    (4)伸縮性強: PaaS 平臺會自動調整資源來幫助執行於其上的應用更好地應對突發流量。
    (5) 多租戶(Multi-Tenant)機制:許多PaaS平臺都自帶多租戶機制,不僅能更經濟地支撐龐大的使用者規模,而且能提供一定的可定製性以滿足使用者的特殊需求。
    (6)整合率和經濟性:PaaS平臺整合率是非常高,比如PaaS的代表Google App Engine能在一臺伺服器上承載成千上萬的應用。

2.2 PaaS的主要成分

    瞭解 PaaS 的最好方法可能是把它分解為主要元件:平臺和服務。現在,考慮提供的服務,這稱為解決方案堆。也就是說,PaaS 的兩個主要成分是計算平臺和解決方案堆。
    為了說明這兩個 “成分”,我們進一步研究一下它們的定義。按照最簡單的形式,計算平臺是指一個可以一致地啟動軟體的地方(只要程式碼滿足平臺的標準)。平臺的常見示例包括 Windows、Apple Mac OS X和Linux作業系統;用於移動計算的Google Android、Windows Mobile和Apple iOS;以及作為軟體框架的Adobe AIR和Microsoft .NET Framework。要記住的重點是,計算平臺不是指軟體本身,而是指構建並執行軟體的平臺。圖4提供一張示意圖以幫助理解這種關係。


圖2-2. 雲端計算分類與PaaS元素之間關係的圖形化解釋

    既然理解了計算平臺的概念,現在就來看看什麼是解決方案堆。解決方案堆由應用程式組成,這些應用程式有助於開發過程和應用程式部署。這些應用程式是指作業系統、執行時環境、原始碼控制儲存庫和必需的所有其他中介軟體。

2.3 PaaS供應商的選擇

    解決方案堆也反映不同PaaS公司的差異,在決定採用PaaS之前,需要深入考察各個提供商提供的解決方案堆。在與某家PaaS提供商簽約之前,您應該問幾個基本問題:
    * 它支援哪些框架和語言?理想情況下,PaaS應該支援基於此平臺選用的語言的任何框架。
    * 可以建立多少個應用程式?大多數PaaS提供商會根據您簽訂的計劃或服務包限制可以構建的應用程式數量。要確保提供商提供的計劃或服務包能夠滿足您的需要。
    * 允許哪些內容型別?支援PaaS的基礎設施通常涉及多租用者計算的概念,也就是說許多 “租用者” 分享單一伺服器上的 “空間”,這些空間由系統管理程式管理的VM例項分隔。PaaS提供商可能會對要駐留的應用程式和內容的型別加以限制。
    * 支援哪些資料庫型別?如果您的資料要隨應用程式轉移,這個問題就是非常重要的。必須確保提供商提供的資料庫與您想要用來匯入資料的格式相容。
    * 它是否支援SSL (HTTPS)?這個問題對於確保安全性非常重要。如果您打算通過應用程式處理事務,但是發現不支援SSL,您就遇到大麻煩了。
    在比較PaaS提供商時應該考慮的特性:應用程式開發框架、容易使用、業務流程建模(BPM)工具、可用性、可伸縮性、安全性、包容性、可移植性、移植工具、API等。

2.4 PaaS使用的技術

    PaaS 層的技術比較多樣性,下面是常見的五種:

    (1)REST :通過 REST(Representational State Transfer,表述性狀態轉移)技術,能夠非常方便和優雅地將中介軟體層所支撐的部分服務提供給呼叫者。
    (2)多租戶:就是能讓一個單獨的應用例項可以為多個組織服務,而且能保持良好的隔離性和安全性,並且通過這種技術,能有效地降低應用的購置和維護成本。
    (3)並行處理:為了處理海量的資料,需要利用龐大的x86叢集進行規模巨大的並行處理,Google的MapReduce是這方面的代表之作。
    (4)應用伺服器:在原有的應用伺服器的基礎上為雲端計算做了一定程度的優化,比如用於Google App Engine的Jetty應用伺服器。

    (5)分散式快取:通過分散式快取技術,不僅能有效地降低對後臺伺服器的壓力,而且還能加快相應的反應速度,最著名的分散式快取例子莫過於Memcached 。
    對於很多PaaS平臺,比如用於部署Ruby應用的Heroku雲平臺,應用伺服器和分散式快取都是必備的,同時REST技術也常用於對外的介面,多租戶技術則主要用於SaaS應用的後臺,比如用於支撐Salesforce 的CRM等應用的Force.com多租戶核心,而並行處理技術常被作為單獨的服務推出,比如Amazon的Elastic MapReduce 。

2.5 主要的PaaS產品

    (1)Force.com:Force.com是業界第一個PaaS平臺,其主要通過提供完善的開發環境和強健的基礎設施等來幫助企業和第三方供應商交付健壯的、可靠的和可伸縮的線上應用。還有, Force.com本身是基於Salesforce著名的多租戶的架構。
    (2)Google App Engine:Google App Engine提供Google的基礎設施來讓大家部署應用,它還提供一整套開發工具和SDK來加速應用的開發,並提供大量的免費額度來節省使用者的開支。
    (3)Windows Azure Platform :它是微軟推出的PaaS產品,並執行在微軟資料中心的伺服器和網路基礎設施上的,通過公共網際網路來對外提供服務,它由具有高擴充套件性雲作業系統、資料儲存網路和相關服務組成,而且服務都是通過物理或虛擬的Windows Server 2008例項提供。還有,其附帶的Windows Azure SDK(軟體開發包)提供了一整套開發、部署和管理Windows Azure雲服務所需要的工具和API 。
    (4)Heroku:是一個用於部署Ruby On Rails應用的PaaS平臺,並且其底層基於Amazon EC2 的IaaS服務,而且在Ruby程式設計師中有非常好的口碑。

3、基礎架構即服務IaaS

    基礎架構,或稱基礎設施(Infrastructure)是雲的基礎。它由伺服器、網路裝置、儲存磁碟等物理資產組成。在使用IaaS時,使用者並不實際控制底層基礎架構,而是控制作業系統、儲存和部署應用程式,還在有限的程度上控制網路元件的選擇。 

    通過IaaS這種模式,使用者可以從供應商那裡獲得他所需要的計算或者儲存等資源來裝載相關的應用,並只需為其所租用的那部分資源進行付費,而同時這些基礎設施繁瑣的管理工作則交給IaaS供應商來負責。

    IaaS的關鍵概念:
    * 雲爆發(cloud bursting)
    * 多租戶計算(multi-tenant computing)
    * 資源共用(resources pooling)
    * 虛擬機器監控程式(hypervisor)

    IaaS最與眾不同的兩個方面:可伸縮性和虛擬化(elasticity and virtualization)

    對於企業而言,IaaS的巨大價值通過雲爆發(cloudbursting)概念實現。雲爆發是指當業務瞬間增長,需要大量的計算資源時,將任務負載擴充套件到雲環境的過程。雲爆發促成的資本節約潛力巨大,因為企業無需額外投資利用率很低的伺服器,那些伺服器一年中只有兩三次使用 70% 的容量,其餘時間僅有 7-10% 的負荷。

3.1 從”基礎架構即資產“到”基礎架構即服務”

    在過去50年之內,大量成功的公司花費大量寶貴時間和資源來構建基礎架構,其目標是通過建立一個更大、更快、更強的網路來獲取戰勝其競爭對手的競爭優勢。IT 行業中的 “基礎架構即資產” 正規化擁有上世紀六七十年代的 “暴力跑車(muscle cars)” 所擁有的相同或類似的低效率和不利特徵。對於企業計算,這些低效率包括:
    * 大量未使用的計算能力和容量,它們耗費的成本與大型、昂貴的資料中心中的硬體消耗的大量空間相關聯。比如伺服器一年中可能只有兩三次使用70%的容量,其餘時間僅有7-10%的負荷。
    * 昂貴的人力資源需求,包括要求基礎架構資產(伺服器、路由器、交換機等)所在的資料中心的網路管理員進行24小時監控。
    * 旨在應對高水平能源浪費的Green Computing計劃的一個巨大障礙。
    IaaS標誌著從 “基礎架構即資產” 到 “基礎架構即服務” 的轉變。雲端計算的其他兩個類別也標誌著正規化轉變。對於Platform as a Service (PaaS),轉變來自 “平臺即資產” 正規化,該正規化的特徵是大量採購許可。同樣的轉變也適用Software as a Service (SaaS),這種轉變是從 “軟體以許可形式作為組織資產” 到 “軟體以服務形式提供”。

3.2 IaaS的主要特徵

    (1)可伸縮性

    可伸縮性是IaaS的首要關鍵特徵。為了闡述可伸縮的概念,我需要您展開想象。假設雲由一些粘在一起的棉花糖簇組成,這樣人們就可以坐在它們上面。每個棉花糖都能承載一定數量的人,具體取決於組成雲的棉花糖簇的數量和那些簇中包含的棉花糖的數量。隨著越來越多的人登上棉花糖雲,您可以通過貼上更多的棉花糖來擴充套件棉花糖簇,增加表面面積。您可能已經明白,人代表需要計算資源的應用程式,比如承載網站並執行軟體的資源。棉花糖簇代表VM叢集,每個棉花糖代表一 VM。
    儘管這聽起來有點像Seuss博士的書中可能出現的內容,但它提供了一種方法來理解許多黑魔法(dark art)考慮的一個概念:可伸縮的叢集(elastic clustering)。叢集化幾個物理伺服器來形成一個虛擬雲稱為雲叢集(cloud clustering),如果它真是一種黑魔法,則精通程度可以通過一位藝術家的系統設計的可伸縮性來衡量。
    我們來看一個例子。假設您是一位為美國政府工作的統計研究員。政府有點人手不足,您剛剛接受一個任務,需要編輯最近的美國人口統計的所有資料。您負責制定必要的統計資料,以便議會能夠制定關於經濟恢復資金分配和從現在起三天內的稅收金額的重要決策。毋庸諱言,這是一項非常重要的工作,您的時間有點緊張。而且,您必須處理的資料量簡直是個天文數字,您剛剛發現,編輯那些統計資料需要的計算資源需要IT部門三週時間才能準備好!
    這種問題正是您可以使用IaaS輕鬆緩解的。事實上,使用IaaS,您可以在一小時之內完成全美人口普查資料分析。您首先建立一個伺服器的單個例項,這個伺服器包含在資料上執行查詢需要的資料庫軟體。這個例項稱為一個映像。當您部署映像並將資料匯入資料庫之後,就可以根據需要複製那個映像任意多次,並開始執行您的資料處理任務。當任務執行時,您可以手動或自動新增和移除資源。例如,如果計算任務的執行速度不夠快,只需將更多機器例項副本新增到叢集。 

    (2)虛擬化

    IaaS很容易定位,因為它通常是獨立於平臺的。IaaS有一個硬體和軟體資源組合組成。IaaS軟體是低階程式碼,獨立於作業系統執行,例如虛擬機器監控程式。虛擬機器監控程式負責管理硬體資源的庫存並根據需要分配上述資源(見圖 2-3)。這個過程稱為資源共用(resource pooling)虛擬機器監控程式實現的資源共用使得虛擬化成為可能,虛擬化使多租戶計算(multi-tenant computing)成為可能。多租戶計算概念指由幾個組織共享的一個基礎架構,這些組織在安全需求和遵從性問題方面有類似的興趣。


圖2-3. VMs、虛擬機器監控程式和計算機之間的關係

    通過 IaaS,您擁有提供處理、儲存、網路和其他計算資源的能力,您可以在那裡部署和執行任意軟體,比如作業系統和應用程式。大多數雲端計算用例遵循您已經習慣的基礎分層結構:一個軟體解決方案堆疊或平臺被部署在一個網路基礎架構上,一些應用程式在那個平臺之上執行。但是,虛擬化使得雲正規化獨一無二。

3.3 IaaS的優勢

    IaaS服務和傳統的企業資料中心相比,在很多方面都存在一定的優勢,下面是最明顯的五個。
    (1)免維護:主要的維護工作都有IaaS雲供應商負責,所以不必使用者操心。
    (2)非常經濟:首先免去了使用者前期的硬體購置成本,而且由於IaaS雲大都採用虛擬化技術,所以在應用和伺服器的整合率普遍在10以上,這樣能有效降低使用成本。
    (3)開放標準:雖然很多IaaS平臺都存在一定的私有功能,但是由於OVF等應用釋出協議的誕生,使得IaaS在跨平臺方面穩步前進,從而使得應用能在多個IaaS雲上靈活的遷移,而不會被固定在某個企業資料中心內。
    (4)支援的應用:因為IaaS主要是提供虛擬機器,而且普通的虛擬機器能支援多種作業系統,所以IaaS所支援應用的範圍是非常廣泛的。
    (5)伸縮性強:IaaS雲只需幾分鐘就能提供使用者一個新的計算資源,而傳統的企業資料中心則往往需要幾周時間,並且計算資源可以根據使用者需求來調整其資源的大小。

3.4 IaaS使用的技術

    在IaaS所採用的技術方面,都是一些比較底層的技術,其中有四種技術是比較常用的:
    (1)虛擬化:也可以理解它為基礎設施層的“多租戶”,因為通過虛擬化技術,能夠在一個物理伺服器上生成多個虛擬機器,並且能在這些虛擬機器之間能實現全面的隔離, 這樣不僅能減低伺服器的購置成本,而且還能同時降低伺服器的運維成本,成熟的x86虛擬化技術有VMware的ESX和開源的Xen 。
    (2)分散式儲存:為了承載海量的資料,同時也要保證這些資料的可管理性,所以需要一整套分散式的儲存系統,在這方面, Google 的GFS是典範之作。
    (3)關係型資料庫:基本是在原有的關係型資料庫的基礎上做了擴充套件和管理等方面的優化,使其在雲中更適應。
    (4)NoSQL:為了滿足一些關聯式資料庫所無法滿足的目標,比如支撐海量的資料等,一些公司特地設計一批不是基於關係模型的資料庫,比如Google的BigTable和Facebook的Cassandra等。
    現在大多數的IaaS服務都是基於Xen的,比如Amazon的EC2等,但VMware也推出了基於ESX技術的vCloud ,同時業界也有幾個基於關係型資料庫的雲服務,比如Amazon 的RDS(Relational Database Service,關係型資料庫服務)和Windows Azure SDS(SQL Data Services, SQL資料庫服務)等。關於分散式儲存和NoSQL,它們已經被廣泛用於雲平臺的後端,比如Google App Engine的Datastore就是基於BigTable和GFS這兩個技術之上的,而Amazon則推出基於NoSQL技術的Simple DB 。

3.5 主要的IaaS產品

    最具代表性的IaaS產品有Amazon EC2、IBM Blue Cloud、Cisco UCS和Joyent。
    (1)Amazon EC2。EC2主要以提供不同規格的計算資源(也就是虛擬機器)為主。它基於著名的開源虛擬化技術Xen。通過Amazon的各種優化和創新, EC2不論在效能上還是在穩定性上都已經滿足企業級的需求。而且它還提供完善的API和Web管理介面來方便使用者使用。這種IaaS產品得到業界廣泛地認可和接受,其中就包括部分大型企業,比如著名的紐約時報。
    (2)IBM Blue Cloud。“藍雲”解決方案是由IBM雲端計算中心開發的業界第一個,同時也是在技術上比較領先的企業級雲端計算解決方案。該解決方案可以對企業現有的基礎架構進行整合,通過虛擬化技術和自動化管理技術來構建企業自己的雲端計算中心,並實現對企業硬體資源和軟體資源的統一管理、統一分配、統一部署、統一監控和統一備份,也打破了應用對資源的獨佔,從而幫助企業能享受到雲端計算所帶來的諸多優越性。
    (3)Cisco UCS。它是下一代資料中心平臺,在一個緊密結合的系統中整合了計算、網路、儲存與虛擬化功能。該系統包含一個低延時、無丟包和支援萬兆乙太網的統一網路陣列以及多臺企業級x86架構刀鋒伺服器等裝置,並在一個統一的管理域中管理所有資源。使用者可以通過在UCS上安裝VMWare vSphere來支撐多達幾千臺虛擬機器的執行。通過Cisco UCS,能夠讓企業快速在本地資料中心搭建基於虛擬化技術的雲環境。
    (4)Joyent。它提供基Open Solaris技術的IaaS服務。其IaaS服務中最核心的是Joyent SmartMachine。與大多數的IaaS服務不同的是,它並不是將底層硬體按照預計的額度直接分配給虛擬機器,而是維護了一個大的資源池,讓虛擬機器上層的應用直接呼叫資源,並且這個資源池也有公平排程的功能,這樣做的好處是優化資源的調配,並且易於應對流量突發情況,同時使用人員也無需過多關注作業系統級管理和運維。

    總結:

    為幫助您理解雲端計算的這三個類別,我建立了一個跨概念矩陣供您參考:

表 1. 三個雲端計算類別的跨概念矩陣

  範型轉變 特徵 關鍵詞彙 優點 缺點和風險 不應該使用的場合
基礎設施即服務 (IaaS) 基礎設施即資產 常常獨立於平臺;分擔基礎設施成本,因此會降低成本;服務水平協議 (SLA);按使用量付費;自我伸縮 網格計算,效用計算,計算例項,系統管理程式,暴雨 (cloudbursting),多租用者計算,資源池 避免在硬體和人力資源方面花費資產費用;降低 ROI 風險;降低進入門檻;簡化和自動化伸縮過程 企業效率和生產力很大程度上取決於廠商的能力;可能會增加長期成本;集中化需要新的/不同的安全措施 當資產預算大於運營預算時
平臺即服務 (PaaS) 許可證購買 消費雲基礎設施;能夠滿足敏捷的專案管理方法 解決方案堆 簡化的版本部署 集中化需要新的/不同的安全措施
SaaS 軟體即資產(企業和消費者) SLA;由 “瘦客戶機” 應用程式提供 UI;雲元件;通過 API 進行通訊;無狀態;鬆散耦合;模組化;語義性互操作能力 瘦客戶機;客戶機-伺服器應用程式 避免在軟體和開發資源方面花費資產費用;降低 ROI 風險;簡化和迭代式的更新 資料的集中化需要新的/不同的安全措施

三、雲管理層

    雖然和前面雲服務的3層相比,熟悉雲管理層的人非常少,但是它確實是雲最核心的部分,就好像一個公司離不開其董事會的管理一樣。與過去的資料中心相比,雲最大的優勢在於雲管理的優越性。雲管理層也是前面3層雲服務的基礎,併為這3層提供多種管理和維護等方面的功能和技術。如下圖所示,雲管理層共有9個模組,這9個模組可分為3層,它們分別是使用者層、機制層和檢測層。


1、使用者層

    顧名思義,這層主要面向使用雲的使用者,並通過多種功能來更好地為使用者服務,共包括4個模組:使用者管理、客戶支援、服務管理和計費管理。
    (1)使用者管理
    對於任何系統而言,對於使用者的管理都是必需的,雲也是如此。雲方面的使用者管理主要有3種功能。其一是賬號管理,包括對使用者身份及其訪問許可權進行有效地管理,還包括對使用者組的管理;其二是單點登入,英文為“Single Sign On”,其意義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統,這個機制可以極大地方便使用者在雲服務之間進行切換;其三是配置管理,對與使用者相關的配置資訊進行記錄、管理和跟蹤,配置資訊包括虛擬機器的部署、配置和應用的設定資訊等。
    (2)客戶支援
    好的使用者體驗對於雲而言也是非常關鍵的,所以幫助使用者解決疑難問題的客戶支援是必需的,並且需要建設一整套完善的客戶支援系統,以確保問題能按照其嚴重程度或者優先順序來依次進行解決,而不是一視同仁。這樣,能提升客戶支援的效率和效果。
    (3)計費管理
    利用底層監控系統所採集的資料來對每個使用者所使用的資源(比如所消耗CPU的時間和網路頻寬等)和服務(比如呼叫某個付費API的次數)進行統計,來準確地向使用者索取費用,並提供完善和詳細的報表。
    (4)服務管理
    大多數雲都在一定程度上遵守SOA(Service-Oriented Architecture,面向服務的架構)的設計規範。SOA的意思是將應用不同的功能拆分為多個服務,並通過定義良好的介面和契約來將這些服務連線起來,這樣做的好處是能使整個系統鬆耦合,從而使整個系統能夠通過不斷演化來更好地為客戶服務。而一個普通的雲也同樣由許許多多的服務組成,比如部署虛擬機器的服務、啟動或者關閉虛擬機器的服務等,而管理好這些服務對於雲而言是非常關鍵的。服務管理主要有下面這5個功能。
    * 管理介面。提供完善的關於服務的Web管理介面和API介面。
    * 自定義服務。能讓使用者對服務進行自定義和擴充套件。
    * 服務排程。配備強健的機制來負責服務的排程,以使服務能在合理的時間內被系統呼叫和處理。
    * 監控服務。利用底層的監控系統來觀測服務實際的執行情況。
    * 流程管理。提供一個工具來讓使用者將多個服務整合為一個流程,並對它進行管理以提升執行效率。

2、機制層

    這層主要提供各種用於管理雲的機制。通過這些機制,能讓雲端計算中心內部的管理更自動化、更安全和更環保。和使用者層一樣,該層也包括4個模組:運維管理、資源管理、安全管理和容災支援。
    (1)運維管理
    雲的執行是否出色,往往取決於其運維繫統的強健和自動化程度。而和運維管理相關的功能主要包括3個方面。首先是自動維護:運維操作應儘可能地專業和自動化,從而降低雲端計算中心的運維成本。其次是能源管理:它包括自動關閉閒置的資源,根據負載來調節CPU的頻率以降低功耗並提供關於資料中心整體功耗的統計圖與機房溫度的分佈圖等來提升能源的管理,並相應地降低浪費。還有就是事件監控:它是通過對在資料中心發生的各項事件進行監控,以確保在雲中發生的任何異常事件都會被管理系統捕捉到。
    (2)資源管理
    這個模組和物理節點的管理相關,比如伺服器、儲存裝置和網路裝置等,它涉及下面這3個功能。其一是資源池:通過使用資源池這種資源抽象方法,能將具有龐大數量的物理資源集中到一個虛擬池中,以便於管理。其二是自動部署:也就是將資源從建立到使用的整個流程自動化。其三是資源排程:它將不僅能更好地利用系統資源,而且能自動調整雲中資源來幫助執行於其上的應用更好地應對突發流量,從而起到負載均衡的作用。
    (3)安全管理
    安全管理是對資料、應用和賬號等IT資源採取全面保護,使其免受犯罪分子和惡意程式的侵害,並保證雲基礎設施及其提供的資源能被合法地訪問和使用。主要包括下面這7種機制。
    * 訪問授權。為多個服務提供集中的訪問控制,以確保應用和資料只能被有授權的使用者訪問。
    * 安全策略。實現基於角色或者規則的一整套安全策略,而且還允許系統能模擬策略發生變更的情況以提升安全策略的健壯性
    * 安全審計。對安全相關的事件進行全面審計,以檢測是不是存在任何隱患。
    * 物理安全。根據職責限定每個雲管理人員不同的許可權,比如門禁等。
    * 網路隔離。使用VPN(Virtual Private Network,虛擬專用網路)、SSL(Secure Sockets Layer,安全套接層)和VLAN(Virtual Local Area Network,虛擬區域網)等技術來確保網路的隔離和安全。
    * 資料加密。這個機制能確保即使資料被竊取,也不會被非法分子利用。相關的機制有:對稱加密和公鑰加密等。
    * 資料備份。由於資料完整性對雲端計算而言是基本要求,所以除了通過上面這些機制來確保資料不會被沒有許可權的人訪問之外,還需要對資料進行備份,以避免由於磁碟損壞或者管理不當導致資料丟失的情況,所以需要完善的備份服務來滿足每個使用者不同的備份策略。
    (4)容災支援
    在容災方面,主要涉及兩個層面。其一是資料中心級別。如果資料中心的外部環境出現了類似斷電、火災、地震或者網路中斷等嚴重的事故,將很有可能導致整個資料中心不可用,這就需要在異地建立一個備份資料中心來保證整個雲服務持續執行。這個備份資料中心會實時或者非同步地與主資料中心進行同步,當主資料中心發生問題的時候,備份資料中心會自動接管在主資料中心中執行的服務。其二是物理節點級別。系統需要檢測每個物理節點的執行情況,如果一個物理節點出現問題,系統會試圖恢復它或者將其遮蔽,以確保相關雲服務正常執行。

3、檢測層

    這層比較簡單,主要監控這個雲端計算中心的方方面面,並採集相關資料,以供使用者層和機制層使用。
    (1)監控系統
    全面監控雲端計算的執行主要涉及3個層面。其一是物理資源層面,主要監控物理資源的執行狀況,比如CPU使用率、記憶體利用率和網路頻寬利用率等。其二是虛擬資源層面,主要監控虛擬機器的CPU使用率和記憶體利用率等。其三是應用層面,主要記錄應用每次請求的響應時間(Response Time)和吞吐量(Throughput),以判斷它們是否滿足預先設定的SLA(Service Level Agreement,服務級別協議)。

四、架構示例

    在現實的IT環境中,有許多雲端計算產品都符合本章所講述的架構,其中比較知名的有Salesforce CRM和Google App Engine。為了幫助大家進一步理解雲的架構,本節將以這兩個著名的雲端計算產品為例來進行介紹。

1、Salesforce CRM

    首先,從使用者角度而言,Salesforce CRM屬於SaaS層服務,主要通過在雲中部署可定製化的CRM應用,來讓企業使用者在初始投入很低的情況下使用CRM,並且可根據自身的流程來靈活地定製,而且使用者只需接入網際網路就能使用。從技術角度而言,Salesforce CRM像很多SaaS產品一樣,不僅用到SaaS層的技術,而且還用到PaaS層、IaaS層和雲管理層的技術。圖2-3為Salesforce CRM在技術層面上大致的架構。


    Salesforce CRM採用的主要技術包括以下幾種。
    * SaaS層。基於HTML、JavaScript和CSS這個黃金組合。
    * PaaS層。在此層,Salesforce引入了多租戶核心和為支撐此核心執行而定製的應用伺服器。
    * IaaS層。雖然在後端還是使用在企業環境中很常見的Oracle資料庫,但是它為了支撐上層的多租戶核心作了很多優化。
    * 雲管理層。Salesforce不僅在使用者管理、計費管理、監控系統和資源管理這4個方面有不錯的支援,而且在安全管理方面,它更是提供了多層保護,並支援SSL加密技術等。

2、Google App Engine

    像前文介紹的那樣,Google App Engine是一款PaaS服務,它主要提供一個平臺來讓使用者在Google強大的基礎設施上部署和執行應用程式,同時App Engine會根據應用所承受的負載來對應用所需的資源進行調整,並免去使用者對應用和伺服器等的維護工作,而且支援Java和Python這兩種語言。在技術上,由於App Engine屬於PaaS平臺,所以關於顯示層的技術選擇由應用的自身需求而定,而與App Engine無關。App Engine本身的設計主要集中在PaaS層、IaaS層和雲管理層。關於App Engine在技術層面上大致的架構,具體請看圖2-4。


    Google App Engine採用的主要技術有以下幾種。
    * PaaS層。既有經過定製化的應用伺服器,比如上面已經提到過的Jetty,也有基於Memcached的分散式快取服務。
    * IaaS層。在分散式儲存GFS的基礎上提供了NoSQL資料庫BigTable來持久化應用的資料。
    * 雲管理層。由於App Engine基於Google強大的分散式基礎設施,所以它在運維管理技術方面非常出色,同時其計費管理能做到非常細粒度的API級計費,而且App Engine在監控系統和資源管理這兩方面都有非常好的支援。

五、雲的4種模式

    雖然從技術或者架構角度看,雲端計算都是比較單一的,但是在實際情況下,為了適應使用者不同的需求,它會演變為不同的模式。在NIST(National Institute of Standards and Technology,美國國家標準技術研究院)的名為“The NIST Definition of Cloud Computing”的這篇關於雲端計算概念的著名文件中,共定義了雲的4種模式,它們分別是:公有云、私有云、混合雲和行業雲。接下來,將詳細介紹每種模式的概念、構建方式、優勢、不足之處及其對未來的展望等。

1、公有云

    公有云是現在最主流也就是最受歡迎的雲端計算模式。它是一種對公眾開放的雲服務,能支援數目龐大的請求,而且因為規模的優勢,其成本偏低。公有云由雲供應商執行,為終端使用者提供各種各樣的IT資源。雲供應商負責從應用程式、軟體執行環境到物理基礎設施等IT資源的安全、管理、部署和維護。在使用IT資源時,使用者只需為其所使用的資源付費,無需任何前期投入,所以非常經濟,而且在公有云中,使用者不清楚與其共享和使用資源的還有其他哪些使用者,整個平臺是如何實現的,甚至無法控制實際的物理設施,所以雲服務提供商能保證其所提供的資源具備安全和可靠等非功能性需求。
    許多IT巨頭都推出了它們自己的公有云服務,包括Amazon的AWS、微軟的Windows Azure Platform、Google的Google Apps與Google App Engine等,一些過去著名的VPS和IDC廠商也推出了它們自己的公有云服務,比如Rackspace的Rackspace Cloud和國內世紀互聯的CloudEx雲快線等。
    (1)構建方式
    在構建方式方面,現在主要有3種方法。其一是獨自構建:雲供應商利用自身優秀的工程師團隊和開源的軟體資源,購買大量零部件來構建伺服器、作業系統,乃至整個雲端計算中心。這種獨自構建的好處是,能為自己的需求作最大限度的優化,但是需要一個非常專業的工程師團隊,所以業界這樣做的基本上只有Google一家。其二是聯合構建:雲供應商在構建的時候,在部分軟硬體上選擇商業產品,而其他方面則會選擇自建。聯合構建的好處是避免自己的團隊涉足一些不熟悉的領域,而在自己所擅長的領域上大膽創新。這方面最明顯的例子莫過於微軟。在硬體方面,它並沒有像Google那樣選擇自建,而是採購了HP和戴爾的伺服器,但是在其擅長的軟體方面選擇了自主研發,比如採用了Windows Server 2008、IIS伺服器和.NET框架。其三是購買商業解決方案。由於有一部分雲供應商在建設雲之前缺乏相關的技術積累,所以會穩妥地購買比較成熟的商業解決方案。這樣購買商業解決方案的做法雖然很難提升雲供應商自身的競爭力,但是在風險方面和前兩種構建方式相比,它更穩妥。在這方面,無錫的雲端計算中心是一個不錯的典範。由於無錫購買了IBM的Blue Cloud雲端計算解決方案,所以在半年左右的時間內就能向其整個高新技術園區開放公有云服務,而且在這之前,無錫基本上沒有任何與雲端計算相關的技術儲備。
    (2)優勢
    公有云在許多方面都有其優越性,下面是其中的4個方面。
    * 規模大。因為公有云的公開性,它能聚集來自於整個社會並且規模龐大的工作負載,從而產生巨大的規模效應。比如,能降低每個負載的執行成本或者為海量的工作負載作更多優化。
    * 價格低廉。由於對使用者而言,公有云完全是按需使用的,無需任何前期投入,所以與其他模式相比,公有云在初始成本方面有非常大優勢。而且就像上面提到的那樣,隨著公有云的規模不斷增大,它將不僅使雲供應商受益,而且也會相應地降低使用者的開支。
    * 靈活。對使用者而言,公有云在容量方面幾乎是無限的。就算使用者所需求的量近乎瘋狂,公有云也能非常快地滿足。
    * 功能全面。公有云在功能方面非常豐富。比如,支援多種主流的作業系統和成千上萬個應用。
    (3)不足之處
    另外,公有云也有一些不足之處。
    * 缺乏信任。雖然在安全技術方面,公有云有很好的支援,但是由於其儲存資料的地方並不是在企業本地,所以企業會不可避免地擔憂資料的安全性。
    * 不支援遺留環境。由於現在公有云技術基本上都是基於x86架構的,在作業系統上普遍以Linux或者Windows為主,所以對於大多數遺留環境沒有很好地支援,比如基於大型機的Cobol應用。
    (4)對未來的展望
    由於公有云在規模和功能等方面的優勢,它會受到絕大多數使用者的歡迎。從長期而言,公有云將像公共電廠那樣毋庸置疑會成為雲端計算最主流甚至是唯一的模式,因為在規模、價格和功能等方面的潛力實在太大了。但是在短期之內,因為信任和遺留等方面的不足會降低公有云對企業的吸引力,特別是大型企業。

2、私有云

    關於雲端計算,雖然人們談論最多的莫過於以Amazon EC2和Google App Engine為代表的公有云,但是對許多大中型企業而言,因為很多限制和條款,它們在短時間內很難大規模地採用公有云技術,可是它們也期盼雲所帶來的便利,所以引出了私有云這一雲端計算模式。私有云主要為企業內部提供雲服務,不對公眾開放,在企業的防火牆內工作,並且企業IT人員能對其資料、安全性和服務質量進行有效地控制。傳統的企業資料中心相比,私有云可以支援動態靈活的基礎設施,降低IT架構的複雜度,使各種IT資源得以整合和標準化。
    在私有云界,主要有兩大聯盟:其一是IBM與其合作伙伴,主要推廣的解決方案有IBM Blue Cloud和IBM CloudBurst;其二是由VMware、Cisco和EMC組成的VCE聯盟,它們主推的是Cisco UCS和vBlock。在實際的例子方面,已經建設成功的私有云有采用IBM Blue Cloud技術的中化雲端計算中心和採用Cisco UCS技術的Tutor Perini雲端計算中心。
    (1)構建方式
    建立私有云的方式主要有兩種。首先是獨自構建,通過使用諸如Enomaly和Eucalyptus等軟體將現有硬體整合成一個雲。這比較適合預算少或者希望重用現有硬體的企業。其次是購買商業解決方案。通過購買Cisco的UCS和IBM的Blue Cloud等方案來一步到位,這比較適合那些有實力的企業和機構。
    (2)優勢
    由於私有云主要在企業資料中心內部執行,並且由企業的IT團隊來進行管理,所以這種模式在下面這5個方面有出色的表現。
    * 資料安全。雖然每個公有云的供應商都對外宣稱,其服務在各方面都非常安全,特別是在資料管理方面,但是對企業而言,特別是大型企業而言,和業務相關的資料是其生命線,是不能受到任何形式的威脅和侵犯的,而且需要嚴格地控制和監視這些資料的儲存方式和位置。所以短期而言,大型企業是不會將其關鍵應用部署到公有云上的。而私有云在這方面是非常有優勢的,因為它一般都構築在防火牆內,企業會比較放心。
    * 服務質量(SLA)。因為私有云一般在企業內部,而不是在某一個遙遠的資料中心中,所以當公司員工訪問那些基於私有云的應用時,它的服務質量應該會非常穩定,不會受到遠端網路偶然發生異常的影響。
    * 充分利用現有硬體資源。每個公司,特別是大公司,都會存在很多低利用率的硬體資源,可以通過一些私有云解決方案或者相關軟體,讓它們重獲“新生”。
    * 支援定製和遺留應用。現有公有云所支援應用的範圍都偏主流,偏x86,對一些定製化程度高的應用和遺留應用就很有可能束手無策,但是這些往往都屬於一個企業最核心的應用,比如大型機、Unix等平臺的應用。在這個時刻,私有云可以說是一個不錯的選擇。
    * 不影響現有IT管理的流程。對大型企業而言,流程是其管理的核心,如果沒有完善的流程,企業將會成為一盤散沙。實際情況是,不僅企業內部和業務有關的流程非常多,而且IT部門的自身流程也不少,而且大多都不可或缺,比如那些和Sarbanes-Oxley相關的流程。在這方面,私有云的適應性比公有云好很多,因為IT部門能完全控制私有云,這樣他們有能力使私有云比公有云更好地與現有流程進行整合。
    (3)不足之處
    另外,私有云也有其不足之處,主要是成本開支高。因為建立私用雲需要很高的初始成本,特別是如果需要購買大廠家的解決方案時更是如此;其次,由於需要在企業內部維護一隻專業的雲端計算團隊,所以其持續運營成本也同樣偏高。
    (4)對未來的展望
    在將來很長一段時間內,私有云將成為大中型企業最認可的雲模式,而且將極大地增強企業內部的IT能力,並使整個IT服務圍繞著業務展開,從而更好地為業務服務。

3、混合雲

    混合雲雖然不如前面的公有云和私有云常用,但已經有類似的產品和服務出現。顧名思義,混合雲是把公有云和私有云結合到一起的方式,即它是讓使用者在私有云的私密性和公有云靈活的低廉之間做一定權衡的模式。比如,企業可以將非關鍵的應用部署到公有云上來降低成本,而將安全性要求很高、非常關鍵的核心應用部署到完全私密的私有云上。
    現在混合雲的例子非常少,最相關的就是Amazon VPC(Virtual Private Cloud,虛擬私有云)和VMware vCloud了。比如,通過Amazon VPC服務能將Amazon EC2的部分計算能力接入到企業的防火牆內。
    (1)構建方式
    混合雲的構建方式有兩種。其一是外包企業的資料中心。企業搭建了一個資料中心,但具體維護和管理工作都外包給專業的雲供應商,或者邀請專業的雲供應商直接在廠區內搭建專供本企業使用的雲端計算中心,並在建成之後,負責今後的維護工作。其二是購買私有云服務。通過購買Amazon等雲供應商的私有云服務,能將一些公有云納入到企業的防火牆內,並且在這些計算資源和其他公有云資源之間進行隔離,同時獲得極大的控制權,也免去了維護之苦。
    (2)優勢
    通過使用混合雲,企業可以享受接近私有云的私密性和接近公有云的成本,並且能快速接入大量位於公有云的計算能力,以備不時之需。
    (3)不足之處
    現在可供選擇的混合雲產品較少,而且在私密性方面不如私有云好,在成本方面也不如公有云低,並且操作起來較複雜。
    (4)對未來的展望
    混合雲比較適合那些想嘗雲端計算的企業和麵對突發流量但不願將企業IT業務都遷移至公有云的企業。雖然混合雲不是長久之計,但是它應該也會有一定的市場空間,並且也將會有一些廠商推出類似的產品。

4、行業雲

    行業雲雖然較少提及,但是有一定的潛力,主要指的是專門為某個行業的業務設計的雲,並且開放給多個同屬於這個行業的企業。
    雖然行業雲現在還沒有一個成熟的例子,但盛大的開放平臺頗具行業雲的潛質,因為它能將其整個雲平臺共享給多個小型遊戲開發團隊,這樣這些小型團隊只需負責遊戲的創意和開發即可,其他和遊戲相關的煩瑣的運維可轉交給盛大的開放平臺來負責。
    (1)構建方式
    在構建方式方面,行業雲主要有兩種方式。其一是獨自構建:某個行業的領導企業自主建立一個行業雲,並與其他同行業的公司分享。其二是聯合構建:多個同型別的企業可以聯合建設和共享一個雲端計算中心,或者邀請外部的供應商來參於其中。
    (2)優勢
    能為行業的業務作專門的優化。和其他的雲端計算模式相比,這不僅能進一步方便使用者,而且能進一步降低成本。
    (3)不足之處
    缺點是支援的範圍較小,只支援某個行業,同時建設成本較高。
    (4)對未來的展望
    行業雲非常適合那些業務需求比較相似,而且對成本非常關注的行業。雖然現在還沒有非常好的示例,但是對部分行業應該存在一定的吸引力,比如上面提到的遊戲業。
    本文主要在技術層面(特別是在雲端計算的架構方面)對雲端計算進行了詳細描述,並且介紹了SaaS、PaaS和IaaS這3個雲服務層,以及作為雲端計算中心“大腦”的雲管理層,同時也討論了公有云、私有云、混合雲和行業雲這4種主要的雲端計算模式。


參考文獻:

雲端計算的架構:http://www.uml.org.cn/yunjisuan/201304171.asp

雲端計算服務模型第1部分(基礎架構即服務):http://www.ibm.com/developerworks/cn/cloud/library/cl-cloudservices1iaas/index.html

雲端計算服務模型第2部分(平臺即服務):http://www.ibm.com/developerworks/cn/cloud/library/cl-cloudservices2paas/index.html

雲端計算服務模型第3部分(軟體即服務):http://www.ibm.com/developerworks/cn/cloud/library/cl-cloudservices3saas/index.html

相關文章