現(xiàn)實中的開放源碼云計算,第1部分:并不是所有云都相同
概述:CTO 希望了解您的云計算戰(zhàn)略 — 而且明天就要聽到。有許多云計算環(huán)境可供選用,它們有相似之處,也有差異。本文討論一些云計算環(huán)境,主要關(guān)注開放源碼的云計算環(huán)境,幫助組織利用云計算的強(qiáng)大能力。介紹 Amazon、Microsoft®、Google、IBM®、Aptana、Heroku、Mosso、Ning 和 Salesforce 等提供商。討論每種平臺的強(qiáng)項和弱點,以及在每種平臺上支持的開放源碼和專有技術(shù)類型。學(xué)習(xí)如何選擇適合自己需要的平臺。
關(guān)于本系列
在這個分三部分的 “真實的開放源碼云計算” 系列中,學(xué)習(xí)如何判斷云計算是否對您有幫助以及如何制定云計算戰(zhàn)略。在第 1 部分中,了解云計算的益處、云的類型和可供選擇的云計算平臺。后續(xù)文章將討論如何針對云進(jìn)行設(shè)計和開發(fā),以及如何在云中管理應(yīng)用程序。
云計算:僅僅是營銷口號嗎?
如果您從事技術(shù)工作,就可能聽到過這樣的疑問:“云計算有什么我們以前沒有聽到過的新東西嗎?云計算是否只是一個營銷口號?” — 它是能夠解決所有問題的銀彈嗎?或者更好?答案是肯定的。無法否認(rèn),圍繞云計算確實有宣傳泡沫。但是,許多廠商正在努力實現(xiàn)承諾。云計算確實有非常切實的益處。本文討論幾個可供選擇的云計算平臺,但是覆蓋的范圍并不全面。
在采用云計算之前,應(yīng)該注意云計算的一些特點。在本文中,了解云計算的益處和挑戰(zhàn)。
關(guān)于云計算
云的類型
Wikipedia 把云計算定義為 “基于 Internet 開發(fā)和使用計算機(jī)的技術(shù)”。這個定義非常寬泛,許多產(chǎn)品都可以歸類為云計算。相當(dāng)一部分云產(chǎn)品是 Software as a Service (SaaS) 的變體。SaaS 的例子包括:Zoho(文字處理、電子表格)、Salesforce (CRM)、SlideRocket(展示)等 Web 應(yīng)用程序;Google Search、Yahoo! Weather 或 PayPal 等 Web 服務(wù)。這些都是云計算的好例子,但是對于打算使用云計算的企業(yè)可能沒什么用。但是,它們可以對其他類型的云計算起補(bǔ)充作用。
我們希望找到的云計算類型是一種稱為 Platform as a Service (PaaS) 的基礎(chǔ)結(jié)構(gòu)。最常見的 PaaS 例子是各種類型的云數(shù)據(jù)存儲,比如用于存儲非結(jié)構(gòu)化數(shù)據(jù)的 Amazon 的 Simple Storage Service (S3) 或 IBM 的 Scale out File Service (SOFS)。它們都是分布式文件系統(tǒng)。可以通過 Web 服務(wù)接口訪問 S3,可以通過 NFS 和 FTP 等文件協(xié)議訪問 SOFS。Amazon 還通過 SimpleDB 服務(wù)提供結(jié)構(gòu)化數(shù)據(jù)存儲。SimpleDB 支持通過 Web 服務(wù)接口保存和查詢結(jié)構(gòu)化數(shù)據(jù)。 計算肯定不僅僅涉及存儲,因此需要云計算平臺。云計算平臺允許在其中放置和執(zhí)行代碼。它們肯定可以與云存儲和云 Web 服務(wù)組合在一起。有許多可用的平臺,它們具有不同的優(yōu)點和缺點。
益處
為什么要在云平臺而不是自己的計算機(jī)上運(yùn)行代碼?有幾個簡單但切實的原因。通過使用云平臺,就不需要購買和設(shè)置所有計算機(jī)。如果云計算只有這一個特點,它就與托管服務(wù)沒有區(qū)別了。云計算的主要優(yōu)點是能夠快速地打開或關(guān)閉應(yīng)用程序,或者根據(jù)需要靈活地增減計算能力。任何云計算平臺都能夠根據(jù)需要無縫地提供更多計算資源。一些平臺還在隨需計算的基礎(chǔ)上提供通用的開發(fā)平臺。
總之,云計算讓組織能夠快速部署應(yīng)用程序并根據(jù)業(yè)務(wù)需求擴(kuò)展它們。這聽起來很不錯,但是云計算也有一些需要注意的挑戰(zhàn)。
挑戰(zhàn)
人們很容易只注意云計算的益處,但是它有一個缺點:云計算最顯著的問題之一是,應(yīng)用程序使用的數(shù)據(jù)與應(yīng)用程序一起放在云中。數(shù)據(jù)可能是敏感的,比如能夠識別出客戶的個人信息或他們的財務(wù)情況和交易記錄。還可能有非敏感數(shù)據(jù),這些數(shù)據(jù)也非常有價值,比如關(guān)于用戶的匯總信息以及他們使用應(yīng)用程序的方式。由于把重要的信息存儲在云中,所以必須了解平臺是否安全。
“誰訪問云中的數(shù)據(jù)” 并不是要擔(dān)心的惟一問題。數(shù)據(jù)的完整性同樣重要。計算機(jī)難免會出現(xiàn)故障,所以必須能夠備份數(shù)據(jù)并在發(fā)生故障時恢復(fù)。平臺是否提供數(shù)據(jù)備份和恢復(fù)(至少是為需要的用戶提供)?應(yīng)用程序的可靠性顯然是非常重要的。平臺提供哪些種類的服務(wù)水平協(xié)議?本文討論一些可用平臺在這些方面的特點和其他重要問題。
平臺
目前有許多可供選擇的云計算平臺。本文討論的平臺并不全面,但是涉及比較流行的平臺以及它們之間的基本差異。我們會特別關(guān)注每種平臺上支持的編程語言和開放源碼技術(shù),以及每種平臺如何解決云計算的問題。為了幫助討論這么多平臺,把它們粗略地分為基本平臺和專門平臺兩類。 基本平臺 只提供最基本的功能 — 只有(虛擬)硬件,還可能有操作系統(tǒng)。它們的限制比較少,所以往往更靈活。
專門平臺 在基本平臺上提供某種編程環(huán)境和服務(wù)。專門平臺通常比較簡單,常常提供某些獨特的服務(wù)。
基本平臺
如果希望以最靈活的方式配置云中的系統(tǒng),就需要基本平臺??梢灾付ㄒ恍┡c硬件相關(guān)的規(guī)格,比如處理器類型、處理器速度、特定的內(nèi)存量等等。然后,就可以自由地創(chuàng)建自己需要的任何系統(tǒng)。它與托管服務(wù)非常相似,但是能夠根據(jù)需求快速地增減容量。本節(jié)討論 Amazon、IBM、Joyent 和 Mosso 提供的四種基本平臺。
Amazon Elastic Compute Cloud
Amazon 的 Elastic Compute Cloud (EC2) 是最早的云計算平臺之一,也是最流行的平臺之一。俗話說,“跟著 Amazon 走,就是跟著潮流走。” EC2 是基本平臺的好例子。
IBM 與 Amazon Web Services
IBM 已經(jīng)開始與 Amazon Web Services 合作,支持用戶訪問虛擬計算環(huán)境中的 IBM 中間件。Amazon EC2 體驗計劃允許用戶評估和使用軟件,而不需要在自己的系統(tǒng)上安裝軟件。用戶可以在可靠的高性能環(huán)境中構(gòu)建企業(yè)級應(yīng)用程序,接近實時地調(diào)整計算能力,只需要為實際使用的時間和計算能力付費。IBM 在 EC2 上提供的中間件包括:
DB2? Express-C V9.5
Informix? Dynamic Server Developer Edition V11.5
WebSphere? Portal Server 和 Lotus Web Content Management Standard EditionWebSphere sMash
它們都是生產(chǎn)級代碼,啟用了所有特性和選項。
要想使用 EC2,需要一個 Amazon Machine Instance (AMI)。AMI 是完整的機(jī)器映像,包含操作系統(tǒng)、應(yīng)用程序等等。Amazon 和 EC2 社區(qū)提供許多常用的 AMI,包含 Microsoft Windows? 或 Linux? 操作系統(tǒng)以及各種開放源碼軟件套件,比如 Apache Web 服務(wù)器、MySQL 和 Python 解釋器。如果找不到適合自己需要的 AMI,還可以使用 Amazon 提供的工具創(chuàng)建自己的 AMI,這些 AMI 可以只由自己使用,也可以與社區(qū)共享。
AMI 可以部署到各種規(guī)模的 “實例” 上。到編寫本文時,小實例具有一個 1 GHz 核、1.7 GB 內(nèi)存和 160 GB 磁盤空間。極大型實例具有四個 2 GHz 核、15 GB 內(nèi)存和 1.6 TB 磁盤空間。還有專門為計算密集型任務(wù)設(shè)計的特殊規(guī)模。您只需選擇適合自己需要的規(guī)模并部署 AMI。對實例的所有管理和控制都通過 Web 服務(wù)進(jìn)行。圍繞這些 Web 服務(wù)已經(jīng)開發(fā)出許多軟件,可以很方便地管理 EC2 實例。例如,可以使用 Firefox 擴(kuò)展 Elasticfox 在 Firefox 中直接管理和啟動 AMI。
EC2 采用開放源碼的 Xen 虛擬化軟件。通過使用 EC2,實際上可以運(yùn)行任何類型的軟件。通常使用各種風(fēng)格的 Linux 作為 AMI 的操作系統(tǒng)??梢允褂萌魏尉幊陶Z言:Java? 編程語言、PHP、Python 等??梢栽?EC2 上使用專有軟件,但是 EC2 的彈性使開放源碼軟件非常有吸引力。在使用更大或更多實例時,不需要考慮許可證問題。 除了 EC2,Amazon 還提供許多基礎(chǔ)結(jié)構(gòu)服務(wù),可以使用它們解決數(shù)據(jù)可靠性和備份等問題。Amazon 的 S3 服務(wù)是一種非常適合備份數(shù)據(jù)的服務(wù)。它采用自助模型。對 Amazon 云的管理和訪問只通過 Web 服務(wù)進(jìn)行,需要兩因素身份驗證。
IBM Blue Cloud
當(dāng) Amazon 率先進(jìn)入云計算領(lǐng)域時,許多人感到吃驚。但是,當(dāng) IBM 進(jìn)入這個領(lǐng)域時,沒有人感到吃驚。Blue Cloud 于 2008 年晚些時候公布,這個項目承諾提供云計算的所有基本功能。客戶可以選擇比較普通的 x86 硬件或基于 POWER? 的高端硬件。Blue Cloud 使用 IBM 的 Tivoli? 軟件向系統(tǒng)自動地供應(yīng)各種資源(CPU/RAM/磁盤),這讓客戶能夠獲得強(qiáng)大的計算能力,但是只根據(jù)需要量付費。IBM 還倡導(dǎo) “私有” 云,這讓防火墻后面的內(nèi)部應(yīng)用程序也能夠受益于云計算。
IBM 的 Blue Cloud 是一種正在發(fā)展的技術(shù),所以您應(yīng)該查閱關(guān)于它支持的技術(shù)類型的最新信息。IBM 是最大的開放源碼技術(shù)支持者之一,因此對于大量使用開放源碼技術(shù)的應(yīng)用程序,使用 IBM 的平臺是很有吸引力的。
Joyent Accelerator
Joyent 可能不像 Amazon 或 IBM 那么有名氣,但是作為為基于 Web 的創(chuàng)業(yè)公司提供云計算平臺的提供商,它已經(jīng)贏得了良好的聲譽(yù)。Joyent Accelerator 提供傳統(tǒng)托管服務(wù)提供商的許多靈活性,同時提供云計算的關(guān)鍵特性 —— 隨需計算。通過使用 Joyent Accelerator,可以快速地啟動實例,其中包含預(yù)先配置好的 PHP、Java 語言或 Ruby on Rails。您可以選擇需要多少計算能力。所有軟件都在 OpenSolaris 上運(yùn)行,所以可以使用常用工具(比如 SSH 和 FTP)訪問和管理在其中部署的資產(chǎn)?!oyent 的云計算在設(shè)計時就考慮到了可伸縮性。它最實惠的產(chǎn)品也設(shè)計為能夠應(yīng)付使用量的急劇增長。因此,對于通常不需要很多計算能力,但是可能會遇到使用量高峰的 Facebook 應(yīng)用程序,Joyent 是非常受歡迎的選擇。
Joyent 支持與 OpenSolaris 兼容的任何技術(shù)。這包括任何開放源碼的 LAMP 技術(shù)和編程語言,以及 Java 和 Ruby 等其他編程語言。Joyent 允許使用任何現(xiàn)有的 Linux 或 UNIX? 工具保護(hù)和維護(hù)站點和數(shù)據(jù)。
Mosso
Mosso 是著名的托管服務(wù)提供商 The Rackspace Cloud 的子公司,它提供幾種不同的云計算服務(wù)。Mosso 的 Cloud Site 同時提供基本平臺和專門平臺。有兩個基本的 Cloud Site 配置。一個配置使用開放源碼軟件,它是典型的 LAMP 設(shè)置。另一個配置是 Windows 服務(wù)器,其中包含 IIS Web 服務(wù)器和 SQL Server 數(shù)據(jù)庫。可以選擇配置,根據(jù)需要的帶寬、存儲量和 CPU 周期付費。
Mosso 已經(jīng)宣布還將提供一個稱為 Cloud Servers 的新產(chǎn)品。這個產(chǎn)品是 Linux 系統(tǒng),但是在配置方面提供完全的靈活性。Mosso 的 Cloud Site 提供許多應(yīng)用程序所需的基本構(gòu)建塊,所以很受歡迎??梢园阉鼈兛醋龌镜膶iT平臺。下一節(jié)討論更專門的平臺。
專門平臺
“專門” 這個詞顯然有點主觀。專門的云計算平臺究竟有什么特點?本節(jié)討論的所有平臺都在基本平臺的基礎(chǔ)上提供額外特性。這些特性可以是獨特的開發(fā)環(huán)境、在平臺中集成的額外服務(wù)或者提供方便的特性。本文討論下面這些專門平臺:Microsoft Azure、Google App Engine、Aptana Cloud、Heroku、Ning 和 Salesforce?!icrosoft Azure
Azure 平臺由 Microsoft 于 2008 年第四季度公布。這個平臺捆綁它自己的操作系統(tǒng),一種特殊風(fēng)格的 Windows。它包含一個用于動態(tài)地供應(yīng)機(jī)器實例的 “系統(tǒng)管理程序”。它可以運(yùn)行任何 .NET 應(yīng)用程序。當(dāng)然,基于服務(wù)器的 .NET 應(yīng)用程序很適合轉(zhuǎn)移到這個云平臺上。Microsoft 已經(jīng)開始在 Azure 上的云中提供它的許多基于服務(wù)器的產(chǎn)品,比如 Exchange。
但是,Azure 不僅僅是 Windows 和 .NET 平臺。Azure 平臺還提供許多其他服務(wù),包括 SQL Services(一個可伸縮性很強(qiáng)的 SQL Server 數(shù)據(jù)庫)和 Live Services(許多流行的 Microsoft 應(yīng)用程序使用這些 Web 服務(wù)進(jìn)行搜索、照片共享、即時消息傳遞等等)。Azure 還提供與 Microsoft 的 IDE Visual Studio? 的緊密集成,因此很容易在 Azure 平臺上運(yùn)行、測試和部署應(yīng)用程序。
Azure 是專有的云平臺,但是如果您已經(jīng)在使用專有的 Microsoft 技術(shù),那么它還是有些吸引力的。客戶只能使用 Microsoft 提供的專有技術(shù),比如 .NET 語言和基于 SQL Server 的數(shù)據(jù)庫。可以使用許多 Windows 技術(shù)保護(hù)、訪問和管理在 Azure 上運(yùn)行的任何應(yīng)用程序。
Google App Engine
App Engine 由 Google 于 2008 年第二季度啟動,它與其他云平臺很不一樣。在它上面沒有硬件的供應(yīng);只需把應(yīng)用程序部署到其中 — 部署是免費的。但是,與其他云平臺相似,App Engine 對使用量有限制,可以根據(jù)需要購買更多 CPU 使用量、存儲量和帶寬。Google App Engine 有一些方便的特性,但這只是它的專門特性集的一小部分。
Google App Engine 提供一個健壯的開發(fā)環(huán)境,這個環(huán)境只支持 Python。它在 Python 之上提供許多服務(wù)。用戶管理與 Google 集成。例如,用戶使用在登錄 Google Mail 時使用的憑證登錄您的應(yīng)用程序。它提供一個用于存儲結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)存儲 API。數(shù)據(jù)存儲和獲取操作與使用關(guān)系數(shù)據(jù)庫時相似,但完全是 Google 專有的技術(shù)。它基于 Google 專有的分布式文件系統(tǒng) GFS。總之,Google 只支持開放源碼的 Python,在其他方面大量使用專有技術(shù)(盡管 Google 在幕后可能使用許多開放源碼技術(shù))。Google App Engine 沒有提供任何數(shù)據(jù)備份解決方案,但是底層數(shù)據(jù)庫具有很強(qiáng)的容錯能力。
Aptana Cloud
Aptana 最有名的產(chǎn)品可能是 Aptana Studio,這是一個支持 JavaScript、PHP、Python 和 Ruby 等動態(tài)編程語言的基于 Eclipse 的 IDE。Aptana 于 2008 年第二季度公布了它的云平臺。Aptana Cloud 實際上是在 Joyent 的云計算平臺上提供的一組特性。
通過使用 Aptana Cloud,可以輕松地把應(yīng)用程序部署到 Linux 或 MySQL 環(huán)境中,其中包含 PHP、Jaxer(Aptana 的服務(wù)器端 JavaScript 實現(xiàn))或 Ruby on Rails。Aptana Cloud 部署具有 Joyent Accelerator 部署的所有特性,還包含 Aptana 提供的額外特性。云應(yīng)用程序的部署和管理直接通過 Aptana Studio 進(jìn)行。可以通過 Aptana Studio 執(zhí)行所有任務(wù),包括向應(yīng)用程序供應(yīng)硬件、監(jiān)視日志文件等等。Aptana 的簡便性是前所未有的。開發(fā)、測試、部署和管理都在一個地方進(jìn)行。
Aptana 從 Joyent 繼承了對開放源碼技術(shù)和編程語言的支持。它還繼承了用于管理和備份的開放源碼工具。Aptana Studio 中集成了許多管理功能,但是也可以構(gòu)建更高級的系統(tǒng)。
Heroku
有人說,“創(chuàng)業(yè)公司 Y-Combinator 的 Heroku 為 Ruby on Rails 提供的特性就是 Google App Engine 為 Python 提供的。” 但是,這種說法對于 Heroku 并不公平。它不只是一個可以使用 Ruby on Rails 的云平臺。Heroku 只支持 Rails,針對 Rails 做了大量調(diào)整。通過使用 Heroku,只需在本地設(shè)置中添加一個 Ruby gem,馬上就可以在 Heroku 云中部署和運(yùn)行應(yīng)用程序。另外,還可以從 Git 存儲庫進(jìn)行部署。甚至可以直接從 Web 瀏覽器訪問和編輯自己的代碼。在應(yīng)用程序中可以使用任何 Ruby gem 或 Rails 插件?!eroku 非常方便。它在 Amazon EC2 之上運(yùn)行,所以可以彈性地擴(kuò)展計算能力。Heroku 通過它的 Heroku Garden 提供免費服務(wù)??梢栽谠浦忻赓M部署和測試應(yīng)用程序。當(dāng)準(zhǔn)備好處理更大的通信量或者需要容錯能力時,可以把應(yīng)用程序轉(zhuǎn)移到主 Heroku 平臺。
Ning
本文到目前為止討論的云平臺都是通用的。無論您的應(yīng)用程序是什么,它們都可以處理。其中一些平臺主要適用于 Web 應(yīng)用程序,但是這個類別仍然是相當(dāng)寬泛的。流行的站點 Ning 允許用戶創(chuàng)建自己的社交網(wǎng)絡(luò)。這常常通過純粹的配置、添加頁面、在頁面中添加組件、配置組件等操作來完成。通過使用 Ning,還可以下載自己的社交網(wǎng)絡(luò)的源代碼,根據(jù)需要修改代碼,然后在 Ning 云中運(yùn)行它。社交網(wǎng)絡(luò)代碼是用簡單的 PHP 編寫的,所以很容易創(chuàng)建自己的社交網(wǎng)絡(luò)應(yīng)用程序。
與 Google App Engine 相似,Ning 提供一個數(shù)據(jù)存儲 API 而不是關(guān)系數(shù)據(jù)庫。它還通過許多 Ning API 提供對社交網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的訪問??梢酝ㄟ^上傳代碼進(jìn)行部署,還提供供應(yīng)硬件的功能。Ning 在用戶的網(wǎng)絡(luò)上附加廣告,并限制存儲量和帶寬。如果要去除廣告或增加存儲量和帶寬,就需要付費。
Ning 顯然是一個非常專門的云平臺。但是,如果您打算在應(yīng)用程序中構(gòu)建社交網(wǎng)絡(luò)特性(即使它們只是主要特性之外的輔助特性),而且熟悉 PHP 編程,那么 Ning 是非常有吸引力的選擇。Ning 與 Google App Engine 相似。用戶只能使用一種編程語言 (PHP),而且不能根據(jù)需要安裝其他軟件。但是,它具有很強(qiáng)的可伸縮性。
Salesforce
另一個非常專門的云計算平臺是 Salesforce 提供的,Salesforce 最有名的成果是使用 SaaS 模型革新了客戶關(guān)系管理 (CRM) 軟件。在 Force.com 平臺上,您可以創(chuàng)建自己的應(yīng)用程序,運(yùn)行它們的云基礎(chǔ)結(jié)構(gòu)類型與 Salesforce 運(yùn)行其 CRM 應(yīng)用程序的云基礎(chǔ)結(jié)構(gòu)類型相同。企業(yè)使用 AppExchange 尋找并 “安裝” 應(yīng)用程序,讓自己的用戶可以使用它們。與 Facebook 應(yīng)用程序相似,可以讓應(yīng)用程序作為主 Salesforce 應(yīng)用程序的組成部分無縫地運(yùn)行。
另外,還可以用一個或多個應(yīng)用程序創(chuàng)建定制的 Force.com 站點。這與云計算模型更相似。在使用 Force.com 站點時,并不根據(jù)硬件付費,而是根據(jù)用戶數(shù)量付費。根據(jù)每個用戶需要的存儲量不同,有不同的費率。要想創(chuàng)建在 Salesforce 上運(yùn)行的應(yīng)用程序,需要用 Apex 編寫程序,這是與 Java 編程語言相似的一種專有語言。Salesforce 工程師也使用這種語言開發(fā)自己的 CRM 應(yīng)用程序。
Salesforce 還提供許多與平臺相關(guān)的服務(wù),用于管理用戶、賬戶、角色和數(shù)據(jù)訪問。對于業(yè)務(wù)應(yīng)用程序,尤其是特定企業(yè)特有的業(yè)務(wù)應(yīng)用程序,F(xiàn)orce.com 站點是很有吸引力的選擇。Salesforce 在開放源碼技術(shù)和編程選擇方面相當(dāng)受限制。但是,與 Google App Engine 和 Ning 相似,Salesforce 提供可伸縮性很強(qiáng)的專有技術(shù)。
結(jié)束語
本文討論了云計算的一些重要的益處。介紹了許多種云計算平臺以及它們的相似之處和差異。這些信息可以幫助您選擇適合自己的平臺。
請繼續(xù)關(guān)注這個 “真實的開放源碼云計算” 系列中的后續(xù)文章,我們將討論如何在云計算平臺上開發(fā)、部署和管理應(yīng)用程序。
評論