개발 머신이 VM 내에 있어야합니까? [닫은]


41

Rob Conery (슬러그 참고) 의이 포스트는 개발 환경이 가상 머신 내에서 실행되어야한다고 말합니다. 나는 그가 말한 것을보고 동의하는 경향이 있지만 여전히 조금 불안합니다. 이제 가상화가 너무 성숙하여 VM 내에서 실행되는 프로덕션 시스템조차도 거의 문제가되지 않지만 여기서 말하는 것이 문제입니다.

개발 머신 가상화에 대해 무엇을 취하고 있습니까? 당신은 이미 그렇게 했습니까? 그랬다면 길을 따라 함정이나 장애물이 있습니까?


1
뭐가 귀찮아? 여전히 모든 목적을위한 컴퓨터입니다.


개발 머신이란 무엇입니까? 개발자의 작품 또는 공동 개발 환경?
user606723

답변:


29

회사 환경에서 VM을 개발 한 경험은 여러 코어를 가상화하기가 어렵 기 때문에 많은 엔터프라이즈 개발 시스템에 필요한 성능을 얻는 것이 어렵다는 것입니다.

코드 컴파일 테스트 내부 루프를 최대한 빨리 얻으려면 가능한 최고의 머신이 필요합니다. 컴파일 및 테스트 실행은 코어가 많은 머신에서 분명히 더 빠르게 실행됩니다. 이러한 작업은 동시 방식으로 매우 쉽게 실행될 수 있기 때문입니다 * .

주류 개발 OS가 휘발성 인 가용 코어 수를 처리 할 수있을 때까지 가상화 소프트웨어가 "N 개까지의 코어"계약을 지능적으로 제공 할 수있을 때까지 가상화 된 개발 머신은 물리적 디바이스와 동일한 종류의 생산성을 제공하지 않습니다.

편집 : 이것은 회사가 결정한 VM을 사용하여 개발하는 것에 대한 개인적인 느낌을 요약합니다. 이는 종종 서버에서 실행되는 경향이있는 하드웨어 비용을 줄이기 위해 제공됩니다. 프로젝트에서 특별히 여러 OS에 대한 코드를 개발하도록 요구하지 않는 한, 우수한 소스 제어 규칙을 적용한다면 로컬 VM을 실행하는 것은 대부분 불필요한 것 같습니다.

* : 컴파일 단계와 테스트 단계 내의 하위 작업을 동시에 컴파일하고 테스트하지 않고 동시에 실행할 수 있음을 의미합니다. :)


+1-이것은 VM에서 개발 한 경험이었습니다. 성능 저하는 잠재적 인 가치가 없습니다. 개발 머신은 충분히 빠를 수 없습니다.
Scott Whitlock

멀티 플랫폼 테스트를 제외하고는 한 번도 해 본 적이 없지만 원칙적으로 VM을 미친 속도로 지정할 수 없었습니까? UI가 느려질 수 있지만 컴파일 단계에서 많은 서버 룸 아이언을 던질 수 있습니다.
Dan Ray

1
원칙적으로! 메모리와 프로세서 20 개로 VM을 정의하는 것은 어려운 일이 아닙니다. 어려운 부분은 동일한 서버에 12 개의 고사양 VM이있는 경우입니다. 8 개의 CPU 서버에 12 개의 단일 프로세서 VM이있는 경우 하나의 프로세서를 사용할 수있을 때 각 VM의 CPU 시간이 길어집니다. 각각 4 개의 코어가있는 3 개의 VM이있는 경우 각 VM이 CPU 시간을 갖기 전에 4 개의 CPU가 해제 될 때까지 기다려야합니다. 말할 것도없이 모든 코어를 컨텍스트 전환해야하는 것은 말할 것도없고 ... 어려워진다. 나는 그것이 대규모로 만족스럽게 수행되고 있다는 것을 듣지 못했습니다-이것은 아무것도 의미하지 않습니다 :)

1
+1 이것은 나의 경험이기도합니다. 새로운 개발 환경에 대한 체크 포인트와 제로 설정의 이점으로 인해 다소 상쇄되지만 성능은 최대가 아닙니다.
Steven Evers

1
@MarcoDinacci 페어 포인트. 적절한 소스 제어를 사용하면 여러 운영 체제를 위해 개발하지 않는 한 VM 내부에있을 필요 가 없습니다 .

12

VM에서 개인 개발을 모두합니다. 다른 환경에 대해 여러 개의 VM을 설정했으며 정상적으로 작동합니다.

virtualbox가 설치된 win 7 ultimate 64bit를 실행하는 dell studio 15 노트북 (quad I7 2.8ghz, 8gb ram, ati graphics)이 있습니다. 내 모든 VM이 랩톱에 벨크로 처리 된 외부 500GB USB 드라이브를 실행하고 있습니다.

VM 0-Win 7 64 비트를 기본 템플릿으로 새로 설치

VM 1-Visual Studio 2008 도구 세트를 사용하여 Win 7 64 비트 (2 CPU, 4GB RAM, 120GB HD)

VM 2-Visual Studio 2010 도구 세트를 사용하여 Win 7 64 비트 (2 CPU, 4GB RAM, 120GB HD)

VM 3-Eclipse Java 툴셋으로 Win 7 64 비트 (2 CPU, 2GB RAM, 120GB HD)

매우 높은 IO가 필요한 작업을 수행하지 않는 한 성능이 우수하다고 느꼈으 며 누군가가 노트북을 건네고 개발을 시작했다고 말하면 VM 내부에 있다는 것을 알 수 없습니다.


1
나는 비슷한 것을 실행하지만 큰 문제는 일단 프로젝트가 시작될 때까지 많은 프로젝트가있는 Visual Studio 솔루션을 사용하면 프로젝트가 시작될 때까지 기다리거나 디스크 I / O 병목 현상을 해결하는 것입니다. 그것은 이것이 문제가되지 않을 때마다 여전히 VM을 사용한다고 말하면서 휴대용 환경을 갖는 것이 좋습니다.
Ally

11

가상화 시스템을 통해 특정 유형의 개발이 훨씬 더 어렵다는 것을 덧붙이고 싶습니다.

여러 USB 주변 장치 (예 : 웹캠, 라벨 프린터, 마그네틱 스트라이프 리더 등)와 통합되는 소프트웨어 패키지를 제공하는 회사에서 일하고 있습니다. USB 포트를 가상화 된 서버에 매핑하려고하더라도 타사 공급 업체 장치 드라이버에서 기괴하고 설명 할 수없는 문제를 발견했습니다.

내가 말했듯이, 나는이 상황이 가상화 개발 기계에서 작동하지 않을 것을 보증한다고 생각하지는 않지만, 우리가 아직 알지 못했던 것이므로 실험실의 다른 환경에 대한 실제 워크 스테이션을 유지합니다.


1
TFS 나 다른 장치에 연결하기 위해 원격 액세스 보안 카드를 사용해야하는 경우에도 문제가됩니다.
Steven Evers

8

우리 회사에서는 이제 개발 및 테스트에 VM을 사용하고 있습니다. VM을 사용하는 데는 몇 가지 단점이 있지만 그 이점은 그 이점보다 훨씬 큽니다.

VM 사용을 시작하기 전에 새로운 개발자를위한 개발 시스템을 설정하는 데 문제가있었습니다. 팀의 새 개발자를위한 첫 번째 작업은 일반적으로 자체 개발 시스템을 설정하는 것이 었습니다. 우리는 소규모 회사이며 새로운 팀원이 기계를 설치하도록 도와 줄 인력이 항상있는 것은 아닙니다. 이로 인해 다른 문제가 발생했습니다. 때때로 버그는 컴퓨터에서만 재현 할 수 있거나 전혀 재현 할 수 없었고 응용 프로그램이 제대로 빌드되지 않았습니다. 또한 일부 수석 개발자가 여러 프로젝트에서 작업하는 데 문제가있었습니다. 항상 호환되지 않는 작업 환경.

VM으로 전환했을 때 모든 것이 바뀌 었습니다. 이제 한 사람 만이 프로젝트와 관련된 모든 것을 사용하여 VM에서 환경을 설정해야합니다. 완료되면 모든 팀원에게 VM 사본이 제공됩니다. 이렇게하면 모든 새 팀 구성원을위한 환경 설정 시간이 줄어 듭니다 (VM을 복사하는 데 1 시간 이상 걸리지 않아야 함). 또한 여러 작업 환경에서 동시에 작업 할 수 있습니다.

VM 사용의 단점 : 속도. VM에서 성능이 저하되었습니다. 느린 워크 스테이션에서는 개발이 거의 불가능할 수 있습니다. 좋은 워크 스테이션 (쿼드 코어, 8 + GB RAM, SSD)이 있다면 아마 눈치 채지 못할 것입니다.


1
툴체인을 최적화하기 위해 몇 가지 작업을 고려한 적이 있습니까? 도구 설정이 너무 복잡하여 쉽게 설치할 수없는 경우 도구를 다시 생각해야합니다.
Michael Kohne

그것은 단지가에 대한 자세한입니다 툴체인에 대해 아니에요 시간이 서로 다른 환경에 기계 및 문제 해결 문제를 설정합니다. 다른 사람이 이미 그렇게했을 때 누군가 설치 / 설정하는 데 2 ​​시간을 소비해야하는 이유는 무엇입니까?
Christian P

개발자 머신을 생성하고 추가 인스턴스를 생성하기 위해 이미지를 생성 할 수없는 이유는 무엇입니까? 이것은 모두 동일한 하드웨어를 사용한다고 가정합니다.
JeffO

@JeffO 하드웨어에 의존하지 않기 때문에 VM과의 유연성이 향상됩니다. 우리가 모두 같은 하드웨어에서 작업한다면 괜찮을 것입니다. 그러나 우리는 랩탑 / 데스크탑을 사용하고 있습니다.
Christian P

1
궁금한 점이 있습니다. 팀에 사람들이 너무 자주 떠나거나 와서 새로운 기계를 설정하는 데 관심이 있습니까? 그렇다면 팀을 안정화하면 생산성이 훨씬 높아질 것입니다. ( 인간을 설정하는 것은 실제로 기계와 달리 병목 현상입니다.)
kizzx2

7

다른 사람들이 언급했듯이 몇 가지 사항에 달려 있습니다.

  • 당신의 환경은 어떻게 생겼습니까?
  • 개발을 수행하기에 충분한 액세스 권한이 있습니까?
  • 당신의 HW가 코담배입니까?

환경

여러 버전의 프로젝트에서 작업하는 경우 VM을 사용하면 도움이됩니다. 여러 프로젝트; 또는 일반적으로 실행하는 것과 다른 OS (호스트 OS)를 타겟팅 할 수 있습니다. 많은 SharePoint 작업을 수행하고 다양한 버전의 릴리스에 대해 다른 컴퓨터를 실행할 수 있으면 다른 컴퓨터를 시작하고 GAC / 데이터베이스의 상태를 잘 파악할 수 있으므로 유용합니다. 또한 * nix 애플리케이션 환경을 대상으로해야하지만 Windows 시스템이있는 경우에도 VM에서 개발을 수행 할 수 있습니다 (일반적으로 .NET 개발 작업을 수행하더라도 가정에서 Ruby를 배우는 방법입니다). 나는 일반적으로 응용 프로그램이 궁극적으로 실행될 동일한 버전의 IIS에서 ASP.NET 개발 테스트 / 개발을 할 때 옹호합니다 (이 동일한 합리성은 다른 서버 대상 환경에 적용됩니다). OS 버전에 따라 작지만 중요한 차이점이있을 수 있습니다. 이것이 특정 IIS / OS 버전으로 코딩해야한다는 것을 의미하지는 않지만 실제로 솔직히 말해서 로컬 컴퓨터뿐만 아니라 배포하려는 위치에서 작동해야합니다.

VM (사용 된 소프트웨어에 따라 다름)을 사용하면 현재 시스템 상태의 스냅 샷을 생성하거나 복제 할 수 있습니다. 이것은 무언가를 프로토 타이핑 할 때 귀중 할 수 있으며 GAC / 레지스트리 등에서 무슨 일이 일어나고 있는지 걱정할 필요가 없습니다. 또한 클라이언트 데모를 미리 설정하는 데 매우 중요합니다. 데모 환경이 VM에 있었기 때문에 다른 컴퓨터에서 작업하면서 완료 한 것을 클라이언트에게 보여줄 때까지 계속 작업 할 수있었습니다 .

충분한 권리

이것은 일반적으로 접근 권한에 대한 다소 엄격한 정책을 가진 회사에서 일하는 사람들에게 적용됩니다. 컴퓨터에서 관리자를 자유롭게 만들 수 없다면 VM에서 작업하기에 좋은시기입니다. 일반적으로 전원은 호스트 OS를 잠그는 것에 대해서만 걱정되며 게스트는 넓게 열 수 있습니다 (권한 부여). 로밍 프로필, 부서진 관리자 권한 및 VS 2010 실행과 관련하여 이상한 문제가 발생했습니다. VM을 사용하면 이러한 문제를 피할 수있었습니다.

당신의 HW가 코담배입니까?

이것은 당신의 VM 이미지가 그들로 서버와 원격에있는 하나에 종기 또는 당신은 로컬로 실행합니다. 서버에서 실행중인 경우 가장 큰 관심사는 아마도 같은 하드웨어에서 너무 많은 VM이 실행되고있을 것입니다. 로컬에서는 기본적으로 충분한 RAM을 원하고 하드 드라이브에 대한 R / W 버퍼 과부하 빈도를 최소화합니다. 기본 LOB / SharePoint / ASP.NET 개발의 경우 최소 8GB의 RAM과 이중 하드 드라이브 구성이 실제로는 잘 작동한다는 것을 알았습니다 (i5를 실행하지만 Core 2 와도 함께 작업했습니다). 두 번째 하드 드라이브는 성능의 가장 큰 차이를 만듭니다.

참고 :이를 백업하는 통계는 없지만 VirtualWare는 VMWare 및 Virtual Box와 비교하여 성능이 저하되는 경향이 있음을 알았습니다. Hyper-V와 일하지 않아서 말할 수 없습니다. Virtual PC (VM을 사용하기위한 초기 단계)로 개발자가 가상화 소프트웨어를 사용하는 데 어려움을 겪는 경우 놀라지 않을 것입니다.


5

평소와 같이 : 그것은 달려 있습니다. 예를 들어, 나는 실시간 또는 컴퓨터 게임 관련 개발을 위해 그것을 추천하지 않을 것입니다.

개인적 경험 : 2009 년 말 iMac을 가지고 있으며 Visual Studio 2010은 기본적으로 Parallels Desktop에서 사용할 수 없음을 발견했습니다. 코드 편집기에서 키를 누르는 데 몇 초가 걸리는 시점입니다. SQL Server Management Studio의 Windows는 초점을 임의로 맞추고 초점을 임의로 전환합니다. 방금 부트 캠프를갔습니다.

물론 새로운 프로젝트에는 Windows 기반 구성 도구가 포함 된 iOS 응용 프로그램이 포함되므로 가상화를 사용하지 않으면 너무 고통 스럽지만 작년에 데스크톱 가상화 기술이 충분히 발전하지 못한 경우, 아마 여기에 다른 데스크탑을 설치하겠습니다.

서버 응용 프로그램을 테스트 할 때는 다른 상황이지만이를 가상화하여 기쁘지만 개발 응용 프로그램에는 응답 성이 필요합니다.


1

개발을 위해 VM을 사용해 왔으며 대체로 내 컴퓨터에서 개발하는 것과 크게 다르지 않습니다. 소스 컨트롤을 올바르게 사용하고 있다면 큰 차이가 없습니다.

가장 큰 차이점은 어떤 이유로 든 오프라인 상태 인 경우 사용할 수있는 개발 기계가 없기 때문에 여행하거나 집에서 많이 일하는 경우 그리 좋지 않습니다. 또한 원격 데스크톱에서 여러 대의 모니터를 실행하는 방법을 찾지 못했지만 원칙에 대한 문제 라기보다는 이것이 실패라고 확신합니다. 나는 주로 개발을 위해 메인 모니터를 사용했고 전자 메일, 브라우저 등이 실행되는 데스크탑 컴퓨터의 두 번째 모니터를 유지했습니다.

코드가 다른 플랫폼에서 작동하는지 확인해야하는 방식으로 작업하는 경우 (특히 설치 프로그램 개발과 같은 작업) 다른 OS 버전에 대해 VM을 실행할 수 있으면 매우 편리합니다.


2
자신의 머신에서 VM을 실행하지 않습니까?

1
때로는 회사 환경에서 사람들에게 컴퓨터 이미지가 로컬로 표시되지 않고 데이터 센터에서 실행되는 VM이 ​​할당되는 경우가 있습니다.

완료하면 VMWare 서버에서 실행했습니다.
glenatron

1

나는 이전 회사에서 사용했습니다. 여러 회사의 타사 컨트롤이 같은 회사의 다른 버전과 공존하지 않았습니다. 또한 다른 운영 체제를 테스트하고 디버깅하는 데 두 가지를 사용했습니다 (XP vs Vista vs 7). 하나의 가상 시스템에는 이전 제품에 대한 VB6 및 VS2003이있었습니다. 그렇습니다. 일반적인 개발자 컴퓨터에서는 느리고 번거로울 수 있지만, "기부 한"몇 개의 여분의 하드 드라이브가 있고 가상 드라이브를 자체 드라이브 컨트롤러의 자체 하드 드라이브에 배치했습니다. 나는 가상을 계속 사용하는 마지막 사람이며 일부 버그의 경우 운영 체제 및 구성 요소 관련 문제로 인해 작업 할 수 있습니다.

베타 소프트웨어를 설치하는 사람들 중 일부는 화상을 입었고 MS의 베타 버전을 제거 할 수 없었기 때문에 하드 드라이브를 다시 포맷 할 때까지 가상 디스크를 사용해야했습니다.

가상에서 개발할 때는 최소 8GB의 RAM으로 무언가를 얻는 것이 좋습니다. 16 개 이상이 더 좋을 것입니다. 비주얼 스튜디오가 장착 된 가상 RAM이 약 1.5GB의 호스트 RAM RAM을 "빙판"이상의 속도로 실행한다는 것을 알 수 있습니다. 또한 컴퓨터를 구입할 때 많은 하드 드라이브를 구입하십시오. 예비 하드웨어 파일에서 선택하는 드라이브의 경우 실행할 VHD 크기의 2 배 이상인 드라이브를 찾으십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.