현재 내 개발 환경은 VMWare가 설치된 Ubuntu v12.04입니다. 전체 GUI를 사용하여 VM 내부에서 완전히 작업하고 Windows 7 인 호스트 OS에서 파일에 액세스 해야하는 경우 우분투 내에서 samba 파일 공유 만 사용합니다. VM에 네트워킹하기 위해 NAT를 통한 VM 다른 솔루션을 사용하면 VMWare의 공유 폴더와 같이 훨씬 느려집니다. 내 VMWare 이미지 설정에서이 기능을 비활성화했습니다. 그러나 호스트 시스템에 쉽게 복사 / 파스타를 복사 할 수 있도록 VMWare 도구를 설치합니다.
Matthias Zeis가 지적했듯이 VM과 네트워킹 / 공유 폴더를 선택할 때 문제가 될 수 있으므로주의하십시오.
나는 VirtualBox의 이전 사용자 였지만 VMWare 가보다 안정적이며 성능이 뛰어납니다 (적어도 나를 위해). 그러나 귀하의 요구와 요구 사항에 가장 잘 맞는 자체 테스트를 수행합니다. Vagrant는 VirtualBox를 사용합니다.
IDE :
저는 선택한 IDE로 Netbeans를 상당히 광범위하게 사용하고 있었지만 Sublime Text 2 보다 가벼운 솔루션으로 옮겨 왔습니다 . 나는 주로 X-Debug 목적과 쉬운 리팩토링을 위해 Netbeans을 열지 않습니다. Netbeans, PHPStorm, Eclipse 등은 모두 Java 기반 IDE이며 리소스가 매우 고갈 될 수 있습니다.
하드웨어 :
더 추가하기 위해 하드웨어는 항상 성능의 핵심 역할입니다 (분명히). 개발자가 여전히 플래터 HDD를 사용하고 있다면 SSD에 투자하려고합니다. Magento는 파일 / 폴더가 매우 많기 때문에 개발자 성능을 크게 향상시킵니다. 개발 중 : 모든 캐싱을 해제하고 SVN / GIT 또는 IDE에서 폴더 트리를 순회하는 동안. VM에 충분한 RAM을 제공하는 것 역시 중요합니다.
내 호스트 컴퓨터 : Samsung SSD 512GB 드라이브 공간, Win7 (64 비트), 8GB RAM, i7 2.4GHz (8 코어)
내 VM 머신 : Samsung SSD, 30GB 드라이브 공간, Ubuntu 12.04 (32 비트), 3GB RAM, i7 (4 코어 할당).
물어볼 질문 : 가장 큰 문제는 여러 프로젝트에서 가볍고 재사용 가능한 개발자 VM 이미지 하나를 만들거나 프로젝트 당 이미지를 만드는 것입니다. 이전에는 프로젝트별로 작은 VM을 만들려고 노력했지만 개발 워크 플로에 따라 계속 재구성하는 것이 너무 번거로운 작업이었으며 이제 더 큰 VM을 사용하고 각 프로젝트를 가능한 한 격리 된 상태로 유지하기 위해 최선을 다합니다.
프로젝트 당 여러 VM이 선택된 경로 인 경우 OS, IDE, LAMP 스택, 업데이트 / 구성 등을 유지 관리하는 것이 번거로운 일이 될 수 있습니다. 궁극적으로 개발 시간이 길어지고 로컬 환경 설정에 대한 청구 불가능한 시간이 더 길어집니다.
새 VM을 열고 호스트 하드웨어를 더 많이 슬라이스 할 필요없이 다른 프로젝트 파일에 빠르게 액세스 할 수 있었기 때문에이 기능도 도움이되었습니다. 단점은 환경에 예기치 않은 문제 (예 : php.ini, my.cnf, httpd.conf 등)를 방지하기 위해 각 프로젝트를 다른 프로젝트에서 격리하려는 것이 이상적입니다. 지금까지 모든 프로젝트에 쉽게 액세스 할 수 있다는 트레이드 오프는보다 풍부한 리소스로 입증되었습니다.
다시 말하지만 이것은 귀하의 요구 사항에 달려 있으므로 미리 평가하십시오.
피드백 :
피드백으로 이어집니다. 개발자로부터 최대한 많은 정보를 얻으십시오. 궁극적으로 요구 사항을 충족하고 적절한 솔루션을 설정하고 적용하기 전에 문제를 이해해야합니다. 모든 사람이 서로 다른 워크 플로를 가지고 있으며, 개발을 위해 선택한 OS에서 모든 사람이 편안하게 작업 할 수있는 것은 아닙니다. 경험상 개발자는 가장 편하고 성능이 가장 좋은 OS와 IDE를 개발자가 선택할 수 있습니다. 따라서 가벼운 헤드리스 Linux VM도 필요에 따라 유용 할 수 있지만 호스트와 VM 사이의 로컬 네트워크를 통해 폴더를 공유하는 문제가 발생할 수 있습니다.
휴대 성 :
VM 이미지를 Dropbox와 같은 곳에 보관하여 필요할 때 언제든지 쉽게 액세스 할 수 있도록하는 아이디어를 가지고 놀았습니다. Dropbox와 같은 서비스는 저장된 내용을 비트 단위로 비교하기 때문에 내가 변경 한 비트 만 동기화되는 것이 논리적으로 보였습니다. 그러나 이미지 파일이 저장되는 방식의 내부와 관련이 있다고 생각하기 때문에 이것은 사실이 아니었고 VM이 동기화 될 때까지 하루 종일 기다릴 것입니다.
참고 :
VM에 할당 된 드라이브 공간이 클수록 이미지가 커지므로 개발자에게 이미지를 배포 할 때이 점을 명심하십시오. 프로젝트 당 프로젝트 파일을 프런트로드하는 것은 너무 과도 할 수 있으므로 생성 된 이미지를 만든 후에 각 개발자에게 설정하도록 남겨 두겠습니다.
Ashley Schroder는 Fooman과 Colin의 의견뿐만 아니라 잘 읽은 다소 오래된 관련 기사를 가지고 있습니다.
희망적으로 이것은 나열된 문제 항목 # 6에 대한 통찰력을 얻는 데 도움이되기를 바랍니다.