关于使用虚拟机进行开发的思考


51

我将作为一家初创公司的开发负责人,并且建议我们使用VM进行开发。我并不是说每个开发人员都拥有一个带有用于测试/开发的虚拟机的桌面,我的意思是拥有一个管理所有虚拟机的服务器机架,并让开发人员在本地甚至从他们的家中通过microPC(ChromeOS都可以吗?)工作。电脑。

对我来说,好处是它具有极高的可扩展性,从长期来看更便宜,易于管理,并且我们利用了硬件的最大潜力。至于缺点,除了我们需要有人来设置/维护所述设置之外,我再也没有想到任何其他的热门产品。

我希望你们中的某些人可能在您的工作地点也有类似的设置,并且能够加深您的意见。谢谢。


7
这不是您父亲的IBM VM / ESA!一直回到IBM大型机。
Vitor Py

23
对于我来说,唯一的表现最差的就是多屏支持。我无法在少于2个屏幕上进行开发。
贾斯汀·

27
原因有很多:有时出于许可目的,您需要将USB密钥插入物理计算机。有时您正在处理实际的CD。有时,您需要重新引导吸盘。有时您需要像在实际计算机上那样衡量性能。有时您正在开发驱动程序。有时,您需要获得所有可能的速度。有时您需要在没有互联网的地方演示产品。有时您需要使用指纹验证登录到系统。
工作

47
现代IDE需要专用的本地硬件。甚至在考虑这样做之前,您都应该拥有一个测试床和一份研究,以查看它是否可行。您可能会学到一两个您不知道的关于人们如何与机器交互的东西。如果您告诉我您没有时间或金钱来进行这样的研究,我会告诉您您没有足够的规模来证明您的设置合理。
罗伯特·哈维

4
请记住,您也确实需要物理机。我们的测试服务器几乎全部分布在两台SAN主机上的VM上。但是我们确实遇到了需要/需要验证虚拟化不是因素甚至是罪魁祸首的问题。此外,并非所有VM都支持Glass主题,如果要开发GUI,则还需要在Glass主题环境中检查GUI。
Marjan Venema

Answers:


96

作为开发预算的一小部分,您希望节省什么?在我看来,您正在担心epsilon。开发人员所需的机器成本不到使开发人员长期聘用的总成本的5%。因此,唯一重要的问题是“是否可以节省开发人员时间?” 如果他们不必花时间安装和升级开发软件,则可以。或者,如果网络出现故障或服务器出现故障,或者最有可能的是缺少网络响应能力的话,可能会花费一些时间。现代开发取决于与IDE或至少一个非常聪明的编辑器之间的逐击交互。将交互延迟几十毫秒会破坏开发人员的生产力。开发人员学习这种新的工作方式也要付出代价。

这些不是对VM的反对,而是对远程开发的潜在反对。


我明白您的意思,但是服务器将与开发人员位于本地(同一个房间)。延迟将取决于他们是否在家中工作,无论是来自VM还是开发者自己的盒子,都会存在延迟。开发预算不仅包括创建开发VM,还包括测试环境。我发现,与每个拥有自己的盒子的方法相比,此方法具有更大的可伸缩性,并且更易于支持。不过,感谢您的回答,这让我想到了其他事情:)
J_A_X 2011年

5
这种方法确实可以节省维护时间。但可能不是在启动规模。必须至少有20位用户或更多用户才能开始产生财务上的利益。
SK-logic

6
如果将服务器放置在设备房中,则会获得环境隔离,这对于服务器和人员来说更好。减少办公室中的背景噪音,可以更好地管理热量。
mattnz

1
@J_A_X:如果机器是笔记本电脑,那么在家工作时就不会存在这种延迟。通过VPN的网络延迟肯定会存在,但与计算机本身进行交互的延迟不会存在。
亚当·罗宾逊

1
@J_A_X:如果整个开发环境都包含在开发人员的便携式计算机中,则不会存在延迟。当每一次按键都发生交互时,在整个房间内推动屏幕更新的延迟可能仍然很明显。字符回声延迟五十毫秒将是非常痛苦的。也许一切都会顺利进行,但是真的值得一试吗?
凯文·克莱恩

58

我认为您是精打细算和愚蠢的人。

首先,与开发人员的成本相比,机器成本微不足道。您应该努力使生产率最大化,而不是使机器成本最小化。

其次,延迟(不是带宽)是许多编程任务(尤其是文本编辑)的关键。为开发人员在机器上节省的每一美元/英镑/欧元,您将至少花费十美元进行网络升级,以维持甚至相当的生产力-即便如此,如果您通过提供它们与您在某个地方的垃圾箱中发现的Pentium III一起使用。

我还认为,让您的开发人员使用至少合理地接近目标最终用户期望的环境会带来很大的好处。不管规范中的官方性能目标如何,大多数程序员都相当依赖测试时代码的“感觉”。当他们使用与最终用户完全不同的环境时,他们可能会在琐碎琐事上浪费时间,同时完全忽略了主要问题。

从支持的角度来看,同质环境听起来很吸引人,但是通常应该鼓励开发人员的机器尽可能多的变化。无论如何,开发人员很少需要太多的支持,并且当您的代码将因不同的图形芯片,CPU,网络适配器等而失败时,便会立即知道,这不仅能节省最少的投资。

底线:如果您要编写(至少主要是)打算在虚拟服务器环境中使用的代码,则只需要为开发人员提供代码即可。如果您仍在进行测试,那么它也可以(但不一定)对开发有意义。同样,如果您无论如何仍需要(或至少拥有)严重超标的服务器和网络,则可以通过使用现有的资源来利用它。

但是,在大多数典型情况下,在我看来,这可能会带来更多无法解决的问题。


4
我知道这并不是要认真对待,但我绝对会在“一些地方的垃圾箱中找到的奔腾III”上采用一个不错的虚拟环境
Davy8

不不不。不要在开发机器之间鼓励太多变化。如果您需要开发硬件,则可以使用一组代表您需要在其上运行软件的硬件的测试盒来正确地进行开发。您永远也不会鼓励您的各个开发机器上的硬件随机变化,这是软件开发的最差做法。
Dietbuddha 2014年

19

那是我过去的想法之一:拥有一台具有所有必需软件的高性能服务器,以及一堆只能用于通过远程桌面连接到服务器的低性能台式机。

好处是:

  • 固态备份。一些开发人员可能不希望定期备份其台式计算机,因此中央解决方案会更可靠,
  • 对于每个开发人员,都可以在任何地方工作。我的意思是在公司的任何PC上工作。假设早上,开发人员想要安静的工作环境。他去自己的房间在那里工作。然后,他想进行一些配对编程或在更社交的环境中工作。他只是关闭了台式机,转到另一个有十台计算机的房间,然后从那里进行连接。否“我必须再次重新加载所有应用程序”。

好吧,这有几个严重的问题,使我认为未来几年我将永远不会使用这种东西。

  • 远程解决方案的特殊性。一次使用多个计算机屏幕远距离工作怎么办?我的意思是,这容易吗?明显吗?远程工作时,我每天使用的快捷方式是否启用?我不确定。如果按Ctrl + Shift + Esc可以查看当前正在运行的程序列表怎么办?哦,是的,它不起作用,所以现在我必须记住以其他方式进行操作。

  • 性能受到打击。我不确定性能不会降低。请记住,使用慢速计算机的程序员是不满意的程序员。使程序员对糟糕的环境不满意的公司将永远不会生产高质量的软件。

  • 灾难的影响更大。您是否将解决方案托管在冗余服务器上?您的公司中是否有冗余网络?假设路由器出现故障,并且不是冗余的。这意味着所有开发人员现在都无法工作。完全没有 因为他们没有在本地安装软件。因为他们甚至没有源代码,所以它们在服务器上。因此,每个人都停下来了,您每小时要向所有这些人付款,只是为了等待路由器被更换。

  • 硬件成本。如果只有一台服务器,那么要花多少钱?假设有20个开发人员,那么服务器上64 GB的RAM是否足够?不太确定。两个CPU的四核解决方案是否足够?再次,我有一些疑问。否则,您会怎么想?某种云?还是您拥有可在多台服务器上使用的可扩展解决方案?您准备好为每台机器支付Windows Server的费用(如果使用Windows)吗?

  • 电力成本。如果您完全在远程工作,则意味着您在服务器端消耗的电量几乎与在本地工作的电量相同,加上本地计算机和网络浪费的电量。

  • 许可证。我不确定是否必须把它当作收益或问题,但我觉得这种情况下的软件许可成本会高得多。

再考虑一下管理,支持,部署和维护的所有成本。使用这样的自定义解决方案,它很容易变得庞大,不算每次失败都会使每个开发人员无所事事,等待着继续工作。


如果服务器宕机,您将失去一切。除非您也复制此服务器...
Rudy

4
@Rudy:在大多数商店中,如果服务器出现故障,您也不能真正在本地工作(没有DB访问测试,没有签入,没有签出,没有错误跟踪访问,没有电子邮件等等)
sleske

4
@sleske同意DB,电子邮件和其他内容,但是使用DVCS,您至少可以
签到

大多数商店,特别是考虑在机架上使用VM来承载开发环境的商店,都将拥有用于DB,电子邮件等的单独服务器。此外,即使其中一些服务出现故障,您仍然可以访问本地桌面以及发生的任何事情当时正在努力。
皮特

@sleske-今天有不能在开发人员的工作站上运行的数据库引擎吗?
凯文·克莱恩

18

我们将按需Amazon EC2实例用作开发人员计算机。这与成本无关。我们有一个“开发人员池”来处理多个项目,我们需要能够快速跨项目移动的能力。

通常,VM可节省初始设置时间。但是从长远来看,由于生产力下降,它浪费了时间。成本是无轴的,因为开发人员的成本远高于机器成本。

生产力成本包括-启动VM映像所需的时间(数分钟),响应速度较慢以及资源/内存限制。这些最初并不多,但随着时间的流逝它们会变得烦人。

在我们的一个项目中,我们重构了代码以简化初始设置,以“下载代码并运行Maven”。有了这一更改,对于新开发人员来说,开始该项目很简单-现在没有人使用amazon VM映像。我们也希望在其他项目上模仿它,但这需要时间。到那时,我们有了ec2映像。


14

这里要非常小心。最近,我被部署到一个客户,IT部门中的每个人基本上都是出于相同的原因而拥有虚拟机-使他们能够在台式机上安装低端PC,然后远程进入虚拟机并完成其正常工作。

那里的经历并不漂亮。由于各种原因,我们每周至少运行一次非常慢。通常,我们可以确定团队中的某人何时运行一组处理器密集型SSIS软件包。他们最终确实将我们中的一些人转移到了不同​​的服务器上,这对某些服务器有所帮助,但性能始终不正确。

我认为,如果您要这样做-对服务器功能,处理需求,要服务的计算机数量等进行尽职调查,可能会节省一些钱,但如果实施不正确,则可能会导致失误头痛

请注意:这不是VM体系结构的火焰-只是向正在研究它的人们发出的警告-确保在实施之前先将您的鸭子摆成一排。


1
+1做功课!在我上一家公司做这件事的人有经验,事事顺利。这是我曾经用于开发的最佳系统,但是花了大部分时间来设计和实现。
Christopher Bibbs

12

虚拟机上的开发可以很好地进行,但前提是必须正确:

  • 仅仅因为使用VM可以让您为整个团队拥有一台计算机,而不是为每个开发人员拥有一台计算机,并不意味着这是一个好主意
  • 重新启动不应要求在24小时的响应时间内打开支持通知单
  • 开发VM不应位于距开发人员5000英里的数据中心中。
  • 尽管VM可能由开发人员管理,因此不受支持,但这并不意味着VM应该无法访问网络服务(例如源代码控制)。
  • 远程桌面连接应该是标准的,而不是某些自定义的“高安全性”小程序,该小程序会将键入的所有引号转换为变音符号。
  • 获取新的VM或重建现有的VM只需几分钟,而不是几周

我已经看过所有这些问题,并且不喜欢与他们一起工作。但是,我也可以在家中选择一个虚拟机设置。它的运行速度比本地安装的运行速度快,并允许诸如针对不同项目的单独环境之类的事情,以及在环境变得不稳定时快速重建的事情。


9

我使用虚拟机,但不建议您将其用于主要项目。

我使用VM进行开发的原因是因为我必须支持旧项目(例如VB6,.NET 1.1等),并且我不想通过安装VS2003 / 2005 / vb6 / etc来弄脏主机。 ...可以,但是到处都有间歇性问题。

此外,交互速度较慢,VM会花费一些时间来启动/关闭,并且没有本机UI效果(例如Win7中的Aero),等等。

无论您要节省多少钱,都将浪费掉,而麻烦将要加在您的团队身上。另外,正如这里提到的,没有多屏支持。我至少需要3个屏幕才能尽可能高效地工作。


我使用VMWare Workstation进行三个监视器的开发。
JC01 2012年

8

开发的#1规则是让您的开发人员满意。您会发现这几乎与远程VM无关。多监视器支持参差不齐,网络滞后和故障现象麻烦,并且节省的成本通常很少。

当然,可以在VM上工作,但也允许使用本地VM,也使物理计算机成为荒谬的快速野兽。

我实现了100%的远程办公,尽管我的个人ISP和VPN之间具有很高的可靠性,但是如果我不能在脱机模式下工作,它们会有足够的瞬发信号使我发疯。

我通常只是启动各种VirtualBox映像并从中工作。如果您需要在本地复制一个新的MB,那么通过网络复制几百MB的时间也不会太耗时。


5

我的团队成功实施了“慢速PC /快速VM服务器”配置。对于由20个开发人员组成的团队,我们有一个8处理器,256GB RAM服务器,通过光纤连接到非常快的SAN。这很昂贵,但是比给每个开发人员一个性能类似的工作站便宜。对于一个小型团队(4个开发人员),我不确定会产生规模经济并实际上为您节省任何费用。


1
当您开始编译大型项目或执行其他耗费资源的任务时,您是否在其他VM中遇到问题?
TheLQ'7

@TheLQ没问题,但是设计系统的人之前已经做过,因此仅针对此任务选择并调整了硬件。最后一个我问他,他说处理器通常总是闲置的,但是磁盘却疯狂地旋转。
Christopher Bibbs

因此,一个San磁盘正与8个开发人员一起处于边缘-您要对20个用户说些什么?我们需要多少个San?
Toskan

1
@Toskan不,我们的服务器中有20个开发人员和8个CPU。至于磁盘数量,我相信我们的SAN有12个磁盘,但是我不确定。
Christopher Bibbs

5

值得一看的是用于开发的VM,但财务成本是错误的原因。

使用NAnt和CruiseControl.net的 Marc Holmes的Expert .NET Delivery中对此进行了简要介绍-简而言之,在VM上进行开发的论点是,它不鼓励工作的任何方面都依赖于开发人员的特定配置。您可以在每个项目的开始时对VM进行核对,除非您确实需要特定的工具,否则它不会一直运转。这样可以最大程度地减少您所做的更改在除您以外的任何人的计算机上中断的可能性。开发人员可能会因为玩具被带走而哭泣-但最终,对工具的依赖是一个弱点,在干净的环境中您无法凭直觉做的任何事情都是闻起来的。

请注意,我不一定相信上面提出的论点。我理解它们并在一定程度上与它们保持一致,但是我出于争论的目的而使它们引起讨论。


7
这就是为什么您有一个构建引擎的原因-持续集成应该捕获这种依赖性。但是,开发人员需要他们可以获得的所有工具。

4
是的-不要拿走我的玩具。他们使我高效完成工作。建立部署以及在目标环境中进行测试是要解决的不同问题。
quick_now 2011年

一种选择是开发设置脚本,该脚本将复制您的别名,配置文件和其他设置文件。例如在Linux上,我设置了一个别名,以从git中提取所有内容。
迈克尔·杜兰特

4

潜在的缺点

  • 如果VM主机出现故障...则一切都准备就绪。如果您曾经有20人组成的团队大喊:“嘎!没有回应!?” 一致...不好玩。
  • 如果您允许快照...,那些快照将很快耗尽资源。20个人* 10-20个快照每个都会占用大量的HDD空间(或至少足以开始引起问题)。
  • 如果确实在主机上遇到资源使用问题,那么每个人都会遇到痛苦。

IME,这是一个很好的解决方案,它确实可以工作,但是主机上需要一些不错的硬件,当坏事发生时,它们就会发生在每个人身上。


4

这没有通过Joel测试的最重要标准之一。

我确保我所有的开发人员都至少拥有i3或更好的笔记本电脑或台式机,并具有尽可能多的RAM。

8GB是我追求的目标。

它使他们的工作效率更高,并且他们实际上可以在本地计算机上运行Virtual Box进行开发和测试,而无需花费昂贵的维护服务器。他们可以快照自己的Virtual Box安装疯狂的东西,并测试不同的浏览器和安装程序,然后在几秒钟内将所有内容恢复为已知的良好配置,而无需联系“ IT”服务。

开发人员需要公司中最快的计算机,其本地计算机上具有最多的RAM和root权限。故事结局。


4

在开发之前,我曾经研究过VM,包括本地VM(在本地PC上运行)和远程VM。当地的人是很多更好比遥控器的人一起工作。

我们通过RDP连接到的远程VM在每次按键和操作之间都存在少量滞后。可以在这样的条件下短时间进行开发,但是日复一日,它变得非常令人沮丧。

我很高兴在VMWare上的本地VM下开发,因为我需要在Linux机器上运行Flash Builder,并且只要它有足够的内存就对它感到满意-它非常有用。


我只需要补充一点,您需要一个带有嵌套页面表(第二代虚拟化支持)的CPU才能获得良好的性能。当您没有SSD时,将VM Ware与共享路径一起使用会非常慢(7k文件git addgit status
仓库

3

我们为远程计算机执行此操作,并且效果很好。大多数情况下,在家工作(通常只是为了在这里和那里进行紧急修复),因此我们只使用相当低端的上网本,这些上网本可以远程部署到办公室中快速运行的台式机中。它们肯定仍然较慢(可能受到网络的限制比什么都重要),但有时会执行一些短期任务。但是,对于全职工作的人来说,这确实是不可接受的,因为VM经常会导致一些滞后,即使使用最好的硬件恕我直言,这也会分散您的注意力。


2

在我的上一份工作中,我们完全做到了:

我们使用了Windows终端服务器,其中每个开发人员都有一个帐户。开发人员仍然拥有普通的PC(因为它们已经在那里),但是这些PC仅运行RDP客户端。

我们进行了Java开发,因此该软件用于Java编译器+ IDE(主要是Eclipse),Web浏览器,DB查询工具,版本控制客户端以及偶尔的Office软件(在本例中为OpenOffice.org)。

我们没有遇到任何实际问题,并且性能相当不错。

唯一真正的问题是,由于共享一个系统,因此您确实需要在某些情况下不要打扰其他人。当IT操作需要在服务器上进行大文件副本或运行备份时,每个人的性能都会下降。当我们确定并解决此问题时(通过低优先级或整夜进行复制),一切正常。

因此,警告是:尽快评估性能,并相应地计划硬件及其使用。


开发人员可以在这些帐户中安装软件吗?有时候Eclipse并不是工作的工具。
凯文·克莱恩

@kevin cline:是的,允许并且可以进行sw安装。但是,开发人员没有管理员权限,因此您只能安装不需要管理员权限才能安装或运行的软件。我可以毫无问题地安装所有我需要的东西,但是我听说那里仍然有需要管理员权限才能安装甚至只是运行的应用程序。
sleske

@sleske以我的经验,开发人员应该对自己的开发计算机具有虚拟或非虚拟管理员权限。在我看来,开发人员需要拥有自己使用的工具的所有权,而开发机器只是另一种工具。
曼弗雷德

@John:这确实取决于您需要的工具。如果您的工具均不需要管理员访问权限,则不需要管理员访问权限。我不明白为什么您应该始终需要管理员权限。当然,如果您需要执行诸如安装设备驱动程序之类的工作或在端口80上运行之类的工作,则需要管理员权限。
sleske 2011年

2

TL; DR:我已经完成了多项工作,现在我更喜欢它。

成本是关注的错误原因。这是一些更好的。

原因

  • 不同环境(开发,测试和生产)中的平台一致性。
    • 原因:完全消除了缺陷向量,即不同环境中平台差异带来的缺陷。
  • 允许系统更改(例如升级)首先在开发vm中发生,进行验证,汇总进行测试,验证并投入生产;开发(和测试)虚拟机使一切变得容易得多。
    • 原因:控制。我可以快照,回滚,识别增量,在一台服务器上进行更改并通过简单地复制虚拟机等来传播成功。
  • 有时,您针对其开发的系统仅在安全的网络上可用。或者,您的软件将在其上运行的服务器只能具有有限的访问权限或不同的网络特征。
    • 原因:开发VM可以在可以访问锁定的系统或服务的VLAN上。或者,如果开发服务器具有与测试和生产服务器相同的受限访问权限,则永远不会出现意外地编码对网络特性或访问权限不可用的需求的问题。

挑战性

首要的挑战是远程开发,尤其是当您必须通过网关或跳转服务器时。这使它变得困难,尤其是如果开发人员的能力不足(他们具有一些系统工程知识,网络知识等)。

远程开发有很多变体,但通常可以归结为两个主要差异。

  • 在远程环境中运行开发工具,并使用RDP客户端,远程X11客户端等协议。
  • 在本地运行开发工具,并使用协议透明地同步或在远程服务器上执行(通常使用ssh作为传输层)。

工具类

有一些工具可以帮助进行远程开发,并且有一些IDE可以帮助进行远程开发。您将不得不研究它在多大程度上可以进行远程开发,而并非不是没有在与代码进行开发的同一服务器上运行。但是,还有其他工具。

  • 安全Shell:大多数成功的远程开发设置都在更大程度上使用ssh,它使用无密码登录(使用密钥身份验证),透明的多跳(解决了跳转服务器问题)和其他配置选项来缩短响应时间。注意:使用SSH的非OpenSSH实现时,我总是遇到问题。
  • GNU Screen / TMUX:终端多路复用器。屏幕是它们的祖父,并且仍然很强大,但是我认为大多数人已经开始在TMUX上切换(甚至启动)。
  • Vim / Emacs:守旧,但是两者都可以以不同的方式很好地用于远程开发。它是Vim,因此只需要一个shell,而Emacs可以在本地运行并使用TRAMP进行远程开发。

1

略有不同-您是否给您的经理/会计师一个电子表格,以突出显示使用这些慢速机器的成本?向他们指出,VM解决方案(除非做得好,而且不容易)可能会使开发人员和公司走上一条路。


1

这将取决于您对VMware安装的管理能力,如果您将其置于低优先级子池中,则根据其他子池的活动情况,您的计算机将运行缓慢。


1

硬件便宜,程序员昂贵。

您为什么要给程序员缓慢的开发机器而使他们沮丧?与它们将获得的性能优势相比,升级硬件的成本相形见pale。

要求更好的机器。至少要求4 GB的内存。不到一周的时间,即可再添加2gb平板电脑。


问题是笔记本电脑上安装的32位窗口
Toskan

1

缺乏双屏支持一直是交易杀手。我简直无法想象在单个屏幕上进行大量开发工作。

现在,他们确实在进行测试/部署/修改,所以我也不认为他们也不应该掉队。


RDP支持最新版本的多显示器。
安德鲁·刘易斯


我以为我们在这里谈论的不是VM,而是RDP。。。
Wyatt Barnett

抱歉,我指的是远程VM。您可以使用VMWare Workstation 7+做多显示器
Andrew Lewis,

我认为这取决于显示器的尺寸。
Manfred

0

如果您的大型机在RAID10中具有50个SSD磁盘,并且仅在该大型机上使用3-4台计算机,则它可能会起作用。

否则,它们会很迟钝,甚至会很迟钝(尽管在极少数情况下,快照可以弥补这一点)。


0

我在办公室有一台不错的台式机,可以使用屏幕共享功能通过VPN通过笔记本电脑连接到台式机。

它可以用于非工作时间的支持事件以及偶尔的强制远程工作。当然,这比在第二台计算机上维护完全配置的环境或开发需要通过WAN到数据中心的低延迟的东西要好。

但是,长时间那样工作很令人沮丧。有时候让我呆在家里的事情已经被排除在外了。

延迟和屏幕房地产是我的两个杀手kill。


0

我认为您不希望使用远程VM解决方案。网络连接将成为瓶颈,即使是快速连接,也足以造成挫败感。我们正在从这种技术转向使用本地开发环境。

我们在iMac上进行开发,这确实很棒,但是我们的Web应用程序在Production的Linux环境上运行。问题在于,最终,我们可能会遇到仅在Linux上发生并且可能难以解决的问题。这就是虚拟机的强大功能所在。但是,我什至不喜欢100%地使用VM的想法。

最近,我了解了Vagrant(http://vagrantup.com/docs/getting-started/why.html)和Chef,这使VirtualBox的使用变得非常容易。Vagrant使您能够在需要时轻松启动VM,而在不需要时将VM拆除。因此,我可以使用Mac进行所有开发。然后,当我准备测试我的代码时,我可以启动VM对其进行测试,并仅在需要时保留它。Vagrant还使您能够轻松地与同事共享VM,从而确保所有人都在同一环境中工作。

我建议您检查Vagrant,以便您至少了解在VM上进行开发和使用时可用的选项。


0

我一直在做一个涉及5台机器的旧项目,每台机器在计算管道中都扮演着角色(机器1向机器2发送请求,依次将请求发送给机器3等)。但是,在虚拟机上进行设置部署节省了我们很多时间:1.该系统不可言喻,因为开发人员懒惰/没有时间将测试整合到设计中。2.部署了太多的设置,我需要花费时间将它们按组排列。

现在,我使用它是因为我一次处理了太多项目。我现在遇到的主要问题是:1. VM正在消耗太多时间来维护。2. VM正在消耗大量内存才能运行

当您尝试使用VM进行订购时,这有点使VM难以使用。在已淘汰的VM上开发,将一台主机与您的电子邮件和文本保持在一起。使您的生活保持整洁和清洁。


0

正如其他人所说,这实际上取决于您要使用VM桌面解决的问题,然后权衡解决该问题的好处与VM环境将带来的不利影响。

我们正在迈向混合环境,在该环境中,我们所有的在岸开发人员都将拥有传统的物理计算机,但在离岸开发人员(目前正在与一家小型外包公司合作)中,将使用虚拟桌面。我们正在尝试使用远程桌面解决的问题与安全性和性能有关。从安全的角度来看,虚拟环境显然将为我们提供更大的控制权,并且出于性能方面的考虑,我们将仅传输“更改的像素”而不是完整的源代码,并且必须实现代理服务器等。

仍然不确定这是否是正确的方法,但这就是我们前进的方向。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.