3 回答

TA貢獻1757條經驗 獲得超7個贊
我一直很喜歡Vagrant這個工具,兩三年前就用它來進行自己項目的環境維護,那時候主要是做測試,由于Vagrant將操作系統環境進行了標準化,我很容易就能讓自己的應用系統以及相關的測試結果保持穩定。
Vagrant還有一個好處,Ruby社區比較偏愛Mac,但是線上的系統基本都是Linux,所以開發環境所做的測試是有疑問的,特別是遇到一些有so依賴的gem,這時一個和線上完全一樣的環境就特別重要。
其實上面的表述不太準確,Vagrant也有各種provider,我所說的場景,基本上都是virtualbox的provider,所以這些地方正確的說法是 vagrant/virtualbox。
和Docker相比,vagrant/virtualbox組合的成本還是很高的,無論是setup一個環境還是reset一個環境,都需要一段時間的等待,Vagrant只是把virtualbox的操作DSL了而已,底層的做法沒有變化。而Docker由于本質上就是一個進程,因此天生就是輕量級的。對于運行時間在分鐘級別的自動化測試工作,Docker顯然有很大的優勢。
當然,也有人會認為Docker不能模擬完整的操作系統,不過這恐怕是一個優點而不是缺點。我在以前的文章中已經說過了,這里概述一下主要觀點——
Docker簡化了操作系統這個基礎設施,讓應用精簡為其最核心的形態——攜帶有限資源的進程,在此基礎上更有利于架構上的最佳實踐。
而對Ruby工程師而言,這個“最佳實踐”中肯定少不了的一條就是——微服務。
添加回答
舉報