我們的團隊一直在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