云计算架构层面关系剖析
一、云計算概述
??? 云計算到底是什么呢?在這個問題上,可謂眾說紛紜。比如,在維基百科上的定義是“云計算是一種基于互聯網的計算新方式,通過互聯網上異構、自治的服務為個人和企業用戶提供按需即取的計算”;著名咨詢機構 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
總結
以上是生活随笔為你收集整理的云计算架构层面关系剖析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博文视点“阿里云全系列技术图书”隆重亮相
- 下一篇: idel安装lombok插件安装