2009-02-18 09:21:03 来源:IT专家网
正是由于VMware的工作站产品,虚拟化头顶上所围绕的光环才会愈加闪亮。它的工作站产品可以允许个人用户运行一批操作系统、不同的操作系统版本(就像Windows的多个应用程序那样),而不是运行一个一次只能启动单一系统的多操作系统环境。在很多公司里,虚拟化技术首先被开发者所采用,他们使用虚拟环境来测试和开发程序,并且逐步把虚拟化的工具介绍给IT的高管。
而当前,计算机虚拟化已经在很多的产品环境下得到应用,比如服务器、桌面架构以及作为一个供应工具,虚拟化同样也被越来越多的软件开发者所使用。作为刚开始使用虚拟化技术的人来讲,他们使用虚拟化工具来提供一些列的目标环境,用于开发程序和测试(比如不同的操作系统,不同版本的系统和浏览器),同时也把它作为一个供给配置实例,非常地快速和简单部署。
下面,我们就看一下,当前的一些开发者如何来使用虚拟化并且为什么他们要采用虚拟化技术,同时也了解一下虚拟化技术的不足。
虚拟化提供了多种测试环境
Mark Friedman——高级软件工程师,目前他工作于微软的开发部门,在该部门有超过3000名员工在创建Visual Studio和。NET Framework。Friedman本人的工作则主要集中在性能工具,该工具和微软的Visual Studio组系统相关联。“在我的部门里,2/3的人员都是搞开发和测试工作的,并且大多数的开发者和测试人员都使用系统虚拟化(通过微软的Hyper-V技术)来作为他们的使用工具之一”,Friedman表示。Friedman同时也是计算测试组的部门主管。
虚拟化的诸多能力之中,一个重要的优点就是它可以分离那些不稳定的环境,而这一点正是任何开发者在早期应用程序设计中所期待的。Friedman表示,随着微软工具的不断研发,测试早期的应用程序版本可能会毁掉开发人员的整个计算环境。
“这就是问题的本质”,他表示,“除了简单的应用程序以外,任何因素都有可能毁掉整个系统。我经常告诫我的开发人员,如果他们没有能够时常地把系统搞垮,就表示他们没有足够努力地工作。我们对于虚拟化技术都表示非常欣赏,因为它们更加节省时间,可以让我们的开发者花更多的时间在有挑战性的工作上,而不是那些简单的而又十分耗时的准备测试环境工作上。”
就像其它的虚拟化工具那样,微软的Hyper-V可以让用户更好的“拍照”系统,保留一个最近的成功的版本。我们创建一个回滚的功能,只需要花几分钟的时间,就可以让我们恢复到上一个完好的工作状态下“,Friedman表示,”这种方法有别于那种重新创建系统映像或者重新建立环境的做法,因为那可能要花掉数小时,而采用虚拟化的方法则节省了时间。“
Friedman的小组同样在质量保障测试过程中采用了虚拟化技术和虚拟机映像。”一旦开发人员的模块通过测试以后,我们通常会谈论测试矩阵——采用的操作系统版本是什么,比如“,他谈到,”然后,我们需要分别在32位或者64位版本下的操作系统进行测试。使用虚拟机映像是非常快速的、便宜的,也是最为灵活的方式来保持一个不同的测试环境。在我们的质量保障(QA)实验室,我们一直都在做这样的事情。我们做了很多自动化的测试,因为,我们可以保留这些虚拟机映像,并且把我们的测试套件放在它们之上,这种方式的价值是无法衡量的。在这个过程中,我们节省了你都难以置信的时间。“
这种在几分钟之内进行快照、重建工作映像的能力比起等待数个小时来创建系统的方式,显得尤其重要。”你通常会花费一整天甚至两天来建立你的环境,以重现上次的问题,这样就可以找到问题所在。但是,这样做你就会一次又一次的花时间来重建系统——这会浪费掉宝贵时间“,Friedman表示,”这是缺乏效率的一种方式。“
比如,当一个应用程序漏洞导致系统崩溃,开发者就必须要回溯,以辨别系统在哪个点上失效的。”人们通常把断点放在那些距离问题较远的进程上,那么系统就会再次崩溃。因为一个开发人员在一天之内可能非常轻易地就让系统崩溃多次,那么具有能够快速重建系统并且重新运行调试会话的能力就显得非常重要,尤其是在问题的出现仍然在大脑中依稀可见的时候,这是非常具有价值的“,Friedman表示,”当你调试一个复杂漏洞的时候,在一种大脑最佳状态下去回溯问题是非常好的一件事。“
虚拟化对于迭代测试来讲也非常有用,开发者表示。”我们有很多的测试系统,提供给开发者使用。每一个开发者都需要他自己的x86控制系统。取代采取传统的多个PC的方式——即使它们都非常便宜,我们使用虚拟化来创建虚拟机,它可以连接到外部的集群“,Adam Moskowitz表示,他是SiCortex的高级软件工程师。而SiCortex则建立并销售了一系列的高效能的计算机。
SiCortex的开发部门使用免费版本的VMware 服务器在一个有点像牛一般健壮的机架服务器上(装配有2个或者4个多核x86处理器、4GB的内存和300GB的硬盘),这些服务器可以运行4-8个控制系统虚拟机,Moskowitz表示,”因为在控制系统上只有很少的负载,它们工作起来都很好,在一个很小的成本代价下。我们有大约一半的工程师(25人)都使用这种虚拟化的系统。“
Moskowitz表示,虚拟化一个控制系统的首要好处就是测试的简单性。”希望要一个实验系统,克隆一个标准的虚拟机然后你就可以使用了“,他表示,”该工具比较有价值的另外一个原因就是它配置的简单性;开发者只需要一次使用最新的软件就可以建立一个虚拟机,然后克隆它们所需要的虚拟机数量。“
Mike Brescia在一家制作实时环境数据记录和修复的公司工作,他表示,”除了作为一个虚拟应用来提供它的系统,我们公司的开发者还使用虚拟化来建立不同的测试环境,比如Windows和Linux在一些很少的硬件平台上。“克隆一个纯净的计算机系统用于测试的目的比起拷贝一个磁盘映像并使用Clonezilla要简单得多,Brescia表示。”运行虚拟机并不需要毁掉整个系统,我们只是需要足够小心不让整个主机系统过载资源“,Brescia补充说到。
Eli Kirk的高级Web开发人员Connor Boyack称,主营设计和市场公司Eli Kirk的15名Web开发者必须给很多Web浏览器和操作系统提供服务,Boyack在Mac OS X Leopard上使用Parallels Version 4,并且运行Windows XP、OpenSUSE 11以及Windows 7 Beta的虚拟机。”创建功能完备且具有艺术性的站点需要大量的浏览器测试,这就会让虚拟化成为一种必须的技术“,Boyack表示,”虚拟化可以让我使用多个操作系统以及多个浏览器,让它们同时合作并且无缝的连接(当然,物理机上的Windows XP要保持稳定)。“
具有能够同时测试很多场景的能力将是一个巨大的优势,因为这样就可以保证一个连续的用户体验,SmartLogic Solutions公司的开发人员Nick Gauthier表示。”另外一个优势就是当用户进行抱怨的时候,可以启动另外一个特殊的版本和浏览器。我们不需要再说‘抱歉,我们不运行那个浏览器,我们是Linux版本的系统’,而现在我们就可以说‘稍等一会儿,我看一下问题所在并且马上进行修复。’“
”我们在平台上使用虚拟化和所支持的应用上(用于质量保证)测试我们的软件,并且当客户遇到问题并且需要技术支持时,我们可以重现用户的环境“,Eric Floer——3X Systems公司的首席信息官表示。该公司是一个开发并销售远程备份应用的新公司。”虚拟化可以让我们更加快速地建立并卸掉环境,可以让我们使用很少量的物理硬件就可以做到。“这种使用很少量的成本而测试很多平台和环境的能力对于一个小的刚刚起步的公司来讲非常重要。而且,虚拟化也提高了我们产品的质量和可靠性,Floehr补充到。
Aamoggemon软件公司主要专注于手持计算机的应用程序,原先主要是针对Palm OS,现在则主要是针对Symbian OS 60系列和PocketPC。”我目前使用虚拟化,有很多的原因“,开发人员Tam Hanna表示,”最主要的原因就是基于Cygwin/Elipse开发系统的广泛流行(针对J2ME的Eclipse,来自于Palm的PODS以及来自于Nokia的Carbide)。把这些软件安装在一台机器上会导致其它的工具被破坏。因为,我需要使用虚拟化功能来完成我的工作。而且,我也愿意使用虚拟机来保存我的相同配置,在我所有的机器上。“
MarkMail是一个搜索公共邮件列表的免费服务公司,”我们的团队在很多地方使用到虚拟化技术“,MarkMail的开发人员(它的公司头衔是”狂热的科学家“)John D.Mitchell表示,”关键的一点就是在系统上虚拟化每一个服务都给了我们很大的灵活性。在开发环境下,我们不再给物理资源太多的压力,因为我们有很多的虚拟实例运行在很少的硬件节点上,包括数据库。“
MarkMail使用OpenVz(http://wiki.openvz.org),因此开发者的映像和部署环境的映像是完全相同的。”虚拟化可以让它测试不同的环境、版本等等。我们可以把一个实例卸掉并重新安装一个实例,在一个相对正确的点上“,Mitchell表示。使用虚拟化可以减少硬件的数量,公司就不需要购买或者租用设备。Mitchell称,”总体上,我们采用3:1的比例来把虚拟机部署在硬件节点上。“
虚拟化的不足
开发者表示,目前还有很多地方是虚拟化所无能为力的。
”虚拟化提供不了帮助的地方在于对我们的产品进行压力测试,该产品是一个基于网络备份的应用“,3X公司的Floehr表示。”尽管我们可以测试10台虚拟机的客户,但那不是一个真正的压力测试,因为10个客户仅仅在4台物理CPU上和两个网卡上工作,这些限定条件在真实的环境具有10个物理客户端的情况下就不存在了。“
”虚拟化确实可以增加一些复杂性“,MarkMail的Mitchell表示,”它总是可以增加一些延迟。但是,在更加差的情况下,当你改变潜在的执行环境时,你不可能依赖虚拟机来给出性能表现的明确数据,比如从开发到测试,并最终到生产的整个阶段。“
最后,Mirtchell指出,当前的桌面虚拟化版本仍然有很多令人头疼的问题、漏洞以及一些漏掉的特性,至少是软件开发阶段的开发者使用方面。
”对于负载测试或者功能扩展,你必须要运行在真正的硬件上、物理平台上“,微软的Mark Friedman指出,”性能特性,除非你希望部署在虚拟机上,是完全不一样的。同样的情况也适用于性能测量的状态;你不能根据虚拟机上获得结果来相信真实的物理机器也会那样。“Friedman也表示,随着时间的推移,他希望这个问题可以得到很好地解决。
同样地,Friedman表示,这种虚拟化业界采用的并行虚拟化的方法可以改变一些操作系统潜在的一些方面,尤其是操作系统的驱动方面。”因此,如果你对于特定的驱动有依赖或者对硬件环境有依赖,你将会受到一定的影响。比如,有一个虚拟的网卡并且有一个特定的驱动,这个驱动是对虚拟化特有的。你就必须了解,如果你需要测试一个物理硬件的驱动,你就不可能看到虚拟的驱动。因此,这就会影响人们做驱动的开发,但是对于web开发人员来说没有影响。“
而且,Friedman也指出,”如果你有一个多层次的应用,该应用需要几个机器,巩固这些机器以共享硬件意味着你得到了一个功能测试,而不是一个性能的测试。“
尽管有种种的问题,虚拟化已经给开发者带来了真正的好处。”虚拟化可以让开发者更加多产,一旦这些开发者了解了如何使用这项新的技术“,微软的Friedman表示,”虚拟化可以让他们花更多的时间在编码、测试以及调试上。它减少了很多的时间,并且减少了建立和准备环境所花的精力,而这些时间和精力是我们不希望开发人员所浪费的。“
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。