雲端計算架構介紹
一、雲端計算概述
雲端計算到底是什麼呢?在這個問題上,可謂眾說紛紜。比如,在維基百科上的定義是“雲端計算是一種基於網際網路的計算新方式,通過網際網路上異構、自治的服務為個人和企業使用者提供按需即取的計算”;著名諮詢機構 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. 三個雲端計算類別的跨概念矩陣
範型轉變 | 特徵 | 關鍵詞彙 | 優點 | 缺點和風險 | 不應該使用的場合< |
---|