[雲端運算] 第二章:深入雲端 - Windows Azure 平台

第一篇文章是「雲端」這個詞彙、雲端相關產品與資訊的簡介。在這篇文章中,筆者會深入討論兩個部份,Windows Azure 以及好與不好的雲端應用程式。

Windows Azure 平台

Windows Azure 平台是一種「平台即是服務 Platform as a Servive」(PaaS) 產品。這提供組織一種平台來執行 Windows 應用程式並將資料儲存至雲端。這些應用程式可以是組織目前已經過轉換後的既有應用程式,或者是為了要在 Windows Azure 上執行而專門設計的全新應用程式。開發人員可以使用熟悉的工具,例如 Visual Studio 2010,為 Windows Azure 平台開發各種應用程式。

做為一種平台,Windows Azure 提供各種您可以利用的服務:Windows Azure、SQL Azure 以及 Windows Azure 平台 AppFabric。簡而言之,它們就等於是作業系統、資料庫以及「通訊與安全」服務。

Windows Azure


除了結構控制器之外,Windows Azure 還提供三個核心元件,分別是運算 (Compute)、儲存庫 (Storage) 以及結構 (Fabric)。「運算」實際上就是 Windows 作業系統,這是一種執行個體(instance)。這些執行個體包含應用程式的複本。執行個體也有兩種版本,一種是 Web 角色,另一種是 Worker 角色。Web 角色會使用 IIS 來接受以及處理 HTTP 要求。並不是任何想在 Windows Azure 上執行的東西都是 Web 應用程式,所以 Windows Azure 也提供 Worker 角色。Worker 角色執行個體與 Web 角色執行個體十分類似。主要的差別在於 Worker 角色並未由 IIS 預先設定為在每個執行個體中執行。Web 角色和 Worker 角色可以透過一種如 WCF 的技術,或者利用 Windows Azure Storage 查詢,就可以彼此溝通。不管是哪一個角色,Web 角色和 Worker 角色都需要儲存資料。Windows Azure 提供 3 種儲存選項,分別是 Blob、表格(Tables)以及佇列(Queues)。Blob 使用最簡便,它們可以非常大,最多可高達 1 TB,而且可以分割成數個區塊。要想使用 Blob,另一種方法就是透過 Windows Azure Drives – Web 角色執行個體或 Worker 角色執行個體掛載。Windows Azure Drives 相關的儲存庫就是 Blob。磁碟機掛載之後,這個執行個體可以讀取或寫入資料,這樣便可以永久儲存到 Blob 中。

Blob 只適用於某些類型的資料,不過在很多情況下,它們的結構十分鬆散。為了讓應用程式可以用更精細的方式來處理資料,Windows Azure 儲存庫提供表格儲存。請勿被名稱誤導:這些都不是關聯式表格。實際上,即使它們稱為「表格」,但是它們包含的資料實際上是儲存在一組附帶各種屬性的個體中。表格沒有定義的結構描述;反而,屬性可以有不同的類型,例如 int、string、 Bool 或 DateTime。而且除使用 SQL 外,應用程式可以使用 ADO.NET 資料服務或 LINQ 來存取資料。單張表格可以十分巨大,裡面有百億個個體在保存數以 TB 的資料,並且在需要時,Windows Azure 儲存庫可以將它切割至多個伺服器,用來提高效能。

Windows Azure 儲存庫中的第 3 個選項是佇列,用途有點不一樣。佇列的用途主要是提供一種方法給 Web 角色執行個體來與 Worker 角色執行個體進行溝通。例如,使用者可以提交一項要求,透過 Windows Azure Web 角色運行的網頁來執行某些需要大量運算的工作。收到這項要求的 Web 角色執行個體可以將一則訊息寫入佇列中,用於描述要完成的工作。然後,等候這個佇列的 Worker 角色執行個體可以讀取訊息並執行指定的工作。任何結果都可以透過另一個佇列傳回或者用另一種方法加以處理。

SQL Azure

簡單來說,SQL Azure 是一個雲端上的 SQL Server (且有部份功能在第一個版本尚未完成)。您可以有一個 SQL Azure 的執行個體,不必要有 Windows Azure。您的資料庫應用程式可以存取 SQL Azure 而且方法與存取本機資料庫並無不同。與使用 Windows Azure 時相同,您可以使用當您管理內部 SQL Server 時所使用的相同的工具或熟悉的工具,來存取以及管理 SQL Azure。一切真的就是這麼簡單。有一點要注意的是,SQL Azure 的資料庫大小限制目前為 10GB。預計在 2010 年六月增加到 50GB。

Windows Azure Platform Appfabric

Windows Azure Platform AppFabric 是由兩種元件組成的,分別是「服務匯流排」(Service Bus)以及「存取控制 (Access Control)」。在說明這兩種元件之前,有一點值得注意,那就是還有一種產品也稱為 Windows Server Platform Appfabric,目前這兩種 “Appfabric” 產品並不一樣,不過它們都屬於 Microsoft 的同一個產品小組,而且它們的產品藍圖會隨時間變化而包含更緊密的分工。

「服務匯流排」元件、Windows Azure Platform Appfabric 會在網站的應用程式之間形成溝通管道。「服務匯流排」是居間的仲介,取得用戶端尋求目標服務的要求,然後再將該要求傳送至特定端點。「服務匯流排」是一種您可以獨立使用的雲端服務。歐洲的 EasyJet (易捷航空) 就是完全這麼做的。「服務匯流排」工作原理相對上簡單多了。當您使用如 WCF 的技術在組織中建立 Web 服務時,您必須公開「端點」,方便用戶端使用服務。當這些用戶端處於組織外部時,您必須想像如何通知服務、如何繞過防火牆、如何應付 NAT。 使用「服務匯流排」時,您首先要將自己的「端點(Endpoint)」註冊到「服務匯流排」,然後它就會利用找得到的 URI 來通知「端點」。這樣就可以讓各地的用戶端找到服務。接下來,您的應用程式必須開放連線至「服務匯流排」;進而保持連線開放。保持連線開放可以確保防火牆和 NAT 再也不是問題。「服務匯流排」可以隨時傳送流量至您的應用程式,同時因為已經在網路內部建立連線,所以不需要在防火牆上開啟其他連接埠。「服務匯流排」在任何時候都不會洩露網路的任何內容;「服務匯流排」會建立用戶端尋找端點時會用到的 IP 位址。

「存取控制」提供一種附帶識別控制的分散式應用程式。「存取控制」服務可以用來提供宣告識別應用程式適用的宣告資訊給用戶端。「存取控制」會向通過認證的用戶端應用程式發出權杖 (Token)。為了到「存取控制」進行認證,應用程式會傳送以下三種資訊之一:

 

  • 伺服器應用程式向用戶端應用程式發出的 32 位元金鑰。

  • 一種內含用戶端應用程式相關宣告的權杖 (Token)。

  • 一種描述 Security Assertion Markup Language (SAML) 應用的權杖 (Token)。

    「存取控制」接著會利用這種資訊以及您設定的各種規則來建立權杖 (Token)。整個過程的最終結果就是:伺服器應用程式可以使用一組宣告來判斷這個用戶端應用程式可以做以及不可以做的事。

    雲端工作負載

    那麼,什麼樣的工作負載適用在雲端上執行?

 

1. 斷斷續續

  1. 「斷斷續續」形態反映出您循環執行的應用程式、在特定時期使用的 Web 應用程式接下來會關閉、更新網站資訊之後在以後某一天重新開啟。對於大部份執行時間都得不到信任的環境中,這種形態可以釋放環境中的伺服器,不過因為循環工作負載的密集度,您無法增加其他的工作負載。現在您被需要付費、監督以及維護的伺服器弄得進退兩難,而且同時它們正不斷消耗資料中心的功能和空間。

2. 快速成長

  1. 「快速成長」形態同樣受人屬目;這種形態會應用至像 Twitter 的應用程式。您在伺服器上安裝應用程式,然後瞭解執行成效。您希望一切正常而且會有成千上萬個的用戶使用。組織中有這種形態,將會是 IT 部門的一項巨大挑戰。他們必須持續仔細檢查各種硬體需求,才能滿足需求。就以 Windows Azure 環境為例,提供新的映像給服務用戶端大約需要 20 分鐘的時間。在您自己的資料中心,提供新伺服器要以多少天或星期來計算。

3. 不可預測的爆發

  1. 這種形態是行銷或銷售小組的夢想,他們執行的 Web 應用程式突然間變成流行的事物,不過對 IT 部門而言,這卻是另一項巨大挑戰。這種突如其來的高峰會毀滅以秒規劃的產能。IT 部門面對一把雙刃劍。他們若過度指定產能,則造成伺服器網站閒置。他們若低估產能,則有價值的客戶會掉頭而去。

4. 可預測的爆發

  1. 這種形態的特性與「繼繼續續」形態類似,在這種形態中,您事先了解需求會在何時爆發。只要大家好好想一下,每個人至少可以舉出 6 個例子,例如,我敢說美國的 IRS 網站瞭解從 2 月到 4 月納稅日的高峰。Ticketmaster 是另一家可能與這種形態直接有關的公司。任何進行促銷活動的公司都可以建立一種可預測的高峰。

  2. 所有的這些形態代表資料中心當前浪費的產能。當您考慮公司採用雲端運算時,這是重要考量因素之一。在很多程度上,虛擬化技術的考量完全相同。將其他伺服器工作負載分攤到這部伺服器上,可以提高伺服器利用率。

何謂友善的雲端設計?

什麼是友善的雲端設計、什麼是不友善的?這是一個值 6 萬 4 千美元的問題。這個問題的部分解答和技術無關。解答也取決於您嘗試解決的工作問題是什麼?Windows Azure 旨在執行應用程式,如果目前有應用程式在 Windows 內部執行,它們就有一個在 Windows Azure 上執行的好機會。不過,目前有一些應用程式或服務不適用於 Windows Azure,例如 Active Directory、DNS、DHCP、NPS、IAS、WDS 或 TMG。這些全部都是基礎結構服務。它們不是 Windows Azure 的目標所在。實際上,目前所有筆者先前提及的服務都無法安裝到 Windows Azure。這是故意設計的,Windows Azure 的目標不是它們。以後開發的 Windows Azure 會更新這種設計,不過在本文章的刊登日期,當時情況不是如此。

思考雲端伺服器時的另一個考量就是遵守法律。例如,以德國或英國為例。這兩個國家推出各種法規,說明財務資訊或政府資訊不得儲存到境外任何地方。這表示您需要保證選擇的雲端廠商在當地有一個資料中心,即使開始擬定雲端解決方案之前,也應當保證廠商不會進行任何跨國抄錄的行為。

在本篇文章中,筆者希望提供更深入的 Windows Azure 和雲端應用程式全面性介紹。在本系列文章的最後部分,筆者會提到這種雲端如何影響 IT 專業人員。

本文章的各個小節摘自 Introducing Windows Azure 白皮書,部落格英文原文

其他參考資料: