在软件开发中使用虚拟化的关键用例是什么?

时间:2008-10-15 17:50:18

标签: development-environment vmware virtualization virtual-pc

使用虚拟化的关键用例是什么 - 即使用VMWareMicrosoft Virtual PC等软件运行一个或多个“虚拟PC”进行软件开发?

此外 - 我的定义中没有涉及虚拟化的其他实例/用途(使用MS Virtual PC或VMWare等工具),这对开发人员有用吗?

我提出问题的动力是StackOverflow comment Metro Smurf断言“如果没有它,你会想知道你是如何开发的!”,关于虚拟化的使用。

(每个回复只包括一个用例。谢谢!)

15 个答案:

答案 0 :(得分:11)

多个环境中的应用程序测试是我所知道的虚拟化的一个显而易见的用途。在其他操作系统上测试您的应用程序(无需额外的物理计算机),以及涉及通常只允许您在给定计算机上安装单个版本的软件的测试(例如Internet Explorer浏览器;运行IE6)和同一台机器上的IE7不是官方支持的配置),是虚拟机使用的理想选择。

答案 1 :(得分:5)

如果您的构建服务器在VM中运行,您可以为每个软件版本创建它的快照,以便100%确定您可以重新创建构建环境(如果您想要对旧版本进行修补) ,例如)。

答案 2 :(得分:4)

如果您设置开发环境的快照(并备份它们),那么如果您的计算机发生故障,可以很容易地恢复生产力。当您的机器在发布之前发生故障时 - 您可以立即恢复安装和配置的所有工具,它可以成为救生员。

答案 3 :(得分:2)

适用于我目前情况的最简单的情况是,我们拥有复杂的客户端 - 服务器环境,并且通过虚拟化,每个开发人员都可以非常快速地获得一组基本操作系统,以部署其本地构建并验证端到端功能。

本地你有你的开发箱和N个客户端盒,每次你想尝试构建时都会重新初始化为新操作系统。基本上它是测试环境相当于'make clean',即使客户端工作站也被新操作系统取代。

答案 4 :(得分:2)

在团队成员之间快速分配环境是虚拟化的一个非常好的用例,特别是如果你有很多不同的组件,工具等等。这可以为你带来大量的时间与新员工,承包商或其他人谁需要快速环境。

答案 5 :(得分:2)

许多演示者使用虚拟机进行演示 - 它允许他们立即恢复以重置第二天的演示文稿,在计算机之间快速传输所有演示材料,而不必向参加者显示杂乱的“我的文档”文件夹。

答案 6 :(得分:2)

将虚拟化用于销售活动也是一个很好的用例。您可以在特定时间拍摄快照,您可以将其保存为演示基线。然后,一旦您完成演示并更改数据等,您就可以恢复到之前的基线,以便将来演示。您还可以捕获多个基线,并选择最适合即将到来的演示的基线。

答案 7 :(得分:1)

测试环境。如果您有多个系统需要针对的设置(例如Windows& Linux,XP和Vista),则具有大量RAM和VMWare(或其他系统)的计算机是管理该系统的好方法。的环境中。

另一个是在一个系统上开发并针对另一个系统。例如,有一次我在运行Linux的工作站上做了一些J2EE工作,其中客户端是I.E. 5.5。使用Windows 2000和IE 5.5的VM可以让我测试应用程序。

答案 8 :(得分:1)

我使用虚拟机进行开发的原因。

  • 隔离不同的开发环境。
  • 测试环境。
  • 由于计算机硬件故障/升级而轻松恢复。
  • 如果某些内容破坏了您的开发环境,则可以“回滚”更改。

目前,我正在使用VirtualBox进行虚拟机设置。我曾经使用过VirtualPC,但我真的很讨厌没有任何类型的“快照”功能(比如VMware和VirtualBox)。

答案 9 :(得分:1)

我们开发用于SaaS应用程序的软件,我们的生产环境中有大量服务器,其软件环境需要绝对可预测;我们不能在我们的开发机器上安装额外的任何东西。

此外,我们的应用程序需要许多不同的服务器类型才能正常运行(我最后一次计算至少7次);大多数情况下,它们不能安装在同一台(虚拟)机器上 - 至少,不能违反“与生产相同的软件”要求。

为了拥有一致的环境,必须使用VM。我不知道没有他们怎么管理。

快照和回滚也很不错,但我偶尔也会使用它们(在安装/升级测试期间非常有用)。

假设您正在开发新版本的软件,并检查以前版本的升级是否正常工作......在不能回滚框的情况下进行测试循环需要多长时间?你必须重新安装操作系统然后旧版本?你能保证卸载真的卸载了所有内容吗?

答案 10 :(得分:1)

能够测试/重新测试您的部署过程是一项巨大的节省。

答案 11 :(得分:1)

我很惊讶没有人提到过适用于调试的VMware记录/重播功能(awesome video demo)。

我有一台运行ESXi的无头服务器运行各种机器来构建安装程序(因此我不必放弃桌面处理能力),自动化测试(服务器比任何桌面都快)和各种测试环境(关于20种不同的配置),以便支持团队可以轻松跳转到与客户系统紧密匹配的配置。

如果您有一台运行虚拟机的服务器非常强大,可以在支持,测试和开发团队之间共享,那么您可以节省大量成本。总而言之,我们在5到10人共享的ESXi(双四核Xeon 2.5G + 8Gb RAM)上运行~25个虚拟机,一些开发人员使用Virtual PC,然后在我的桌面上使用VMware Workstation。此处的所有Mac用户也使用VMware Fusion

答案 12 :(得分:1)

  • 为不同版本的Microsoft Office开发外接程序(使用Visual Studio Tools for Office)。

我的主要工作机器有Office 2007.当我使用Office 2003的加载项时,我使用Visual Studio和Office 2003的虚拟机。

答案 13 :(得分:0)

某些服务器应用程序也可以使用VM。当一个虚拟机使用不多时,服务器可以将资源定位到其他虚拟机。

答案 14 :(得分:0)

某种测试环境:如果您正在调试恶意软件(编写或开发针对它的药丸),那么使用真正的操作系统并不聪明。唯一可能的缺点是病毒可以检测到它们是在虚拟化中运行的。 :(其中一种可能性是因为VM引擎可以模拟一组有限的硬件。