我正在规划一个云端开发环境。我的目标平台是 Microsoft .Net,首选云是 Amazon AWS(尽管我愿意听取建议)。
我打算购买高内存按需实例并在其中为每个开发人员部署一个客户虚拟机。以下是我的疑问:
- 这种拓扑结构可取吗?
- 开发人员如何直接登录并使用客户虚拟机?
- 除了拥有良好的宽带互联网连接(以及备用连接)之外,开发人员还需要注意什么?
- 我将如何管理开发环境中的资源?有什么工具吗?服务?
谢谢。
答案1
不,这并不可取。首先,在虚拟化之上再运行虚拟化的性能会很差。而且大多数开发人员不喜欢使用远程托管的虚拟机,因为每个小操作都会有一点延迟(由于约 50 到 200 毫秒的网络延迟)。
最常见的解决方案如下:
- 每个开发人员都直接在自己的本地电脑上工作,并根据需要安装一套依赖项(Visual Studio、.NET、IIS Express、SQL Express 等)。
- 代码被推送到中央存储库(Subversion,等等)。
- 持续集成 (CI) 服务器 (fx哈德森,团队城市) 从存储库中检出代码、构建它、运行单元测试,并可能将其直接安装到测试或暂存服务器上。
你的 CI 服务器、测试和 Staging 服务器可以很好地运行在云端(使用类似虚拟私有云)。您的代码存储库也可以,但如果您不喜欢在本地使用,那么您应该将其外包给托管的 Subversion / Git 服务。
编辑:您可以测试它(这是云计算的优势之一——您可以在几分钟内启动服务器,并测试它的实际性能)。但是,如何在内部运行 Windows 2008 R2 服务器,并在该服务器上设置虚拟机?网络延迟接近于零,而且一点也不难。
在我们继续之前——你为什么不询问你的开发人员他们习惯如何做事,以及他们喜欢什么……
答案2
AWS 实例已经是在虚拟机管理程序上运行的虚拟机。再运行另一层虚拟化并不是一个好主意,因为这样开发人员就不得不在位于 WAN 连接另一端的硬件上的虚拟机中的虚拟机中工作。我怀疑这在技术上是否可行 - 但如果可行,我敢肯定性能会很糟糕。
答案3
您在此设置中使用的所有 VM 技术都需要在 CPU 级别进行硬件虚拟化。由于 EC2 实例已在虚拟机管理程序上运行,因此您无法通过平台访问裸机来实现此目的。
如果您真的想要这个,我建议您使用某个地方的专用服务器,然后通过 VPN 将其连接到您的世界。
如果您正在寻找云优势,您可能需要确定一个合适的单位(每个开发人员一个盒子,每个团队一个盒子等),然后选择适合这些需求的实例大小。要在此处获得云设置的好处,您还需要根据需要增加/减少实例。开发团队的使用模式实际上并不适用于此设置。