圖片來源: 

iThome

微軟推出的雲端運算平臺Azure,標榜要延續.NET開發人員既有的開發經驗,讓開發人員可使用同樣的程式語言,來開發雲端應用程式。

實際上,若比較Azure應用程式和傳統Client-Server的網路應用的開發過程,仍然有許多差異。開發人員若不了解這些不同之處,就無法順利開發出Azure應用程式。

 重點1 
Azure內建執行環境有2種

第一個開發人員需要注意的不同是執行環境的架構不同。雖然Azure平臺中也是採用了相同的IIS 7網站伺服器,但是,微軟在Azure平臺上的虛擬機器中,安裝了兩種不同的執行環境。應用程式可以使用的執行環境還區分成兩種,包括了WebRole和WorkerRole,這兩種環境最大的不同點是網路功能不同。

WebRole環境可以提供對外的HTTP服務,就像是雲端應用程式的前臺,適合執行供使用者操作的前端網頁應用。而WorkerRole環境則不提供對外的HTTP連線,開發人員可以將不需要接觸使用者的後端商業邏輯程式,放在WorkerRole環境中執行。

微軟提供了一套支援Visual Studio 2008的Azure工具,可免費下載。安裝這套工具以後,當開發人員建立Azure專案時,就可以到Visual Studio的專案視窗中,找到WebRole和WorkerRole這兩個執行環境,開發人員可以依據應用程式的需求規畫,在這兩個環境中撰寫不同用途的程式。

實際上線時,Azure上的Fabric Contoller機制會自動將WebRole和WorkerRole環境中的程式,放到不同的虛擬機器上執行。開發人員可以在組態檔中分別設定這兩種執行環境的虛擬機器數量。

例如開發人員可以依照效能需求,在XML格式的組態檔中設定7個虛擬機器負責執行WebRole程式,而用2個虛擬機器來執行WorkerRole程式。不過,微軟釋出的Azure CTP版本,只能各使用1個虛擬機器來執行。

目前微軟已發表的Azure CTP版本中,只提供了1種規格的虛擬機器,包括了64位元Windows Server 2008作業系統、1.5~1.7Ghz的x64規格處理器、1.7GB記憶體,以及最高50GB的儲存空間。微軟表示,未來推出Azure正式版時,會提供更多規格的虛擬機器供企業選擇,企業可以決定購買哪些規格的虛擬機器來執行WebRole或WorkerRole上的程式。

 

 重點2 
只能在本地端模擬雲端環境來除錯

要測試Azure應用程式的品質時,目前,只能在本地端進行除錯。測試時,開發人員必須先到Azure工具中,啟動本地端的Azure模擬環境。

這個模擬環境會依據Azure應用程式所設定的組態資訊,能夠模擬出執行WebRole和WorkerRole的所有虛擬機器,讓開發人員逐一檢視應用程式在每一個虛擬機器中的執行情形,還能進一步結合Visual Studio 2008的除錯工具,來建立程式中斷點和追蹤程式變數的數值。

完成除錯後,再將Azure專案部署到雲端。部署Azure專案時,Azure工具會將WebRole和WorkerRole中的程式一起打包壓縮成1個部署檔。

開發人員只需要將專案的部署檔和組態檔,上傳到Azure服務的開發者平臺中。開發者平臺會進一步提供線上部署功能,讓開發人員將Azure應用部署到微軟的雲端運算環境中執行。

如果開發者不想使用Visual Studio,微軟也提供了一套Azure SDK,可以在命令列的模式中進行所有的Azure開發工作,可以使用指令來建立Azure應用程式需要的部署檔。SDK中同樣也包括了除錯用的Azure環境模擬程式。

目前,微軟發表的Azure CTP版本只支援了ASP.NET語言,在Visual Studio中的ASP.NET元件都可以使用,例如可以直接用滑鼠將日曆元件托曳到WebRole環境的程式中,如同過去的開發方式一樣,設定好日曆元件需要的相關屬性,就可以使用。

 

 重點3 
只能使用HTTP協定存取資料

對開發人員而言,另外一個很大的轉變是Azure應用程式存取資料的方式和過去的網頁應用程式有所不同。

在Azure的應用程式,不論是在WebRole和WorkerRole環境中,都只能運用API透過HTTP協定來存取XML格式的資料。無法像過去那樣使用關連式資料庫的查詢指令,透過資料庫連線機制,傳送SQL指令來存取想要的資料。

回到使用者的角度來看,就可以很容易地了解微軟採取這種存取方式的原因。

當使用者連線到Azure應用時,不一定會持續連線到相同虛擬機器上的應用程式。可能第一次的HTTP請求(Request)由1號虛擬機器提供服務,但是,第2次送出請求時,可能因1號虛擬機器滿載,Azure平臺會將使用者的請求轉給2號虛擬機器。

使用者瀏覽的網頁,其實是不同位置中的同一支應用程式,所以,這兩支不同應用程式不會存取到相同虛擬機器上的儲存空間。再加上1號虛擬機器和2號虛擬機器,不一定會放到同一臺實體伺服器中。所以,應用程式也無法使用到相同實體伺服器的記憶體。

例如,在ASP.NET程式中,開發人員常會使用IIS內建的Session變數,來累計每個網頁的瀏覽次數。但是,在1號虛擬機器上的Session變數和2號虛擬機器上的Session變數,即使名稱相同,但實質上是屬於不同的變數,加總時,資料無法累積。

為了確保資料的一致性,Azure平臺提供了1套共用的資料存取網址,不論哪一個虛擬機器上的程式,都透過相同網址,就能存取到相同的內容。

WorkerRole環境中的應用程式,同樣也需要先將運算結果儲存到Azure提供的資料網址中,WebRole的程式再從這個網址中取得運算結果。

這樣的資料存取方式,其實正是Web 2.0網站常用的API存取架構,讓所有資料傳遞都透過API,知名相片網站Flickr就是透過這樣的方式來提供服務。不過,對於企業內部開發人員而言,這是一個與過去習慣不同的開發方式。

因為只能透過HTTP協定來交換資料與存取資料,既有的ASP.NET程式多半無法原封不動地直接放到Azure環境中執行,所有不適合Azure環境的資料存取程式,全部都要修改才行。

對開發者而言,這兩大差異不只是技術上的不同,還需要開發流程和開發觀念上的改變,才能順利打造出Azure應用程式。

 

 重點4 
Azure較適合公用運算的服務

除此之外,還有1項開發者需要了解的特質,Azure平臺屬於分散式運算的環境,適合分散式的網路應用。臺灣微軟資深應用架構技術經理李匡正表示,例如像化學分子模擬的複雜科學計算,或程式間關連度很高的ERP等,目前還不適合放到Azure上。

因為Azure可以同時用很多虛擬機器來執行1支程式,但是,這些程式彼此是獨立分開執行,無法同時去解1個問題。李匡正表示:「Azure比較適合公用運算(Utility Computing)性質的應用,例如郵件服務。」

 

 重點5 
先做好服務評估與開發轉型

李匡正建議企業要採用Azure平臺前,必須先做好幾項準備工作。首先要精算現有IT系統的成本結構,了解每一項內部的網路服務需負擔多少成本,以利價格比較。

接著從企業整體需求,來規畫可以放到雲端的IT服務項目,並且依據企業內部使用者的需求,清楚地訂定出每一項IT服務需要的服務水準條款(SLA),例如,1個服務的每年當機時間不能超過多久等。

此外,Azure程式的開發思維不同,企業也需要重新培訓IT人員,讓他們熟悉Azure程式的開發方式,並且依據Azure程式的部署和除錯方式,調整開發流程等。

雖然,微軟要等到今年年底才會正式發表Azure,李匡正說:「有興趣導入Azure的企業,現在就可以開始準備。」

 

 開發者角度的Azure雲端運算環境 

1. 企業導入雲端技術前的準備

2. 精算現有 IT 成本結構

3. 全面性規劃與訂定 SLA

4. 人員技能養成

5. IT 基礎環境 (身分驗證機制) 與開發流程確立

資料來源:微軟,iThome整理,2009年3月

 

【相關報導請參考「撥開微軟Azure雲端運算的迷霧」】

熱門新聞

Advertisement