眾所周知,Linux 和開放原始碼在雲計算中的應用中扮演者極為重要的角色,讓我們來探索一下,Linux 和開源社區究竟是如何為其做出貢獻。 當然,聰明如你,可能已經猜到其中一二,但還請大家繼續往下看。
Software-as-a-Service
SaaS (軟體即服務)就是以服務的形式訪問 Internet 上的軟體。 一種早期的 SaaS 方法是 Application Service Provider(ASP)。 ASP 提供對 Internet 上存放或交付的軟體的訂閱。 ASP 交付軟體,並根據軟體的使用收費。 這樣一來,您就不必購買軟體,只需隨需租用軟體。
SaaS 實例
傳統應用程式與 Saas 應用程式之間的對比的一個有趣的例子是 SoftwarePlanner.com 提供的應用程式生命週期管理工具。 該公司以傳統形式或 SaaS 的形式提供他們的工具。 當使用傳統形式時,客戶將應用程式套件放在他們的企業中;而當使用 SaaS 形式時,客戶擁有應用程式套件,並將其放到 Internet 上。
SaaS 的另一個方面是在 Internet 上使用遠端執行的軟體。 這種軟體可以是本地應用程式所使用的服務(並定義為 Web 服務),也可以是通過 Web 瀏覽器看到的遠端應用程式。 遠端應用程式服務的一個例子是 Google Apps,它通過一個標準的 Web 瀏覽器提供一些企業應用。 要遠端地執行應用程式,通常需要依賴于一個應用伺服器來公佈所需的服務。 應用伺服器 是一個軟體框架,它公佈軟體服務的 API(例如事務管理或資料庫訪問)。 具體的例子有 Red Hat JBoss Application Server、Apache Geronimo 和 IBM® WebSphere® Application Server 等。 另外還有很多其他的應用伺服器,參考資料 小節給出了一份詳細的清單。
SaaS 的另一個最近的例子是 Google 的 Chrome 瀏覽器。 這個瀏覽器是作為新桌面的理想環境,除了具有傳統的 Web 流覽體驗外,還可以通過它來(以本地或遠端方式)交付應用程式。 (要瞭解更多資訊,請參閱 參考資料)。
Platform-as-a-Service
PaaS 可描述為一個完整的虛擬平臺,它包括一個或多個伺服器(在一組物理伺服器上虛擬而成)、作業系統以及特定的應用程式(例如用於基於 Web 的應用程式的 Apache 和 MySQL)。 在某些情況下,這些平臺可以預先定義和選擇。 而在另一些情況下,可以提供一個 VM 鏡像,該鏡像包含所有的特定于使用者的應用程式。
PaaS 一個有趣的例子是 Google App Engine。 App Engine 是一個服務,通過它可以在 Google 的可伸縮性極佳的架構上部署 Web 應用程式。 App Engine 為可通過 Internet 引用的 Python 應用程式提供一個沙箱(將來還會支援更多的語言)。 除了支援使用者認證、鏡像操作和電子郵件發送外,App Engine 還提供了 Python API,用於持久地存儲和管理資料(使用 Google Query Language 或 GQL)。 Web 應用程式運行時所在的沙箱將限制對底層作業系統的訪問。 雖然 App Engine 限制了應用程式可用的功能,但是它支援有用的 Web 服務的構造。 請參閱 參考資料 小節,瞭解更多資訊。
注意:在一定的頻寬和存儲約束範圍內,在 App Engine 中部署應用程式是免費的。 但是,如果要用 App Engine 構建生產 Web 網站,則需要評估使用費。
PaaS 的另一個例子是 10gen,它既是一個雲計算平臺,又是一個可下載的開放原始碼包,可用於創建您自己的私有雲計算。 10gen 是類似于 App Engine 的一個軟體棧,它提供與 App Engine 類似的功能 — 但有一些不同之處。 通過 10gen,可以使用 Python 以及 JavaScript 和 Ruby 程式設計語言開發應用程式。 該平臺還使用沙箱概念隔離應用程式,並且通過自己的應用伺服器的許多電腦(當然,是在 Linux 上構建)提供一個可靠的環境。
Infrastructure-as-a-Service
IaaS 是以服務的形式交付電腦基礎設施。 這一層與 PaaS 的不同之處在于,只提供虛擬硬體,而沒有軟體棧。 客戶提供一個 VM 鏡像,該鏡像在一個或多個虛擬伺服器上被調用。 IaaS 是作為服務的計算的最原始的形式(除了對物理基礎設施的訪問)。 最著名的商業 IaaS 提供程式是 Amazon Elastic Compute Cloud(EC2)。 在 EC2 中,可以指定一個特定的 VM(作業系統和應用程式集),然後將應用程式部署到它上面,或者提供要在伺服器上執行的 VM 鏡像。 然後,只需根據計算時間、存儲和網路頻寬付費。
Eucalyptus 專案(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems)是 Amazon EC2 的一個開源實現,它與商務服務介面相容。 和 EC2 一樣,Eucalyptus 依賴于 Linux 和 Xen 進行作業系統虛擬化。 Eucalyptus 是加利福尼亞大學(Santa Barbara)為進行雲計算研究而開發的。 您可以從該大學的網站上下載它(見 參考資料),或者通過 Eucalyptus Public Cloud 體驗它,不過後者有一些限制。
另 一個 EC2 風格的 IaaS 是 Enomalism 雲計算平臺。 Enomalism 是一個開放原始碼專案,它提供了一個功能類似于 EC2 的雲計算框架。 Enomalism 基於 Linux,同時支援 Xen 和 Kernel Virtual Machine(KVM)。 與其他純 IaaS 解決方案不同的是,Enomalism 提供了一個基於 TurboGears Web 應用程式框架和 Python 的軟體棧。