[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 一樣的作業系統,基本上是不太可能的。
1. 設定過程繁雜且很難重複:安裝開發環境相當花時間,當電腦壞掉或是有新進成員,安裝環境常常讓人一個頭兩個大。
2. 環境無法獨立:不同的專案需要不同的開發環境,軟體版本可能互相影響。
3. 開發環境和 production 環境不同:要開發者的使用和 production 一樣的作業系統,基本上是不太可能的。
Virtualization(虛擬化) to the rescue
虛擬化其實不是一個很新的概念,不過通常用在實際的Production環境上,但隨著上述的問題不斷產生,已經有越來越多的開發者將虛擬化的概念帶到自身的開發環境中,甚至有許多的開放原始碼軟體,本身就提供打包好的虛擬化環境,讓開發者可以快速建構開發環境,例如 Laravel 官方提供的 Laravel Homestead 讓開發者可以快速部署開發環境。而 WordPress 社群也有開發者提供了像 Vagrantpress 或是 VVV 等工具。另外很最近火紅的 Docker, 也是虛擬化的工具選項之一。
沒有留言:
張貼留言