主页 英特尔® 软件网络

虚拟化:开发人员的朋友

作者: Andrew Binstock
发布日期: 2007年8月10日 | 最后修改日期: 2008年8月26日

开发人员越多地应用虚拟化技术,就会发现越多全新的应用模式。了解您所不知道的信息,看看虚拟化技术如何帮助您完成更多工作。

作者:Andrew Binstock

现在,很多开发人员发现,虚拟化能够通过一些前所未有的新方式来帮助他们开发、测试及调试软件。这大多得益于双核或四核系统提供的强大动力,它使开发人员能够运行多个虚拟机(VM),并充分利用这一能力在其现有的开发平台上模拟多种环境。本文将探讨一些领先 IT 站点的开发人员利用虚拟化的方式。从中您可能会发现一些好的方法,帮助您将他人的实践经验应用到自己站点的开发周期中。

工具评估

对于为需要数项互操作技术的项目工作的团队而言,一项重要工作就是评估新的开发工具。通常,这些工具是现有 IDE 的插件或是必须经过配置才能适合现有环境的独立产品。经验告诉我们,最初不能在开发人员现有的编程环境中对这些工具进行评估,因为它们常常会造成现有工具工作中断。大多数开发人员都有过这样的经历:安装一个插件,准备稍后把它删除,但很快就发现平台或 IDE 已被改变且几乎无法撤销。为了避免这种问题,站点应利用开发人员的基本工具集对多份 VM 副本进行设置并按照站点政策对其进行配置。新工具最初应在此类 VM 中进行评估,以确保它们能够发挥其所声称的作用,没有意外缺陷且切实能够与站点的现有工具链集成。只有当工具通过了这一初始测试后,它们才能有机会被临时部署在当前的开发环境中。

这种方案的好处在于,如果工具重新配置了 VM 或破坏了它的注册表,那么我们只需扔掉 VM 即可。只要存在一个原始 VM 的例程,我们就可随时复制一个新的 VM,以备下一次工具测试之用。

平台标准化

开发团队常常使用那些配置明显区别于普通员工的系统。因此,开发人员可能无法保证供他们运行测试的某个系统能够完全契合获得授权的员工平台。在这种情况下,借助虚拟化,问题就可迎刃而解。IT 经理可创建多个 VM,用以复制公司目前正在使用的所有已获得许可的平台。然后,开发人员和 QA 工程师就可利用这些 VM 按照用户台式机和笔记本电脑的精确配置进行软件测试,测试完成后删除 VM 即可。这种方法使开发人员和测试工程师能够始终在一个新鲜而又真实的平台上完成工作。

这种方法还有一些其它的优势。虽然用户平台在不断演进,但总有一些员工因为某些原因而延缓采用指定的配置。借助含有所有历史配置的 VM 库,测试人员便可在必要时使系统保留后向兼容的能力。

此外,虚拟化还具有一项硬件很难再造的优势。您如何在具有较少资源的标准平台上进行测试呢?例如,假设某公司指定的标准台式机采用了内存为 512 MB 的 Microsoft Windows XP 系统。按照这种配置在 VM 上进行测试显示没有什么问题。现在,假设用户要在已运行了 8 个内存密集型应用程序的系统上运行一个新的应用程序,那么这个应用程序是否仍能正常运行?如今,借助 VM 即可轻松地改变各应用的内存分配量。通过运行测试并减少内存分配,VM 能够模拟标准的超负载平台并决定被测应用程序在何时因内存不足而停止。这一信息为开发人员、测试人员以及帮助中心的人员带来的优势不言而喻。

缺陷快照

虚拟化赋予了 QA 工程师一种前所未有的能力:在 bug 出现时捕捉设备的总体状态。这之所以成为可能是因为整个 VM 可随时在当前状态下保存为单个大文件。采用这种方式保存后,VM 就可供开发人员使用,以便其亲自探究问题的根源。在使用缺陷跟踪软件的站点,很容易将 URI 放入缺陷报告中已保存的 VM 中,因此可极大地改进 QA 和开发团队交换信息的质量。

但有时,仅仅捕捉单个 VM 还远远不够。那些运行带有已保存缺陷的 VM 的开发人员可能还需要了解其它 VM(如服务器)的情况。这时,测试工程师需要捕捉数个协同工作的 VM 的快照。现在,VMware(VMware Lab Manager 产品)和 Surgient(VQMS 产品)推出的多种软件包均可实现在单个快照中捕捉多个 VM 配置。

上述两类公司都在快照中添加了一项关键因素:正确运行快照的能力。这看起来比较直观,但它是指快照运行时发生的具体问题。假设捕捉到了一个包含 3 个 VM 的配置。这 3 个 VM 分别属于客户机、应用服务器和数据库。现在,开发人员希望运行该快照,但他希望运行快照的系统当前正在运行被复制到快照的数据库 VM。由于快照 VM 将占有同一个 IP 地址,更重要的是,占有与原始数据库 VM 相同的 MAC 地址,这时如果不借助某些特殊的软件,就会产生问题。网络将检测到这一冲突,而快照 VM 将拒绝网络访问。对此,VMware 和 Surgient 都通过在已保存的配置中构建虚拟网络交换机圆满地解决了这一问题。这种交换机在配置启动时进行网络地址转换(NAT),从而有效地避免了 IP 地址冲突问题。类似的转换过程也将 MAC 地址冲突消于无形。在快照配置内部,网络地址和MAC 地址保持不变(在授权或其它配置记录依靠这些项目时需要如此),而在外部它们则全然不同。这一解决方案颇有成效,快照的多个例程可在同一系统上毫无冲突地同时运行。

离岸开发

依赖离岸开发的站点可借助虚拟化来提供一定的 IP 安全性并确保开发人员选择合适且配置合理的工具。这些站点要求离岸开发人员利用共享的桌面工具远程访问本地 VM 的软件,从而完成自己的工作。此举如何能够为开发人员提供站点需要的工具集是显而易见的。但在 IP 保护方面还需要稍作一点解释。VM 不允许您将文件复制到本地机器,而您将文件复制到其它位置也将受到阻碍。这样,离岸员工将不可能或者至少是很难进行远程 IP 访问。他们无法将文件复制到其物理站点的设备上,也不能将 IP 发送到未授权的网络位置。他们最多可以抓屏或花费大量时间努力避开 VM 主机的安全保护,但所有这些操作都可以看到因此在主机站点可以被检测到。诸如 VMware ACE 等工具还可促进 VM 自动锁定。

这种方法优缺点兼有。其优点除上文提到的以外,就是本地站点可监控远程开发人员的工作、跟踪他们的日常工作进度、更密切地管理整个开发过程。而其缺点在于,拨号接入托管 VM 并非是完成开发工作的最佳方式,这主要是由远距离网络造成的延迟和远程桌面软件的局限性造成的。

可移植性测试

可移植性测试是虚拟化最初的开发使用案例。我们假设,一名正在 Windows 工作站上编程的开发人员在系统上安装了 Microsoft Virtual PC,然后创建了一个 Linux VM。当代码经过开发和测试,符合 Windows 要求后,开发人员启动 Linux VM,并重新编译 Linux 上的代码,确保它能够顺利运行。这种模式对于多个站点而言尤其方便,因为 Virtual PC 可从微软网站免费下载。(参见本文末尾的参考资料)。站点也应该考虑 VMware Workstation(付费下载,但是非常适合软件测试)和 VMware Server(运行在 Windows 上,免费下载,但是可以将整个系统转换为一个虚拟化服务器)。大部分在 Linux 上进行开发的站点将来可能使用开放源代码 Xen 产品,它能够支持运行 Microsoft Windows XP 和 Windows 2003 Server 的 VM。

开发人员进行可移植性测试带来的优势不是将责任转移给 QA,而是能够立即得到反馈。如果代码确实能正确运行,那么开发人员就能知道上一个工作构造(working build)以来发生的变化,并能够指出需要改变的内容。然而,如果由 QA 完成测试,测试与开发人员得到反馈之间的时间差距将使迅速定位不可移植代码的工作变得更加困难。

这一方法的另一个优势就是开发人员能够为更多的平台开发软件,而且无需另外购买硬件。

总结

综上所述,开发人员采用虚拟化技术将获得诸多优势。测试优势本身(可移植性、正确平台的验证、在有限物理资源下进行测试等)将使虚拟化技术更具吸引力(甚至对于那些在可移植性测试中未发现任何优势的 Java 开发人员)。缺陷快照能力是另一项可以提高工作效率的重要优势。基于这些优势,一些评论家预计几年后几乎所有的开发机构都将大量使用虚拟化技术。

参考资料 

来自VMware 的 VMware Server 虚拟软件:http://www.vmware.com/products/server/

来自VMware 的 VMware ACE 虚拟软件:http://www.vmware.com/solutions/desktop/datasecurity.html

Microsoft Virtual PC 2007(免费下载页面)http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx

Xen(现可免费下载 Xen Express 产品):http://www.xensource.com/

Surgient VQMS:http://surgient.com/solutions/devtest/

作者简介

Andrew Binstock 现任Pacific Data Works LLC首席分析师。该公司专门致力于技术白皮书业务。Andrew 将于 2007 年 9 月在纽约举行的信息世界虚拟化执行论坛上发言。您可通过电子邮件(abinstock@pacificdataworks.com)与他联系。

 

我们邀请您在本页 发表评论 (不受客服控制),或直接向我们的支持中心 提问.