我们的团队一直在Mac上开发并在EC2上部署到Ubuntu上三年,现在只有很少的问题。有几件事使这个过程顺利进行:
我们可以在Mac上运行整个应用程序堆栈**。在需要的时候,在macports,homebrew和源码建设之间,我们设法获得了我们在开发工具上运行的每一项技术。碎片配置和配合的方式在本地是不同的(例如,我们会自动发现memcached实例,而本地则是硬编码),但每次集成都可以先在Mac上进行测试,然后再进行制作。
我们的连续构建系统与我们的prod盒具有相同的设置。这意味着如果你检查一些代码取决于一些本地魔法,它会很快被发现。
我们运行浸泡(一些人称之为分段或整合)堆栈,其配置与生产相同。这有时会导致一些开发费用,但有很多好处,它非常值得。所有代码在推送到产品之前都会经过这个堆栈。
该设置已经运行良好,随着时间的推移,我们已经允许设置的更多部分漂移。我们过去常常在当地运营旅客(就像我们在做产品时那样),但现在使用Pow。在升级剩下的堆栈之前,我们经常在开发中尝试使用新的ruby版本一段时间。
我不得不为其他项目(VirtualBox中的OSX + CentOS)使用虚拟化环境而开发,并且肯定会发现它更加痛苦的是所有原生的。首先,它感觉像管理两台机器而不是一台。一切也都觉得sloooooowww。
如果有一块堆栈在Mac上运行很痛苦,我肯定会选择a)花点时间在本地工作,或者b)将该块摘除掉,而不是支付处理虚拟环境的税。
**我只在本讨论中包含Rails应用程序和直接依赖项。例如,我们使用puppet配置我们的EC2车队,但不要在我们的开发箱上运行它。
谢谢凯文。这确实回答了我的问题的一部分。通过你的回答,我假设你建议我使用OS X作为默认开发环境,并推动为测试部署“制作”副本。另外,当你有一个依赖堆栈时,你如何设置你的本地环境? – Alagu 2012-02-19 14:16:19
要添加,我正在寻找当依赖堆栈变大时使用Native OS X和Virtualbox的优点和缺点的答案。 – Alagu 2012-02-19 14:19:37
在开发机器上,它应该像在OSX上根据需要设置堆栈一样简单。您可以创建一个脚本,为新开发人员做所有事情,使其不那么痛苦。希望每个开发人员都能够在Virtual box中运行,看起来非常适得其反。如果你不是一个分布式的劳动力队伍,一个简单的答案就是为nix购买或重新使用计算机,并允许每个开发者自己的端口运行他们的代码并进行测试。 – 2012-02-20 14:09:59