标签:
摘要:云技术是在计算机技术的一种变革。在云计算之前,也出现了网络计算以及自主计算等等,云计算与这几种计算都不同,它结合了这几种技术的优点而出现。云计算的结构为软件工程的发展带来了新契机。使用云计算会大大的促进软件的开发,对软件工程产生巨大而积极的影响。本文对云计算做了简单的介绍并就云计算技术对于软件开发的影响做以简要分析。
关键词:云计算;软件工程;影响
云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。
其主要特点有:1.超大规模。“云”具有相当的规模,Google云计算已经拥有100多万台服务器,亚马逊、IBM、微软和Yahoo等公司的“云”均拥有几十万台服务器。“云”能赋予用户前所未有的计算能力。2.虚拟化。云计算支持用户在任意位置使用各种终端获取服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解应用运行的具体位置,只需要一台笔记本或一个PDA,就可以通过网络服务来获取各种能力超强的服务。3.高可靠性。“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机更加可靠。4.通用性。云计算不针对特定的应用,在“云”的支撑下可以构造出于变万化的应用,同一片“云”可以同时支撑不同的应用运行。5.高可拓展性。“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。6.按需服务。“云”是一个庞大的资源池,用户按需购买,像自来水、电和煤气那样计费。7.极其廉价。“云”的特殊容错措施使得可以采用极其廉价的节点来构成云;“云”的自动化管理使数据中心管理成本大幅降低;“云”的公用性和通用性使资源的利用率大幅提升;“云”设施可以建在电力资源丰富的地区,从而大幅降低能源成本。因此,“云”具有前所未有的性能价格比,用户可以充分享受“云”的低成本优势。
任何一个在互联网上提供其服务的公司都可以叫做云计算公司。其实云计算分几层的,分别是Infrastructure(基础设施)-as-a-Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Service。基础设施在最下端,平台在中间,软件在顶端。别的一些“软”的层可以在这些层上面添加。
IaaS即以服务的形式交付计算机基础设施,作为最底层和最基础的服务,IaaS将基础设施(计算资源和存储)作为服务出租,代表了一种作为标准化服务在网上提供基本存储和计算能力的手段。IaaS是作为服务计算的最原始的形式来提供服务的。
IaaS之上的服务是PaaS,PaaS是可描述为一个完整的虚拟平台,它包括一个或多个服务器(在一组物理服务器上虚拟而成)、操作系统以及特定的应用程序(如支撑基于Web的应用程序的Apache和MySQL)。PaaS是一种无须下载或安装,即可通过互联网发送操作系统和相关服务的模式,云计算应用的开发平台也可作为一种PaaS提供,用分布在不同地区的开发团队可以共同完成某些软件的开发项目,使用者也能够从不同公司的庞大平台资源中获得服务,另一方面,通过使用由单一供应商提供的基础架构服务,中小型企业可减少对硬件设施和平台维护的收入,通过程序集成开发,信息化总体费用可大大降低。
在PaaS之上的是可以提供给终端用户的应用程序,这一层被称作SaaS。它是从一个集中的系统来部署软件,并使之在一台本地计算机上(或从“云”中远程地)运行的一个软件模型。SaaS是一种通过互联网提供软件的模式,软件厂商将应用软件统一部署在自己的服务器上,用户可以根据自己实际需求,通过互联网向厂商订购所需的应用软件服务,按订购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。这样,用户不用再购买软件,而改为向供应商租用基于web的软件服务,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。
云计算这种技术出现后,软件开发模式由单机版向面向云计算转变。单机版的软件所使用的资源,是基于PC机的物理资源(如PC机的内存和硬盘);在云计算时代,这种开发模式完全改变,使用的资源不再受到物理资源的限制,内存的使用可以基于数据中心的服务器群,数据库可以通过互联网存储到远端的数据中心中,在利用资源的同时,打破了资源的局限性,提高了资源的利用效率。
虚拟化是云计算中的一个重要技术,有了虚拟化技术,软件开发者就不必纠结于软件的开发环境,而是可以通过向云计算服务提供商定制属于自己的系统,可选的软件架构也有很大的选择空间。一个好的软件架构对可靠性,安全性,可伸缩性,可定制性,可拓展性,可维护性都有和严格的要求,而云计算正好可以很好地满足这个要求。
云计算提供商可以提供一个较为安全的开发环境。由于云计算具有良好的可伸缩性,可定制性和可拓展性,服务商根据软件开发者的要求来定制专属于某一开发者的环境,使得软件开发不再像之前那样要在软件开发的一开始就订好整个软件的开销,而是可以在开发过程中动态地确定,这样既保证了软件开发过程的高效,又做到了尽可能地利用资源。
个人只要掌握了编程的技术,资源配置之类的都不需要担心,云计算服务商已经为我们包装好了一个安全稳定的运行环境。
传统的软件工程开发更多地是将软件工程师集中起来进行开发以求最大的开发效率,开发组织大部分都局限在某一个具体公司里,组织之外的人想要参与项目是很复杂麻烦的,而在云计算的时代,由于服务器在云端,只需要通过远程操作云服务器就能完成软件的开发部署工作,所以软件工程师可以身处世界各地而共同完成同一个工程,这使得开发变得更加包容与开放,所有人不再需要一直待在一起,只要互相之间进行约定,每个人按时完成自己所负责的工作就可以了,这使得开发组织可以变得很大,github上有好多开源的项目就是由全世界各个地方的人一起开发的。
软件开发的过程中,需求可能是在不断地变化,比如刚开始预期的使用人数只有一万人,但是当软件上线之后发现该软件很受欢迎,使用人数达到了一百万,大大超过了之前软件设计容量,于是通过云计算,可以对软件的运行环境进行动态扩充,只要对软件稍作修改变可以使得软件继续顺利运行。而在传统的软件开发过程中,软件使用者对软件的需求也是在不断地改变,需求的改变则可能会导致软件架构的改变,运用云计算的动态性,可以动态改变软件的运行环境,尽量减少整个软件结构所需要的改动。同时对于在开发过程中选择更改架构的程序,也只需要改变本地代码就可以了,对于云端服务器只要进行简单的设置就可以顺利的让程序运行。
传统软件工程中,开发者如果需要增加资源使用,或者是开发前期对系统能力的估计错误,导致必须去购买很多的设备,但是这样很有可能会使得资源的浪费或者面临出现突发情况时服务器不够使用的情况,而在现在的云计算系统里,所有的资源都是虚拟的,需要多少就向云服务提供商租借多少,如果遇到突发情况还可以临时租借服务器,在不再使用之后就返回给服务商,这样就使得对资源的利用率达到了最大化,同时也使得程序能够永远保持在最高的运行效率。例如电商就经常遇到节假日或者购物节的时候访客流量突然上升的情况,如果去购买服务器显然是不划算的,毕竟平时用不到这么多的服务器,所以选择在特殊时期向云服务商租借,过期再退租可以使得自身利益最大化。
网络和存储的融合使得软件获取资源的方式趋向“云”化。用户需要在任何时间、任何地点,通过任何设备、任何计算环境(操作系统)都能得到这种资源和服务,比如保险人员在用户家里签订保险合同,公司的老板在机场签署文件等等。所以,云计算的软件架构必须适应云计算提供服务以及云计算用户使用的应用场景。在经历了过去的单机版、C/S(Client-Server)架构、B/S(Browser-Server)架构,现在演变为Location-Awareness(位置感知)和User Application Context Awareness(用户应用感知)。
现在软件是并发式计算,多个计算的集群可以同时参与计算,现在比较流行的软件体系是Hadoop,目前在互联网的集群计算中得到广泛的应用。Hadoop是云计算架构下的软件设计模式,即集群并行计算,这种软件设计模式要求软件需要考虑分布式的资源处理,需要即时调配计算资源,并能够充分发挥多个计算节点的配合效率和性能。所以,在云计算时代,考虑的数据模型是“大数据”,又叫“大数据”时代。
整个软件产业基本的商业价值发生了革命性的改变,软件正在从License到按服务收费的转变。IT业的本质载体是软件,硬件为软件提供平台。软件在云计算中发展成为服务的载体,这是一个很重要的变化。但这种变化对许多软件企业来说影响是巨大的,比如微软、谷歌等公司,都在快速地应对云计算时代对他们的传统技术和产品带来的挑战,并对生命线产品进行变革。同时,软件企业也看到了云计算时代蕴藏的机会,他们从卖产品License,变成了卖服务、卖广告,而产品本身成为服务的工具。
App Store(应用商店)兴起,赢利模式发生变化。包括谷歌、苹果以及国内奇虎360等公司都在开发App Store,采用云计算平台,公布自己的开发工具,并通过互联网与软件开发者销售软件,通过软件实现服务,在服务中获取利润,而用户通过互联网购买软件,获得相关的服务。
以往软件价值在于其技术本身,在云计算时代,其价值体现在服务的质量。一句话,代码不值钱了。现在软件的开发很多采用开源的方式,用户可以通过开源的代码,开发自己需要的服务。软件企业必须基于开源提供更好的服务。这就是为什么我们会看到IBM一直在推动 Linux的发展。使用开源方式,可以使软件企业关注用户的服务需求,可以通过用户的使用,修改软件存在的bug,降低软件开发的成本。
当云计算将信息技术推入服务化模式中的时候,软件与硬件在以服务为共同指向的目标下,又重新走到了一起) 这一过程是随着云计算的计算方式归集化而完成的) 计算处理从用户终端归集到云计算中心,以此为基础的软硬件资源通过自下而上的虚拟化技术融合为整体,共同满足用户的业务需求。
云计算促成的软件工程的发展是否能成为破解软件危机的&银弹’尚不可知,但是它却在提高效率、降低成本等方面发挥出效力。 软件工程的传统开发模型以及有关技术势必将在云计算的广泛应用下随之产生变革,其丰富程度和复杂程度都将进一步加强。与此同时,更加多元化的软件工程开发模式和商业模式都将成为可能。
参考文献:
[1] 史杰,解继丽,史少华,《论云计算对软件工程的影响》,联创亚信科技有限公司,天津,30020。
[2] wiki百科,云计算词条
[3] 刘金辉,《浅谈云计算技术对软件开发的影响》,黑龙江省计算机软件研究中心,黑龙江 哈尔滨 150000
标签:
原文地址:http://www.cnblogs.com/adlith/p/5975262.html