云计算之旅5—实战第一个云程序
[2] 云计算之旅5—实战第一个云程序
[3] 云计算之旅5—实战第一个云程序
[4] 云计算之旅5—实战第一个云程序
一. 摘要
首先圣殿骑士很高兴云计算系列能得到大家的关注和支持,这个系列准备了几个月,终于在今天发布第一篇了(由于文章太长,拆成了两篇,这是其中一篇)。在这几个月中通过不断的使用和实践,对云计算总算有了一个较粗浅的认识,所以也希望能够和大家一起分享。在发布这篇文章之前也考虑了很久,因为一开始就讲概念的话,势必会得不到很好的效果,毕竟大家都不太熟悉这个新事物。与其“人云亦云”还不如先来一个简单的实例,所以我就先选择一个实践应用来看到底云计算能给我们带来什么好处,从开发者角度,随着这个概念的引入,究竟它需要做哪些改变才是我们最关心的问题。
本篇文章在安排上大致如下:首先回顾前面的基础知识,这样大家就可以有一个大概的认识;接着介绍开发工具,正所谓“工欲善其事,必先利其器”;再接着就是开发第一个简单程序,通过这个简单程序来看一下其开发过程;开发完毕之后就需要部署,在讲部署之前我们必须要有账户来完成此操作,所以紧接着就依次讲解账户申请和部署流程;大家一直在用程序+数据库模式来开发我们的应用,所以接下来我们就讲SQL AZURE和经典的程序+数据库模式,这样大家就可以避免生疏感,从而使理解也变得更加容易一些。通过这篇文章,我们对云计算有了一个较清晰的认识,了解了它究竟是什么、究竟能做什么以及如何做。如果大家清楚了这些问题,也就达到了本篇预期的效果,同时也为系列后面的文章打下了基石,所以希望对大家能有所帮助。
二. 本文提纲
· 1.摘要
· 2.本文提纲
· 3.云计算基础回顾
· 4.开发工具
· 5.第一个简单程序
· 6.账户申请
· 7.部署
· 8.SQL AZURE
· 9.经典的程序+数据库模式
· 10.本文总结
· 11.系列进度
三. 云计算基础回顾
在前面几篇文章中,我们讲了很多概念,那么这里就简单回顾一下(更多细节看前面几篇文章):
一,行业发展趋势
纵观软件行业的发展过程与趋势可以看出一共经历了以下几个阶段:
◆ 面向机器语言(Monolithic)的开发模式:根据不同平台的机器语言来定制化开发代码,所以开发出来的代码通用性和可重用性比较差,但这也是当时和硬件和软件环境决定的。
◆ 面向过程(Procedure)的开发模式:独立于机器的程序语言(如C、Pascal等)使得开发过程逐渐变得简单了,用过程来描述我们的需求、用函数来封装我们的代码。面向过程的开发模式是对可重用代码的封装,这样相对于前面的面向机器语言开发模式又进了一步;
◆面向对象(Object)的开发模式:用更接近现实的对象来描述和绘制一个相对完整的事物。面向对象的语言(C++、C#、Java等),提供了更抽象的封装和重用模式。面向对象的开发强调从现实世界问题直接映射成我们的程序,所以就更接近人类的自然思维方式。面向对象的开发模式是对可重用对象的封装,所以比前面的面向过程开发模式又进了一步;
◆ 面向组件(Component)的开发模式:面向对象在很多方面都改善了开发模式,但是随着软件开发规模的逐渐扩大,在涉及分布式、异步架构等复杂环境中,代码级别的重用性差,可维护性差,效率低的弱点就变得尤为突出,因此人们以架构运行环境 (如.Net,J2ee等)来提供完善的支撑平台,从而把开发者解放出来,更专注于业务核心的开发。而这些业务功能以组件的形式(如DCOM, EJB等)发布运行在架构运行环境中。软件开发的重用模式也上升到业务组件的级别。面向组件的开发模式在异步架构、分布式等的系统中应用尤为突出,这种模式对面向对象开发模式进行了很好的补充;
◆ 面向服务(SOA)的开发模式:当软件的使用范围扩展到更广阔的范围,往往会面对更加复杂的IT环境和更加灵活多变的需求。服务(Service)的概念出现了,人们将应用 (Application)以业务服务(Business Service)的形式公布出来供别人使用,而完全不需要去考虑这些业务服务运行在哪一个架构体系上,因为所有的服务都讲着同样的语言。SOA考虑了业务发展的长期性,体现了"变化就是永恒"的思想。SOA的核心体现在企业应用或者业务功能上的"重用"和"互操作",而不再把IT与业务对立起来,这可以被视为在IT驱动业务的方向上迈出的重要一步。面向服务的开发模式是为了支持更加灵活的异构、分布式系统;
◆ 面向云(Cloud)的开发模式:其实利用前面的几种开发模式就可以解决当前各种应用了,但人们总是考虑对资源进行重组已达到对资源的最佳使用。这个时候云计算就诞生了。云计算(Cloud Computing)是网格计算、分布式计算、并行计算、网络存储、虚拟化、负载均衡等传统计算机技术和网络技术发展融合的产物。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。简单的说云计算简化了我们的基础架构且给企业提供了更大的可配置性和灵活性。在原有模式下如果构建一个小型的应用,你需要租用服务器、你需要考虑租用服务器的安全和稳定因素等。如果构建一个中大型的应用,我们需要花巨资购买硬件来集群,然后是巨额资金购买所需的系统软件而且这些也需要一些人员来维护。现在云能提供我们程序所需的硬件设备和软件设备,你所做的只是按照你的需要租用这些已有的资源,上传你的程序和修改配置文件,就可以灵活扩展或收缩你占用资源,这样就可以达到合理利用资源的目的,同时也减轻了维护这些软硬件的成本。
那么上面的几个阶段也可以简单的总结为三个发展趋势,这也是现在云计算体现的三大特点:
◆ 软件即服务(SaaS——Software as a Service)一种软件分配模式,使应用程序由供应商或服务供应商托管起来,并通过网络提供给用户。
◆ 平台即服务(PaaS——Platform as a Service)一种平台分配模式,通过网络提供操作系统和相关服务,这样客户就无需下载或安装。
◆ 基础设施即服务(IaaS——Infrastructure as a Service)一种基础设施分配模式,把这些基础设施通过外包的形式提供出来,其中包括存储、硬件设备、服务器和网络组件等。
二,云计算的优势和劣势
任何一件事物都有利弊之分,云计算更不例外了,所以我们不能对它一概而论,只有充分的认识到这些优势和劣势之后才能更好的做出决断。也许你可以称它是一场比WEB 2.0还要巨大的革命;也许你也可以称它和当初AJAX一样,属概念炒作、新瓶装旧酒;不管如何,没有深入虎穴焉得虎子,那么下面我们就具体分析一下它到底有哪些优势和劣势。
优势或值得应用的方面:
1.能快速搭建我们的应用
云计算最大的好处就是能够快速搭建我们的企业应用,比如我们现在要开发一个网站,我们就不必担心是否需要花巨资购买硬件来集群,然后是巨额资金购买所需的系统软件而且这些也需要一些人员来组建和维护的,如果恰巧这是一个比较新且可能会带来盈利的商业点子,那搭建在云上就是一个非常不错的选择,这起码能比其他企业先行一步。
2.提供了更大的灵活性和扩展性
由于“云”的规模可以动态伸缩,这样就可以不用加大投资硬件设备的力度来满足应用和用户规模增长的需要,同时也无形起到了降低成本的作用。如果项目突然废弃,也没有什么大的损失,所以在这方面,云计算是相当灵活和易于扩展的。
3.可以解决一些特殊的场景
很多公司都是在特定的时期盈利较大,比如一些情人节和圣诞节的帮办公司,它们就是在这段时间的营业额比较大,在一年中的其他时候,几乎不能盈利,在这种情况下,如果按照传统的软件部署习惯,势必会造成一定的浪费。正如一个有大量波峰和波谷的企业一样,你可能就被迫要将更多的IT资源分配给峰值时期使用。这种情况下将峰值需求外包可能会节约更多成本。
4.缩短了产品的开发周期
不管你是使用哪个厂商的云计算产品.都有一个显著的特点,那就是能缩短产品的开发周期,一个想法到一个产品的开发周期因为云计算的到来而逐渐缩短,由此你可以看出里面蕴藏的巨大价值。云计算确实已经开始影响到我们做业务的方式。我们开始减少研究的循环周期,这对于我们来说非常重要而且必要。
5.节约了建立基础设施的成本
其实对于每个企业来说基础设施都是一笔开支比较大的费用,而且除了费用之外还需要专门的人力和物力的投入,在这个过程中又要保持快速的软硬件更新速度来适应市场的不断变化,所以云计算的出现无疑是值得考虑的一种解决方案。很多时候,我们也会时常注意到数据中心使用面积不够、应用软件超出基础架构的承受能力、软硬件更新太快等问题,云计算服务能帮助企业将资本转移到运营费用上,尤其是在生死攸关的关键时刻,所以在这方面来说,是值得考虑的。
劣势或需要改进的方面:
1.数据安全性
对数据安全性方面看,目前比较热的云计算厂商亚马逊、谷歌、IBM、微软、甲骨文、思科、惠普、Salesforce、VMware等都没有完全解决这个问题,所以很多企业了解到所用数据的类型和分类后,他们还是会决定通过内部监管来控制这些数据。而绝不会将具备竞争优势或包含用户敏感信息的应用软件放在公共云上,这个也是众多企业保持观望的一个原因。
2.厂商按流量收费有时会超出预算
虽然云厂商推出云产品时大力宣传随时获取,按需使用,随时扩展,按使用付费,但是在很大程度上价格都比较高,至少在目前还没有降低的趋势,这样对某些企业就会起到相反的效果,比如说像索尼娱乐这样的公司,他们就不考虑采用外部云服务来应对存储扩展能力的挑战。位于加利福尼亚的Culver City的高级系统工程师Nick Bali表示。每天索尼动画访问和产生的数据量都在4千兆到12千兆之间。Bali解释说"如果放在云上进行数据读取的话,我们需要的网络带宽是非常庞大的,这样所需的成本过于巨大,甚至超过了购买存储本身的费用。目前索尼公司正在使用ParaScale的云存储软件评估私人存储云。所以从这点看出并不是云平台就一定便宜。
3.企业的自主权降低
其实关于企业自主权这个问题是一个比较争议的话题,也许这也是出于慎重的考虑,毕竟对自己公司的应用,大家都希望能完全管理和控制,原来的模式中,可以搭建自己的基础架构,每层应用都可以自定义的设置和管理;而换到云平台以后,企业不需要担心基础架构,也不需要担心诸如安全、容错等方面,好处是一个方面,但同时也让企业感到了担忧,毕竟现在熟悉的东西突然变成了一个黑盒。当然在这个时候众厂商也推出了内部云或者云套件来补救,但是这个问题也没得到根本解决。
4.规模大且成型的企业难以扩展
很多大型企业已经花了巨资来购买硬件并逐渐构建了自己的服务器集群(有的企业还大量购置了最新的刀片服务器),然后也购买了所需的系统软件和应用软件,而且也在此基础上搭建了基础平台架构。那么针对这样的企业来说,他们没有必要把自己的应用舍本求末的放在云上,所以这个也是很多企业不愿意移植的原因之一。
5.云计算本身还不太成熟
尽管众云计算厂商把云计算炒得大红大紫,每个厂商推出的云产品和云套件也是琳琅满目、层出不穷,但是他们都各自为战,没有有统一的平台和标准来规范。所以冷静下来想一想,到底它能不能为我们企业所用,在安全性、稳定性和企业本身因素方面必须尽管慎重的考虑才行,不要被眼前的广告所忽悠。你要知道每个企业要宣传自己的产品都会采取各种手段的,比如说到公共云不安全,厂商就开始推私有云;说到企业原有应用难以整合到云上,厂商马上就推出了混合云;但是在根本上云计算还有很长的路要走,很多地方都得优化。当然我们也愿意在这个过程中充当试金石,因为体验它之后,我们相信它必定会成为未来的趋势。
三,目前的现状
了解了云计算的基本概念以后,接下来要做的就是如何选择合适的云供应商,毕竟我们不是亚马逊、Google、微软、阿里巴巴、浪潮等专注于云计算研发的企业,所以如果我们使用云计算,必须得选择一个合适的云厂商来为我们服务。
图1
上面的图中包含了前期的几家云计算厂家,其实总体来说现在云计算厂商可谓星罗棋布,不光是国外的亚马逊、谷歌、IBM、微软、甲骨文、思科、惠普、Salesforce、VMware等大型企业,还包括国内的阿里巴巴、中移动、浪潮等也加入到了这个竞技场。