Virtual Machine 中進行開發專案優點 => VM & Docker

[Virtual Machine 中進行開發專案優點]

在OS 更新頻煩的 現時環境 避面受非技術因素干擾需要穩定的作業環境!

開發者有很多方式去建構自己的開發環境,以 PHP 開發來說,你可以手動ㄧ一安裝每個需要的軟體,像是PHP, Apache, MySQL, phpMyAdmin, 或是你可以選擇別人打包好的軟體包,像是XAMPP, MAMP, WAMP,或是透過像Homebrew、APT/YUM 這種套件管理程式來協助你安裝軟體。

然而隨著 Web Application 的架構日益複雜,新的技術和 framework 也不斷產生,像是 NodeJS、MongoDB、 AngularJS、Memcached 等等,若是以專案為導向的公司,可能還需要因應不同的專案來配置不同的軟體架構。然而不同的軟體彼此之間可能會有衝突,像是如果A專案使用 PHP 5.3, 但是B專案使用 PHP 5.5, 你該怎麼辦? 若是你更新了你的電腦作業系統,或是電腦整個掛點了,你該怎麼辦?有新的成員加入團隊,要重頭開始協助他安裝開發所需要的環境?
另外,除了開發者本身的開發環境外,大型的軟體公司通常還會有 Staging Server 和 Production Server,另外針對軟體測試通常還會有另外的測試環境。我想大家常常聽到的一句話就是 "這在我電腦上可以跑啊!",環境的不同常常導致這樣的問題產生,因此如何確保這些環境都能一樣,減少不確定的變因,是開發過程中一個相當重要的議題。
因此,我們可以發現以下的問題,在我們的開發生涯當中,多少都會遇過:
1. 設定過程繁雜且很難重複:安裝開發環境相當花時間,當電腦壞掉或是有新進成員,安裝環境常常讓人一個頭兩個大。
2. 環境無法獨立:不同的專案需要不同的開發環境,軟體版本可能互相影響。
3. 開發環境和 production 環境不同:要開發者的使用和 production 一樣的作業系統,基本上是不太可能的。

Virtualization(虛擬化) to the rescue

虛擬化其實不是一個很新的概念,不過通常用在實際的Production環境上,但隨著上述的問題不斷產生,已經有越來越多的開發者將虛擬化的概念帶到自身的開發環境中,甚至有許多的開放原始碼軟體,本身就提供打包好的虛擬化環境,讓開發者可以快速建構開發環境,例如 Laravel 官方提供的 Laravel Homestead 讓開發者可以快速部署開發環境。而 WordPress 社群也有開發者提供了像 Vagrantpress 或是 VVV 等工具。另外很最近火紅的 Docker, 也是虛擬化的工具選項之一。

有什麼好處呢?

1. 開發速度加快,不用花一堆時間在繁雜的設定上。
2. 不會因為作業系統更新或是電腦壞掉要重新修復或設定開發環境。
3. 你的電腦可以保持乾淨, 不會安裝一堆軟體在自己的作業系統上。
4. 開發環境和實際的 Production 環境可以保持一致
5. 你還是可以繼續使用你偏好的作用系統。 如果你喜歡 Windows,那麼你還是可以繼續使用它。
6. 專案不會彼此影響。不同的專案可以跑在不同VM上,不會互相干擾。


留言

這個網誌中的熱門文章

Why not Python?

Linux OS Class [20170710] vmare new and resize command demo