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