7

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

还有——是否还有我上面的定义没有涵盖的其他虚拟化实例/使用(使用像 MS Virtual PC 或 VMWare 这样的工具),并且对开发人员有用?

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

(请在每个回复中仅包含一个用例。谢谢!)

4

16 回答 16

11

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

于 2008-10-15T17:50:25.840 回答
5

如果您的构建服务器在虚拟机中运行,您可以为每个软件版本制作快照,以便 100% 确保您可以重新创建构建环境(例如,如果您想为旧版本打补丁)。

于 2008-10-15T20:46:24.987 回答
4

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

于 2008-10-15T17:54:26.580 回答
2

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

在本地,您有您的开发盒和 N 个客户端盒,每次您想尝试构建时,它们都会重新初始化为新的操作系统。从本质上讲,它相当于“make clean”的测试环境,甚至客户端工作站也被新的操作系统取代。

于 2008-10-15T17:52:38.113 回答
2

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

于 2008-10-15T17:55:01.713 回答
2

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

于 2008-10-15T17:55:37.250 回答
2

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

于 2008-10-15T17:58:30.660 回答
1

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

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

为了拥有一致的环境,有必要使用虚拟机。我不知道没有他们的人如何管理。

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

假设您正在开发软件的新版本,并检查从以前版本的升级是否正常工作......在无法回滚盒子的情况下进行测试周期需要多长时间?你必须重新安装操作系统然后旧版本?你能保证卸载真的卸载一切吗?

于 2008-10-15T20:54:56.840 回答
1

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

于 2009-01-06T15:13:36.273 回答
1

我很惊讶没有人提到非常适合调试的 VMware 记录/重放功能(很棒的视频演示)。

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

当您拥有一台运行虚拟机的非常强大的服务器时,可以在支持、测试和开发团队之间共享,您就可以节省大量成本。总之,我们在 5-10 人共享的 ESXi(双四核 Xeon 2.5G + 8Gb RAM)上运行了大约 25 个虚拟机,一些开发人员使用 Virtual PC,然后我在我的桌面上使用 VMware Workstation。这里的所有 Mac 用户也都使用 VMware Fusion

于 2009-01-07T00:59:08.417 回答
1

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

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

于 2008-10-15T18:00:06.147 回答
1

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

  • 隔离不同的开发环境。
  • 测试环境。
  • 由于计算机硬件故障/升级,易于恢复。
  • 如果某些东西损坏了它,则能够“回滚”对您的开发环境所做的更改。

目前,我正在使用 VirtualBox 进行 VM 设置。我曾经使用 VirtualPC,但我真的很讨厌没有任何类型的“快照”功能(就像 VMware 和 VirtualBox 一样)。

于 2008-10-15T18:02:31.650 回答
1
  • 为不同版本的 Microsoft Office 开发加载项(使用 Visual Studio Tools for Office)。

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

于 2009-05-01T23:38:51.403 回答
1

令我惊讶的是,没有人提到通过隔离不同 VM 中的数据库服务器和 Web 服务器来提高安全性的好处。

于 2017-04-22T00:21:52.080 回答
0

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

于 2008-10-15T17:52:18.707 回答
0

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

于 2009-12-08T22:16:09.130 回答