Azure开发那点事

 微软Azure开发简介

Azure服务平台(简称Azure)是微软涉足云服务平台领域的首次尝试,希望借此实施平台即服务(PaaS)类似的功能。Azure包括一款操作系统(Windows Azure)以及由开发者服务、通信服务和数据服务组成的几个集合,这些服务旨在简化基于云的Windows应用程序,并在云端托管运行的任务。

微软早在2009年7月举行的全球合作伙伴大会(Worldwide Partner Conference)上披露了Azure服务平台的价格及其他详细信息,包括该平台几个主要组件的服务级别协议和初定发布日期(当年11月)。

力求实现在互联网上托管运行应用程序和服务这个愿景的绝非微软这一家提供商;要是谈论微软在Azure方面的愿景,不同时提到其主要竞争对手们的举措是不可能的。比如说,谷歌就一直在开发谷歌应用引擎(GAE),亚马逊也早就有了亚马逊弹性计算(EC2)平台。不过,Azure与GAE的相似处比它与EC2的相似处更多;EC2的特点主要是租用基于硬件的资源,而不是可在上面编程的一种平台。

本文将介绍为Azure平台开发应用程序需要具备什么条件,尤其是关注Visual Studio开发者的要求。弄清楚可以使用哪些替代语言来开发基于Azure的应用程序,另外了解Azure可能很适合的几种场合以及Azure的价格结构。

Azure如何建立在Windows之上?

基于Azure的应用程序其最大的承诺就是它们能够根据需要来实时扩展。因而,客户只要使用实际需要的那部分资源,而不是针对给现有环境带来重大压力或未充分利用现有环境的一定数量的资源编制预算。Azure提供了这种功能:使用Azure这个平台,将任何系统(从用户基础架构的某些部分直至整个基础架构)迁移到云端。这类似使用如今不同版本的Windows;实际上,微软声称Azure是一款新的Windows平台。

科罗拉多CustomWare公司的软件架构师Jeff Certain说:“微软Azure大有潜力可为,让我们可以卸载计算密集型任务,从而让我们可以灵活扩展,而成本只需要传统解决方案的一小部分。”

向上扩展的这种功能仍需要用户进行一番手动调整和决策,不过这个过程的一些方面可以实现自动化。Certain补充说:“Azure存在的缺点之一是,它仍需要手动干预来进行扩展。引入了允许以编程方式来启动新节点的应用编程接口(API)后,将为多种令人关注的应用场合创造条件。”

微软的Azure瞄准了好几个不同的群体:Web开发者、企业开发者、独立软件开发商(ISV)以及公司企业。针对每个群体的措辞略有不同,但是微软一向做出的基本承诺却一样:微软Windows开发者或者使用或经销基于微软的开发产品的公司企业,可以充分利用现有的知识及/或基础架构,充分享受基于云的计算所带来的好处。

面向云端开发的Azure工具

Azure的几个主要组件

微软的Windows Azure服务平台分为几个主要的组件,其中一大组件就是Windows Azure的各种开发工具。这类工具包括:.NET Services,这套微软托管的服务旨在帮助用户致力于开发应用程序;微软SQL Azure,这是一套基于SQL Server的数据服务;以及Live Services,让用户可以充分利用Live框架,从而利用现有的Live服务,比如Live ID和Live Messenger。

其中两项服务应该会尤其吸引现有的.NET开发者。首先,.NET Services有助于方便部署基于云的应用程序,处理原本由用户来处理的棘手任务。它又包括两项服务:一个是访问控制(Access Control),该服务突破了许多公司的组织结构,简化了为应用程序确保安全的任务。另一个是.NET服务总线,用微软的话来说,“它提供了一种安全的、基于标准的消息传送基础架构,大大降低了开发组合式应用程序的门槛,哪怕这些应用程序的组件必须在不同的企业之间进行传送。”

要注意:之前版本的.NET Services包括Workflow Service,该服务扩展了Workflow Foundation,以便管理某个应用程序各部分之间的相互联系,但是该服务最近被摈弃了。微软承诺将来会推出更多的.NET服务。

第二项服务是微软SQL Azure,它简化了将SQL Server扩展到云端,作为基于Web的服务这一任务。主要目标同样是消除部分复杂性。微软承诺,“SQL Azure将提供一套丰富的集成服务,让移动用户、远程办公室或业务合作伙伴能够对数据进行关系查询、搜索、报告、分析、集成和同步等处理。目前,微软提供一项关系数据库服务——最近更名为微软SQL Azure数据库(SAD)。与.NET Services方面一样,微软也承诺将来会推出更多与数据库相关的服务。

想了解这些服务的更多信息,请访问Azure的主页:http://www.microsoft.com/azure/default.mspx。

从Azure入手

微软的Azure网站上面包含几个主要的软件开发工具包(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开发者对面向微软Visual Studio的Windows Azure工具(http://www.microsoft.com/download/en/default.aspx)可能也会有兴趣。提供的工具包括:用于构建云服务的C#和Project Templates,更改服务角色配置的工具,调试在开发结构(Development fabric)中运行的云服务角色的功能,以及开发和包装云服务包的功能。

使用Azure的Visual Studio SDK的系统要求是: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结合使用

微软支持Visual Studio开发者,这并不让人意外;但是也许让人意外的是,微软的Azure网站上面还有链接指向了基于Java的SDK和基于Ruby的SDK。开发Java SDK和Ruby SDK的并不是微软的合作伙伴公司,而是微软自己。微软在其Azure FAQ(http://www.windowsazure.com/zh-cn/)上表示,用户们在将来有望看到更多与Azure兼容的语言。

眼下,用户可以使用面向微软.NET Services的Java SDK(由Schakra公司开发),更多的信息请访问http://www.schakra.com/stuff-we-do/jdotnetservices.html和http://www.jdotnetservices.com/index.html。另外,还可以使用最新版本的面向.NET Services的Ruby SDK(由ThoughtWorks开发)。

与Azure相比,谷歌应用引擎支持使用Java和Python来编写应用程序。亚马逊EC2支持一系列广泛的操作系统,包括Windows 2003、红帽企业版Linux、Open Solaris和甲骨文企业版Linux;支持一小批应用开发环境,比如IBM sMash、JBoss企业应用平台和Ruby on Rails;还支持数款应用服务器,包括IBM WebSphere应用服务器、Java应用服务器和甲骨文WebLogic服务器。

比较微软Azure的价格策略

Azure的一个重要方面是其服务的价格和条款。微软之前在这方面讳莫如深,这让许多企业无法更积极大胆地使用Azure,但是该公司最近披露了相关信息。价格方面的因素包括:计算时间,以机器小时来衡量;带宽需求(与Azure数据中心之间来回传输的字节),以GB来衡量;存储容量,以GB来衡量;以及以Gets和Puts等应用请求来衡量的事务。

定价模式的出现对于消除许多人的担忧应该大有帮助,即使微软一直声称其价格与竞争对手的价格相比颇具竞争力。虽然最终的价位“具有竞争力”,但是微软为Azure宣布的价格在几个方面却不如谷歌应用引擎(GAE)来得诱人。

首先,宣布的预览版(post-beta)价格表明Azure的价格有点贵。想详细了解颇有竞争力的价格结构,请参阅Roger Jennings的博文《比较Azure和谷歌应用引擎的价格》(http://oakleafblog.blogspot.com/2009/07/comparison-of-azure-and-google-app.html)。

其次,可能也是最重要的是,GAE提供了一定数量的免费事务。据谷歌声称,这个数量足以“满足相当高效的应用程序,可支持每个月500万左右的页面浏览量。”这方面差异的重要性完全压倒了可以免费使用谷歌来运行一定规模的网站这个功能。

Roger Jennings说:“如果微软不改变其策略,可能会证明这将是客户采用Azure平台面临的一大障碍。以往,微软让用户可以免费,或者至少以比竞争对手更低的成本,试用其新的技术或重要技术。能够免费试用GAE平台是GAE较之Azure的一个很有吸引力的优势。”

现在可以获得关于GAE的价格策略的信息(http://code.google.com/appengine/docs/billing.html)和亚马逊EC2的价格策略(http://aws.amazon.com/ec2/#pricing)。请注意:亚马逊针对使用Windows而不是使用Linux/UNIX的亚马逊EC2用户收取高价。就依赖Windows的服务而言,微软的方案比EC2来得便宜;但是EC2基于非Window的平台要比微软的Azure服务来得便宜。价格也不一样,这取决于用户在美国还是在欧洲。

请注意:任何一家PaaS或IaaS云计算提供商的条款在一段时间后可能有所变动,任何软件即服务(SaaS)云计算也是如此。比如说,GAE的价格FAQ(http://code.google.com/appengine/kb/)上面就注明,谷歌可能会提前60天改变其服务的价格条款;任何云服务提供商极有可能会有类似的条款。

使用云计算方案方面可能不同的是客户忠于某一家云服务提供商的程度:给予某一家提供商的信任很可能会在决定部署云计算应用程序方面起到影响。至于将任何基于PaaS或IaaS的应用程序移植到竞争对手的服务平台上有多容易,这仍需拭目以待,但是用户甭指望这个迁移过程会很容易。

用Azure来开发的风险和好处

采用Azure的典型场景

使用Azure时有两种基本的场景经常被提及。在第一个例子中,用户将Azure用作整个应用程序的云计算平台。在第二个例子中,用户在Azure上编程,将现有的应用程序扩展到云端,或者使用Azure作为补充,以此增强比较像传统应用程序的应用程序。

不妨看一下第一种情况。假设一家公司有着庞大但呈现出季节性的负载,开发人员在开发时必须兼顾这个特点。由于这种负载的波动性很大,如果像Azure这样的方案让开发人员只要为实际所需的资源付费,那么他们购买高峰期间所必需的软硬件就可能不大明智。

类似的是,互联网新兴公司可能事先无法知道其基础架构方面的需要。要是低估了需求,可能导致生意流失,公司的产品给人留下很不好的第一印象;要是高估了需求,又有可能将过高的成本花费在未充分利用起来或根本就没有用到的基础架构上。

这后一个例子可能还是将应用程序扩展到云端的一种使用场合。比如说,在某些季度生意大好需要基础架构的某些部分能够相应地上下扩展。而基础架构的大部分可以保持原状,但是负载比较大的那部分可以重新设计,以便在云端环境下顺利运行。

试一试Azure

Azure模式与开发基于传统桌面的应用程序、甚至基于Web的应用程序的模式明显背道而驰。在别人的平台上托管运行应用程序在组织管理基础架构和扩展应用程序底层的硬件方面具有一些重大的潜在好处。

如果公司的根本要求高度变化或无从知晓,好处来得尤为明显。Azure模式还让用户可以针对所需资源来支付月租费,而不是事先为全部所需的资源付费。如果在设计服务时不清楚需要什么样的资源,这种模式尤其大有帮助。不过,这种模式也存在一些重大风险。

首先,要预测成本可能更困难了。要是一家公司不清楚自己将来要使用多少资源,就很难估计需要花费多少钱。要注意:如果客户保证使用一定数量的资源,包括Azure在内的所有主要云服务允许客户以优惠的费率购买更多数量的服务。

其次,应用程序有多好完全取决于PaaS或IaaS提供商提供的底层服务。自Web服务面市以来,这个注意事项就屡试不爽,但是随着用户们更全身心地投入到云计算开发,这个注意事项越来越重要。比如说,谷歌的mail最近数次遇到了停运。虽然它以往的正常运行时间很长,但是可以说任何服务都有可能遇到某种程度的停运。这时候,服务级别协议(SLA)就能起到作用,它针对正常运行时间及其他服务保障给出了具体的承诺。要确保认真审阅了这些SLA。

相关推荐