力求實現(xiàn)在互聯(lián)網(wǎng)上托管運行應(yīng)用程序和服務(wù)這個愿景的絕非微軟這一家提供商;要是談?wù)撐④浽贏zure方面的愿景,不同時提到其主要競爭對手們的舉措是不可能的。比如說,谷歌就一直在開發(fā)谷歌應(yīng)用引擎(GAE),亞馬遜也早就有了亞馬遜彈性計算(EC2)平臺。不過,Azure與GAE的相似處比它與 EC2的相似處更多;EC2的特點主要是租用基于硬件的資源,而不是可在上面編程的一種平臺。
本文將介紹為Azure平臺開發(fā)應(yīng)用程序需要具備什么條件,尤其是關(guān)注Visual Studio開發(fā)者的要求。弄清楚可以使用哪些替代語言來開發(fā)基于Azure的應(yīng)用程序,另外了解Azure可能很適合的幾種場合以及Azure的價格結(jié)構(gòu)。
Azure如何建立在Windows之上?
基于Azure的應(yīng)用程序其最大的承諾就是它們能夠根據(jù)需要來實時擴展。因而,客戶只要使用實際需要的那部分資源,而不是針對給現(xiàn)有環(huán)境帶來重大壓力或未充分利用現(xiàn)有環(huán)境的一定數(shù)量的資源編制預(yù)算。 Azure提供了這種功能:使用Azure這個平臺,將任何系統(tǒng)(從用戶基礎(chǔ)架構(gòu)的某些部分直至整個基礎(chǔ)架構(gòu))遷移到云端。這類似使用如今不同版本的 Windows;實際上,微軟聲稱Azure是一款新的Windows平臺。
科羅拉多CustomWare公司的軟件架構(gòu)師Jeff Certain說:“微軟Azure大有潛力可為,讓我們可以卸載計算密集型任務(wù),從而讓我們可以靈活擴展,而成本只需要傳統(tǒng)解決方案的一小部分。”
向上擴展的這種功能仍需要用戶進行一番手動調(diào)整和決策,不過這個過程的一些方面可以實現(xiàn)自動化。Certain補充說:“Azure存在的缺點之一是,它仍需要手動干預(yù)來進行擴展。引入了允許以編程方式來啟動新節(jié)點的應(yīng)用編程接口(API)后,將為多種令人關(guān)注的應(yīng)用場合創(chuàng)造條件。”
微軟的Azure瞄準(zhǔn)了好幾個不同的群體:Web開發(fā)者、企業(yè)開發(fā)者、獨立軟件開發(fā)商(ISV)以及公司企業(yè)。針對每個群體的措辭略有不同,但是微軟一向做出的基本承諾卻一樣:微軟Windows開發(fā)者或者使用或經(jīng)銷基于微軟的開發(fā)產(chǎn)品的公司企業(yè),可以充分利用現(xiàn)有的知識及/或基礎(chǔ)架構(gòu),充分享受基于云的計算所帶來的好處。
Azure的幾個主要組件
微軟的Windows Azure服務(wù)平臺分為幾個主要的組件,其中一大組件就是Windows Azure的各種開發(fā)工具。這類工具包括:.NET Services,這套微軟托管的服務(wù)旨在幫助用戶致力于開發(fā)應(yīng)用程序;微軟SQL Azure,這是一套基于SQL Server的數(shù)據(jù)服務(wù);以及Live Services,讓用戶可以充分利用Live框架,從而利用現(xiàn)有的Live服務(wù),比如Live ID和Live Messenger。
其中兩項服務(wù)應(yīng)該會尤其吸引現(xiàn)有的.NET開發(fā)者。首先,.NET Services有助于方便部署基于云的應(yīng)用程序,處理原本由用戶來處理的棘手任務(wù)。它又包括兩項服務(wù):一個是訪問控制(Access Control),該服務(wù)突破了許多公司的組織結(jié)構(gòu),簡化了為應(yīng)用程序確保安全的任務(wù)。另一個是.NET服務(wù)總線,用微軟的話來說,“它提供了一種安全的、基于標(biāo)準(zhǔn)的消息傳送基礎(chǔ)架構(gòu),大大降低了開發(fā)組合式應(yīng)用程序的門檻,哪怕這些應(yīng)用程序的組件必須在不同的企業(yè)之間進行傳送。”
要注意:之前版本的.NET Services包括Workflow Service,該服務(wù)擴展了Workflow Foundation,以便管理某個應(yīng)用程序各部分之間的相互聯(lián)系,但是該服務(wù)最近被擯棄了。微軟承諾將來會推出更多的.NET服務(wù)。
第二項服務(wù)是微軟SQL Azure,它簡化了將SQL Server擴展到云端,作為基于Web的服務(wù)這一任務(wù)。主要目標(biāo)同樣是消除部分復(fù)雜性。微軟承諾,“SQL Azure將提供一套豐富的集成服務(wù),讓移動用戶、遠程辦公室或業(yè)務(wù)合作伙伴能夠?qū)?shù)據(jù)進行關(guān)系查詢、搜索、報告、分析、集成和同步等處理。目前,微軟提供一項關(guān)系數(shù)據(jù)庫服務(wù)——最近更名為微軟SQL Azure數(shù)據(jù)庫(SAD)。與.NET Services方面一樣,微軟也承諾將來會推出更多與數(shù)據(jù)庫相關(guān)的服務(wù)。
從Azure入手
微軟的 Azure網(wǎng)站上面包含幾個主要的軟件開發(fā)工具包(SDK),幫助用戶入手,其中包括Windows Azure SDK(http://www.microsoft.com/download/en/default.aspx)和微軟.NET Services SDK(http://www.microsoft.com/download/en/default.aspx)。Visual Studio開發(fā)者對面向微軟Visual Studio的Windows Azure工具(http://www.microsoft.com/download/en/default.aspx)可能也會有興趣。提供的工具包括:用于構(gòu)建云服務(wù)的C#和Project Templates,更改服務(wù)角色配置的工具,調(diào)試在開發(fā)結(jié)構(gòu)(Development fabric)中運行的云服務(wù)角色的功能,以及開發(fā)和包裝云服務(wù)包的功能。
使用Azure的Visual Studio SDK的系統(tǒng)要求是:Windows 7、Windows Server 2008或至少安裝SP1的Windows Vista;SQL Server 2005簡易版(或更高版本);以及安裝SP1的VS 2008、Visual Studio 2010測試版1,或者安裝SP1的微軟Visual Web Developer 2008簡易版。
Java SDK或Ruby SDK與Azure結(jié)合使用
微軟支持Visual Studio開發(fā)者,這并不讓人意外;但是也許讓人意外的是,微軟的Azure網(wǎng)站上面還有鏈接指向了基于Java的SDK和基于Ruby的SDK。開發(fā) Java SDK和Ruby SDK的并不是微軟的合作伙伴公司,而是微軟自己。微軟在其Azure FAQ(http://www.windowsazure.com/zh-cn/)上表示,用戶們在將來有望看到更多與Azure兼容的語言。
眼下,用戶可以使用面向微軟.NET Services的Java SDK(由Schakra公司開發(fā)),更多的信息請訪問http://www.schakra.com/stuff-we-do /jdotnetservices.html和http://www.jdotnetservices.com/index.html。另外,還可以使用最新版本的面向.NET Services的Ruby SDK(由ThoughtWorks開發(fā))。
與Azure相比,谷歌應(yīng)用引擎支持使用Java和Python來編寫應(yīng)用程序。亞馬遜EC2支持一系列廣泛的操作系統(tǒng),包括Windows 2003、紅帽企業(yè)版Linux、Open Solaris和甲骨文企業(yè)版Linux;支持一小批應(yīng)用開發(fā)環(huán)境,比如IBM sMash、JBoss企業(yè)應(yīng)用平臺和Ruby on Rails;還支持數(shù)款應(yīng)用服務(wù)器,包括IBM WebSphere應(yīng)用服務(wù)器、Java應(yīng)用服務(wù)器和甲骨文WebLogic服務(wù)器。
Azure的一個重要方面是其服務(wù)的價格和條款。微軟之前在這方面諱莫如深,這讓許多企業(yè)無法更積極大膽地使用Azure,但是該公司最近披露了相關(guān)信息。價格方面的因素包括:計算時間,以機器小時來衡量;帶寬需求與Azure數(shù)據(jù)中心之間來回傳輸?shù)淖止?jié),以GB來衡量;存儲容量,以GB來衡量;以及以 Gets和Puts等應(yīng)用請求來衡量的事務(wù)。
定價模式的出現(xiàn)對于消除許多人的擔(dān)憂應(yīng)該大有幫助,即使微軟一直聲稱其價格與競爭對手的價格相比頗具競爭力。雖然最終的價位“具有競爭力”,但是微軟為Azure宣布的價格在幾個方面卻不如谷歌應(yīng)用引擎(GAE)來得誘人。
首先,宣布的預(yù)覽版(post-beta)價格表明Azure的價格有點貴。想詳細了解頗有競爭力的價格結(jié)構(gòu),其次,可能也是最重要的是,GAE提供了一定數(shù)量的免費事務(wù)。據(jù)谷歌聲稱,這個數(shù)量足以“滿足相當(dāng)高效的應(yīng)用程序,可支持每個月500萬左右的頁面瀏覽量。”這方面差異的重要性完全壓倒了可以免費使用谷歌來運行一定規(guī)模的網(wǎng)站這個功能。
Roger Jennings說:“如果微軟不改變其策略,可能會證明這將是客戶采用Azure平臺面臨的一大障礙。以往,微軟讓用戶可以免費,或者至少以比競爭對手更低的成本,試用其新的技術(shù)或重要技術(shù)。能夠免費試用GAE平臺是GAE較之Azure的一個很有吸引力的優(yōu)勢。”
請注意:亞馬遜針對使用Windows而不是使用Linux/UNIX的亞馬遜EC2用戶收取高價。就依賴Windows的服務(wù)而言,微軟的方案比EC2 來得便宜;但是EC2基于非Window的平臺要比微軟的Azure服務(wù)來得便宜。價格也不一樣,這取決于用戶在美國還是在歐洲。
請注意:任何一家PaaS或IaaS云計算提供商的條款在一段時間后可能有所變動,任何軟件即服務(wù)(SaaS)云計算也是如此。比如說,GAE的價格FAQ上面就注明,谷歌可能會提前60天改變其服務(wù)的價格條款;任何云服務(wù)提供商極有可能會有類似的條款。
使用云計算方案方面可能不同的是客戶忠于某一家云服務(wù)提供商的程度:給予某一家提供商的信任很可能會在決定部署云計算應(yīng)用程序方面起到影響。至于將任何基于PaaS或IaaS的應(yīng)用程序移植到競爭對手的服務(wù)平臺上有多容易,這仍需拭目以待,但是用戶甭指望這個遷移過程會很容易。
使用Azure時有兩種基本的場景經(jīng)常被提及。在第一個例子中,用戶將Azure用作整個應(yīng)用程序的云計算平臺。在第二個例子中,用戶在Azure上編程,將現(xiàn)有的應(yīng)用程序擴展到云端,或者使用Azure作為補充,以此增強比較像傳統(tǒng)應(yīng)用程序的應(yīng)用程序。
不妨看一下第一種情況。假設(shè)一家公司有著龐大但呈現(xiàn)出季節(jié)性的負載,開發(fā)人員在開發(fā)時必須兼顧這個特點。由于這種負載的波動性很大,如果像Azure這樣的方案讓開發(fā)人員只要為實際所需的資源付費,那么他們購買高峰期間所必需的軟硬件就可能不大明智。
類似的是,互聯(lián)網(wǎng)新興公司可能事先無法知道其基礎(chǔ)架構(gòu)方面的需要。要是低估了需求,可能導(dǎo)致生意流失,公司的產(chǎn)品給人留下很不好的第一印象;要是高估了需求,又有可能將過高的成本花費在未充分利用起來或根本就沒有用到的基礎(chǔ)架構(gòu)上。
這后一個例子可能還是將應(yīng)用程序擴展到云端的一種使用場合。比如說,在某些季度生意大好需要基礎(chǔ)架構(gòu)的某些部分能夠相應(yīng)地上下擴展。而基礎(chǔ)架構(gòu)的大部分可以保持原狀,但是負載比較大的那部分可以重新設(shè)計,以便在云端環(huán)境下順利運行。
試一試Azure
Azure 模式與開發(fā)基于傳統(tǒng)桌面的應(yīng)用程序、甚至基于Web的應(yīng)用程序的模式明顯背道而馳。在別人的平臺上托管運行應(yīng)用程序在組織管理基礎(chǔ)架構(gòu)和擴展應(yīng)用程序底層的硬件方面具有一些重大的潛在好處。
如果公司的根本要求高度變化或無從知曉,好處來得尤為明顯。Azure模式還讓用戶可以針對所需資源來支付月租費,而不是事先為全部所需的資源付費。如果在設(shè)計服務(wù)時不清楚需要什么樣的資源,這種模式尤其大有幫助。不過,這種模式也存在一些重大風(fēng)險。
首先,要預(yù)測成本可能更困難了。要是一家公司不清楚自己將來要使用多少資源,就很難估計需要花費多少錢。要注意:如果客戶保證使用一定數(shù)量的資源,包括 Azure在內(nèi)的所有主要云服務(wù)允許客戶以優(yōu)惠的費率購買更多數(shù)量的服務(wù)。
其次,應(yīng)用程序有多好完全取決于PaaS或IaaS提供商提供的底層服務(wù)。自Web服務(wù)面市以來,這個注意事項就屢試不爽,但是隨著用戶們更全身心地投入到云計算開發(fā),這個注意事項越來越重要。比如說,谷歌的 mail最近數(shù)次遇到了停運。雖然它以往的正常運行時間很長,但是可以說任何服務(wù)都有可能遇到某種程度的停運。這時候,服務(wù)級別協(xié)議(SLA)就能起到作用,它針對正常運行時間及其他服務(wù)保障給出了具體的承諾。要確保認真審閱了這些SLA。
第三,要考慮某一家提供商在提供承諾服務(wù)方面的決心和能力。另一換一家提供商的成本相當(dāng)高;微軟、谷歌和亞馬遜在架構(gòu)方面不是完全彼此兼容;如果面向某一家提供商的應(yīng)用程序想在另外兩家提供商的云計算平臺上運行,用戶就得重新為其設(shè)計架構(gòu)。
Azure模式仍處于新興的發(fā)展階段——謹記:Azure仍處于測試版階段。但是過不了多久,用戶們就會開始考慮Azure有多適合,而定價模式的出現(xiàn)和SLA對于用戶們合理評估成本和潛在的好處大有幫助。在幾種場景下,Azure式的應(yīng)用程序可能很合理;但是開發(fā)者應(yīng)該謹慎行事。認真關(guān)注一下微軟的SLA、成本以及現(xiàn)有和將來可能會有的服務(wù)。最后,還要事先弄清楚萬一某家云服務(wù)提供商沒有履行約定的承諾,該如何全身而退。