首页 > 代码库 > 云计算对传统软件工程的影响

云计算对传统软件工程的影响

 

云计算(cloud computing),是分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。

  云计算是一种资源交付和使用模式,指通过网络获得应用所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取。这种特性经常被比喻为像水电一样使用硬件资源,按需购买和使用。最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱等,使用者只要输入简单指令即能得到大量信息。未来如手机、GPS等行动装置都可以透过云计算技术,发展出更多的应用服务。进一步的云计算不仅只做资料搜寻、分析的功能,更可计算一些像是分析DNA结构、基因图谱定序、解析癌症细胞等。稍早之前的大规模分布式计算技术即为“云计算”的概念起源。

传统的“ownership”科技模型已经给发展科技造成了很多难题,不仅仅入门的门槛很高,维持技术部署的资源也是被私有的。科技工业大亨们已经开始扮演重要的角色去减轻一些问题。像思科,惠普,IBM,英特尔,微软这些大公司们开始作出努力,为社会和经济发展做出贡献。使用云计算来帮助软件工程更方便的开发。本文将从多个角度来分析云计算对传统软件工程和开发的冲击和影响。

 

软件架构的开放性

云计算是分布式处理,并行处理,网格计算的发展,是一个具有连续性的软件开发的分布式模型,这种开放式的软件结构给了我们软件开发者一个崭新的多元软件开发环境。云计算提供了方便,对应需求的网络接口去共享一个可操作的资源池。云计算让消费者(用户或程序),一些开发者打开了未来网络以一种超级计算机的姿态出现,依赖于云计算的特点,比如资源池和虚拟化,按需服务和随处可取的接口。传统的数据中心模式的软件开发会给公司带来很多麻烦,不光是落后的栈式软件环境在更新一个软件库的时候就会导致整个系统的崩溃,这种复杂的结构也让很多开发模式只可以应用在拥有大量人力的大企业,小型企业难以保证数据中心的稳定性使得很多新公司难以展开进一步扩张。云计算改变了这个局势,不再受限于硬件环境的严格要求,企业可以自己使用网络上的资源,环境由资源提供者来自行解决,将生产和生产环境的难题剥离,塑造一个崭新的行业和技术。

 

软件对象的多样性

云服务和云计算已经吸引了工业和科研界的注意,由于他能够使合作研究开发,电子商务,健康护理,网格应用,企业计算设施,军用应用和国家网络安全这样的大型分布式系统应用的快速发展成为可能。

事实上,有四种云的类型,公共云,私有云(只提供服务给独立组织的用户),一个组织云提供服务,和一个混合云(上述三种的任意组合)。云计算结构有三个层级,software as a service(SaaS), platform as a service(PaaS), and infrastructure as a service(IaaS).如图1.开发者可以实施任意层级作为服务。应用开发者能用服务计算,云计算,或者二者的结合。二者的结合会很大程度上减轻了软件开发架构中的挑战。比如,服务计算的一个主要挑战就是去管理QoS的松散对应的服务(包括分布式服务提供者)。云计算能够通过虚拟化和资源分配来解决。

 

软件过程的动态性

动态基础设施(Dynamic infrastructure)可以通过提供基础商业连续性和高可用性的需求加速了云计算和网格计算。在这项技术出现之前,机场,公路,建筑等商业设施都用传统的方式管理,即个人电脑,数据中心,无线路由等各种不同的设备。为了继承今天世界的内联且智能的特点,我们需要一种新的方法。云计算便是运用了这样的技术,使得动态可扩展性大大提高,当软件过程进行到下一个规模,需要更多的服务支持和硬件支持,云计算通过云服务人员维护,而用户只需要正常使用,换句话说,增添功能并不会给用户带来麻烦,在开发的时候也不需要担心这些琐碎的问题,可以让开发人员专心于工程。基础设施和软件,平台一样,作为服务给用户,如图1.。

 

技术分享

 

 

图1-云计算服务示意图

开发组织的社会化

在一个工程实现的时候,我们不再局限于传统开发几个人自己做自己的,再用移动硬盘互相拷贝的方式,有了云服务和云计算,我们可以利用云来分享,同样的,你的同伴也不再局限于你认识的人,感兴趣的人自然会投入进你的项目。他们的能力会极大的帮助我们来改进项目并且发现项目的漏洞。同样的,云计算也可以让我们的计算方便快捷我们可以使用别人已经搭建好的平台来进行数据处理(当然要在安全性可以保证的情况下)。一些大型公司比如腾讯阿里,也提供了个人或者企业可以租用的私有云服务。

 

开发人员的大众化

云的普及使开发者不再只是有工作的技术人员,业余爱好者或者其他行业的从业人员也可以参与自己感兴趣的项目的开发工作之中。最著名的例子就是github,在一个软件工程的实施过程中,不仅同组内的人员可以随时更新其他人负责部分的代码,如果这个项目很有价值,还会吸引各路大牛的挑错和指导。一些初学者的门槛也变低了,可以通过阅读其他人的代码来学习技巧,开发人员逐渐的平民化,大众化。

 

资源部署的虚拟化

虚拟化并不是云,但是云计算和虚拟化是密切相关的,云计算为基础设施带来的服务如:管理一个私有云(在你的数据中心)、公共云(比如 是SalesForce)和管理托管云(托管在别处的虚拟服务器)以及许多其它的增值服务,这些都是虚拟化和云计算的不同。

  可以这么说,云计算把计算当做公用资源,而不是一个具体的产品或者是技术。作为一个最为基本的想法,我们可以说云计算是由公用计算的概念演进而来,也可以把云计算想象为把许多不同的计算机当做一个计算环境。

  云计算将各种IT资源以服务的方式通过互联网交付给用户。然而虚拟化本身并不能给用户提供自服务层。没有自服务层,就不能提供计算服务。云计算模型允许终端 用户自行提供自己的服务器、应用程序和包括虚拟化等其它的资源,这反过来又能使企业最大程度的处理自身的计算资源,但这仍需要系统管理员为终端用户提供虚 拟机。

虽然虚拟化和云计算并非是捆绑技术,但二者可以通过优势互补为用户提供更优质的服务。云计算方案使用虚拟化技术使整个IT基础设施的 资源部署更灵活。反过来,虚拟化方案也可以引入云计算的理念,为用户提供按需使用的资源和服务。在一些特定业务中,云计算和虚拟化是分不开的,只有同时应 用两项技术,服务才能顺利开展。

在软件工程开发过程中,我们在需求分析之后第一步实施,就可以将需要的服务拆分并且直接可以想办法用已经有的云服务来实施,大大的节省了开发的难度和维度(如图2)。

 

技术分享

 

 

图2.-开发者和虚拟化的服务

 

总结:云计算的成长已经大大的促进了信息时代的发展,无论是开发者还是普通用户,都从云服务中受益,并且带动了很多企业和业务的发展。对于软件工程来说,云计算的出现为开发者提供了很多遍历,无论是节省了开发时间,还是更方便的访问接口和环境配置,都能够极大的促进技术发展!

参考文献

【1】维基百科:云计算词条

【2】IBM-What is cloud computing?

https://www.ibm.com/cloud-computing/what-is-cloud-computing

【3】Software Engineering Meets Services and Cloud Computing https://www.infoq.com/articles/ieee-software-engineeering-services-cloud-computing

云计算对传统软件工程的影响