Windows Azure 系列分享一:开始基于Windows Azure的开发与部署所需的概念和软件
最近公司接触Windows Azure, 在苦苦摸索一个多月后,感受颇丰,故在此分享,与博友们分享一点经验。
第一篇讲一些基本的概念和所需要使用的软件。
1、什么是Azure?
Azure是比较新的一个概念,为什么说是概念而不是说产品呢,因为Azure的技术基础是相对比较成熟的,现在不管是Amazon的, 还是Microsoft的, 还是Google,开始做云都是很快做起来的,而不是说要搞个三五年的研究才出来这么个产品。但是大家会发现,做云技术的都是些比较大的公司,很少有新创业的公司能自己办云服务的。这其中原因要追溯到云技术的起源。最早做云的是亚马逊,大家知道亚马逊最早是买书的,在网络上买,很多投资人给他们投了很多钱在全世界各地买了无数服务器和资源,但是最近几年,他们发现,这么多硬件资源,其中只有15%都不到在使用。但是东西已经买了,而且这也不是什么增值的东西,也卖不出去。于是他们想办法,怎么去利用这么多过剩资源,正巧美国一所研究机构在研究云技术,或者叫云概念,简单的说就是将过剩的硬件资源组合起来再提供给用户使用,然后按照使用量收费,用得多收的多,用得少收的少。这是一个很好的想法,好处不用多说,大家都懂的。于是一拍即合,就出现了最早的亚马逊的云服务。
现在的云服务主要有3种概念:IaaS(Infrastructure as a Service),即硬件设施就是一种服务;PaaS(Platform as a Service), 平台是一种服务;SaaS(Software as a Service),软件就是一种服务。亚马逊最早提供的就是IaaS;现在微软主要提供的PaaS,最近也开放了IaaS的产品;SaaS各家都有,知道SOA的基本都知道,现在的BS开发架构就是这种意思。
我们选择用Windows Azure,并不是说它的性能就比别家好,功能比别家强,服务比别家好,主要是因为他提供比较完善的基于Windows开发的PaaS,我们现在都是Windows开发平台,中小型企业一般会选择Windows,因为开发周期短,成本低,维护方便;价格方面还算比较便宜,可以接受。像我们公司,我们的BS产品的使用者有高峰期和低谷期,高峰期只有一两月,我们可以用多少付多少钱。云服务提供商的选择应根据自己公司的实际需求而定,反正一句话:没有最好,只有最合适。
另外微软提供的是公共云,当然也有私有云的解决方案,觉得需要数据安全的可以考虑将数据私有化。不多说,详细地网上有很多资料,可以慢慢看。
2、需要知道的一些概念:
Portal:Windows Azure的管理中心网站,http://www.windowsazure.com,和一个MSN帐号绑定,现在中国大陆不能直接用,需要从香港或者其他国家申请,每个帐号可以申请一个3个月免费使用的subscription,不过需要一个香港的电话号码,或者其他支持国家的手机号码,和一张信用卡。或者如果是公司的话可以加入bizspark,详情参考http://www.bizspark.com。
Subscription:简单的说就好比一个MSN可以绑定不同的云服务设置环境,因为我一个帐号可以有用于测试的,用于正式发布的,就好比战网通行证里可以有多个WOW实例一样。所有的服务和付费都基于subscription.
Host Service:用于部署我们的服务的节点。
Storage Account: 云上提供的Message Queue, Blob大文件存储,Table结构化数据存储都需要存储帐号。由于azure提供自动负载平衡,每个虚拟机都可能遭遇非预知的切换节点,重启,更改存储位置,所以我们以往用IO来写文件的方式将会变得没啥用处,在云上要做数据动态存储,要么数据库,要么blog或者Table。
Windows Azure SDK:用于创建Windows Azure项目的开发包
Windows Azure Emulator:Windows Azure本地模拟器,随SDK一并安装。
Package:Windows Azure的发布的时候,SDK都会先打包再上传部署的。
Role:两种WebRole和WorkerRole,WebRole会自动部署在IIS上,WorkerRole会部署为一个普通进程。目前,我通过多方面测试和证实WorkerRole上不能正确发布基于REST的WCF Service。详细说明我会在详细讲到Worker Role 的blog里说。
Instance:一个Role可以在多个Instance上部署,每个Instance就是一个虚拟机,你可以用远程桌面连接的那种,他们都自动做负载平衡。微软建议每个Role至少需要2个Instance,原因么我上面说到过了。这个是收费的大头。Instance根据CPU和内存的大小从极小到极大分成好几种,具体看官网吧。
Certifacte:用于验证本地与云端的通讯。
SQL Azure:SQL在云上的版本。
Firewall:数据库访问需要将本地的IP地址加入到Firewall里才能本地连接SQL Azure。
Service Bus:如果你想把代码放在自己的机器上,但是又想让外面的人访问你的service,就需要用到Service Bus。它还有很多功能,之后细讲。
Virtual Network:类似于VPN,之后细讲。
3、需要装的软件:
1)Visual Studio 2010 Ultimate(如果你是bizspark的成员,你就可以免费拥有一个subscription,每个月2个Small Instance,5G Web SQL Azure)
2)Windows Azure SDK
https://www.windowsazure.com/en-us/develop/downloads/
Java,PHP也可以用
3)Fiddler(建议,用来模拟/测试HTTP Request)
4)SQL Server Management Studio 2008 R2 / SSMS 2012
5) Script Wizard,用来将数据库移植到SQL Azure
http://sqlazuremw.codeplex.com/(3rd-part)
http://msdn.microsoft.com/en-us/library/windowsazure/ee730904.aspx
6)Azure Diagnostics Manager用来监测调试数据的工具
http://cerebrata.com/Products/AzureDiagnosticsManager/ (3rd-part,收费,30天试用,有dashboard)
当然在codeplex也有免费的。
7)一颗热爱新技术的心!
另外不得不说一句,卖软件的时代过去了,10年前是OO时代,5年前是SOA时代,现在以及今后是XaaS的时代,云概念是必然趋势,我们可以不用,可以不喜欢,但是我们不能不了解。
今天就简单写这么点,明天我会详细写点Role的相关内容。