가상 머신으로 제공되는 소프트웨어를 허용하지 않는 이유가 있습니까?


40

이것은 기술적 문제가 아니라 물류에 관한 문제입니다.

우리 회사는 일부 임베디드 소프트웨어 작업을 아웃소싱했습니다. 특히, 자체적으로 수행 할 적절한 사내 지식이 없기 때문에 (데스크톱 애플리케이션 개발자 만 있음) 임베디드 시스템을 개발하기 위해 계약자에게 비용을 지불했습니다.

따라서 계약 업체는 소프트웨어를 완성했으며 가상 머신으로 소프트웨어를 제공 할 수 있는지 물었습니다. VM은 소스 코드를 CodeWarrior 프로젝트로 사용하여 사전 구성된 CodeWarrior IDE를 포함하는 Windows 8 시스템입니다. 이를 통해이 프로젝트의 추가 개발을 위해 이미 구성된 VM 내에서 코드를 변경할 수 있습니다.

프로젝트를 코드로 변경하도록 자체 개발 머신을 구성하는 방법을 안내하는 것과 달리이 작업을 수행하는 데 단점이 있습니까? 내가 예상 할 수있는 유일한 문제는 VM이 ​​느리게 실행되고 코드를 변경할 때 프로젝트를 다시 빌드하는 데 시간이 오래 걸린다는 것입니다. 그러나 다른 한편으로, 나는 사전 구성된 임베디드 시스템 개발 환경을 얻는 아이디어를 좋아하므로 데스크탑 응용 프로그램 개발자 컴퓨터에 다른 IDE를 추가 할 필요가 없습니다.

나는 실제로 VM 결과물을 받아들이지 않는 좋은 이유를 생각할 수 없지만, 내가 놓친 것이있는 경우이 커뮤니티에서 VM을 실행하고 싶었습니다.


24
VM에서 Windows 소프트웨어의 라이센스가 필요합니다.
Robert Harvey

6
@RobertHarvey Windows 정식 버전에는 두 개의 가상 머신에 대한 라이센스 권한이 포함됩니다. 또한 Windows Datacenter에 대한 라이센스가있는 경우 해당 서버가 가상화 라이센스 웹 사이트 에서 자세한 정보를 확인할 수있는만큼 VM을 실행할 수 있습니다 .
Michael Brown

19
이것이 "워크 스테이션에서 작동"을 해결하는 한 가지 방법입니다. 문제.
MichaelHouse

2
코드가 버그가 의심 스럽지만 하나의 컴퓨터에서만 작동합니다. 개발자는 자신이하는 일을 알지 못하며 작동하게하는 설정을 다시 만들 수 없으므로 디스크 이미지를 만들어 VM에 넣습니다.
MGOwen

외부 사용자가 제공 한 VM에 대해 라이센스를 보유한 라이센스 (Windows VM을 배포 할 권한이 없음)가 있습니까?
Burhan Ali

답변:


66

내가 본 문제는 가상 머신을 설정하고 구성하는 데 대한 지식이 사내에 있지 않으며 구성이 중요하지 않은 경우 다른 버전의 소프트웨어를 구성해야 할 때 다른 회사에 의존한다는 것입니다. OS / 라이브러리 / 하드웨어 / 무엇이든 VM을 수락하면 더 빨리 시작하고 실행할 수 있지만 향후 유지 관리를 위해 자체 시스템을 구성하는 방법에 대해 연습해야합니다.


9
+1, 무서운 부분은 6 년 동안 겪을 수있는 "골든 이미지"문제입니다.
Wyatt Barnett

8
계약자가 설치 안내서 (테스트해야 함)를 제공 할 수 있다면 이것에 문제가 없을 것입니다.
Jamie

2
@Jamie : 그러나 설정 가이드를 테스트하면 더 이상 VM이 필요하지 않습니다.
mattnz

10
이 용어는 "콜드 스타트 ​​(cold start)"절차입니다. 콜드 머신에서 시작한 경우 실행중인 이미지를 얻으려면 어떻게해야합니까? 또한 구성을 변경하거나 문서화되지 않은 소프트웨어를 설치했거나 백도어를 포함했을 수도 있다는 사실에 귀찮게합니다. 그 기계에있는 모든 것을 알고 싶습니다.
ipaul

이 답변에도 동의합니다. 수행 된 작업에 대한 데모는 괜찮습니다. 그러나이 제품을 수락하려고하면 환경 설정을 설명하고 수행하는 문서 / 쉘 스크립트를 요청합니다.
Tsvetomir Dimitrov 10

36

큰 단점은 보이지 않지만 소스 코드가있는 VM을 수락하면 소프트웨어 및 개발 환경이 설치된 시스템의 선적을 수락하는 것과 동일한 편집증이 수반된다고 말하십시오. 내부 네트워크에 액세스 할 수있는 환경에서 VM을 시작하기 전에 VM에 잘못된 것이 설치되어 있지 않은지 확인하십시오.

VM을 설치하고 실행중인 경우 소스 코드 아카이브 만 제공 한 것처럼 소스 코드를 일반 코드 리포지토리로 접을 수 있습니다.


11
이 질문에 대한 답변에 내가 준 유일한 +1은 아니지만 코드를 사내 버전 제어로 가져 오는 것을 언급하는 유일한 답변입니다. 나는 것이다 희망 VM이뿐만 아니라 저장소를 포함하지만 그것에 내기 않을 것, 그것은 코드의 릴리스 버전이있을 수 있습니다.
Mike Sherrill 'Cat Recall'3

18

기계에 문서화되지 않았거나 재생산하기 어렵거나 표준 구성에서 수용 할 수없는 것이 구성되어있는 것이 걱정됩니다.

Ymmv, 그러나 표준 개발 시스템을 구축하고 상용 서버 / 클라이언트에 배포하기 위해 프로젝트를 시연 할 수있을 때까지의 개발은 실제로 고려하지 않습니다.


1
VM이 편리한 기능인지 확인하는 데 +1 그렇지 않으면 문서화되지 않은 패치 컴파일러 또는 링커 버전 또는 끔찍한 무언가에 의존하기 때문에 해당 VM에서만 빌드되는 것으로 끝날 수 있습니다.
ptyx

10

내 프로젝트 중 일부에서는 소프트웨어를 이러한 방식으로 제공하기 위해 열심히 싸워야했습니다. 훌륭한 형식입니다.

다음을 확인하십시오.

  1. 계약자로부터받은 각 릴리스의 소스 코드를 가져 와서 자신의 소스 제어 시스템에 병합하십시오.
  2. VM의 환경 설정에 대한 설명서를 받아 사내에서 재현 할 수 있습니다. 소스 컨트롤에도 문서를 추가하십시오

추가 혜택:

  1. VM 형식으로 릴리스를 보관하면 (.vhd 또는 다른 파일 저장) 원래 팀이 조각화되거나 없어 졌더라도 몇 년 동안 배포를 시작하고 실행하는 것이 훨씬 쉽습니다.
  2. 다른 버전을 나란히 실행하는 것이 훨씬 쉽습니다.
  3. 일부 VMWare 통합을 사용하면 (HyperV에서도 가능할 수 있음)이를 CI 빌드에 자동으로 통합 할 수 있습니다.
  4. 환경 설정이 거의 없거나 전혀 없기 때문에 개발자 시간이 (처음에) 절약됩니다.

나는 그것을 말해라.


흠. 좋은 지적입니다.
MGOwen

1
환경 설정 시간은 시간이 지남에 따라 성능이 저하되는 것에 비해 저렴합니다. 릴리스 빌드를 생성하는 사내에는 이와 같은 VM이 있지만 하루 종일 사용하는 경우 VM 방법이 너무 느리고 한 화면 만 사용합니다 (대부분의 경우). 그것은 좋은 깨끗한 참수 대 1000 컷으로 죽음에 더 가깝습니다.
boatcoder

@ Mark0978 # 4는 YMMV 상황이라고 생각합니다. 더 이상 원래 서버 설정에 액세스 할 수 없었기 때문에 문서에서 환경 설정을 리버스 엔지니어링하는 데 3 주가 걸렸습니다 (IIS 6+ 많은 타사 라이브러리 / http 처리기). . 내 요점은 실제 사례를 갖는 것이 유용하다는 것입니다. 내가 들었던 비판의 대부분은 대개 VM 호스트가 충분하지 않기 때문입니다. 하하- '깨끗한 참수.'
Zachary Yates

1
나는 실제로 그것을 개발 환경 페널티 (요청하지 않을 수도 있음)로 생각하고 있었고 개발자를 항상 느리게하는 것은 가치가 없습니다. 모든 프로덕션 서버는 호스팅 시설의 VM에서 실행되지만 그래픽이 아닌 서버입니다.
보트 코더

1
@ Mark0978 나는 그 사람이 쓰는 방식을 좋아한다. # 4로 내 요점을 명확하게 밝히지 않은 것 같습니다. 느린 VM 작업을 옹호하지 않습니다. 하루나 이틀의 일을해야하는데 환경을 설정하는 데 3 주가 걸리면 vm을 사용하십시오. 당신은 전체 상황을인지해야합니다.
Zachary Yates

6

그것은 실제로 원래 계약에서 해결해야 할 종류의 것입니다. 그들은 이미 그 이상으로 가고있을 수 있습니다. 추가 비용을 들이지 않고 구성 지침을 얻을 것으로 기대하지 않습니다.

나는 당신과 비슷한 상황에있었습니다. 우리의 개발 환경은 Windows / Cygwin이며 우리와 함께 인터페이스 코드를 작성하기 위해 일주일 동안 공급 업체를 방문했습니다. 그들은 주로 Linux를 사용하므로 우리는 그들이 일주일 동안 Linux 가상 머신을 설치했습니다. 그들이 여기있는 동안 그것은 꽤 잘 작동했다. 그리고 그들이 떠난 후에 우리는 Cygwin으로 포팅하는 데 거의 문제가 없었다.

당신이 자신의 능력을 과소 평가하는 것처럼 들립니다. IDE를 설정하는 것은 실제 예제가 없어도 어렵지 않습니다. Windows 및 CodeWarrior 라이센스 계약 위반에 대해 더 우려하고 있습니다. 라이센스가 적절하면 설치 문제에 대해 Freescale의 지원을받을 수 있습니다.


4

으로 FrustratedWithFormsDesigner 말했다 , 당신은 자신을 위해 기계를 설정하는 방법을 알아야합니다. 그러나 전체 VM이 아닌 컴퓨터를 구성하는 스크립트를 제공하도록 요청할 수 있다고 덧붙이고 싶습니다. 스크립트가 충분히 작성 되었다면, 소스 코드를 읽어서 기계를 설정하는 방법에 대한 정확한 최신 문서를 얻을 수있을뿐만 아니라 스크립트가 자동으로이를 수행하여 필요할 때마다 시간을 절약 할 수 있습니다. 새로운 기계.

새 Windows 컴퓨터 설정을 표준화 / 자동화하는 데 도움이되는 실험 도구는 Chocolatey 입니다.

Chocolatey NuGet은 apt-get과 비슷하지만 Windows를 염두에두고 제작 된 Machine Package Manager입니다.

자신의 Chocolatey 패키지를 매우 쉽게 구축 한 다음 실질적으로 모든 것을 설치 및 구성 할 PowerShell 스크립트를 만들 수 있습니다.


내가 이해하는 것처럼 이 작업을 위해 특별히 만들어진 Vagrant 라는 도구 가 있습니다.
M. Dudley

3

느리게 실행되는 환경은 문제가되지 않으며 메모리와 CPU 만 던져야합니다. 대부분의 SW 개발과 같은 데스크탑 유형 작업을위한 최신 VM의 오버 헤드는 매우 작으며 하드웨어를 변경할 때 설정을하지 않아도되므로 여러 번 저장됩니다.


3

개발 계약서가 계약자의 인도 물과 의무를 규정한다고 생각했을 것입니다.

최소한 구성이 작동하는 방식과 프로젝트를 다시 작성하고 직접 빌드하고 배포 할 수있는 시점에 필요한 사항에 대한 설명과 문서를 요청합니다.

갈 준비가 된 것의 관점에서 VM은 완벽하게 수용 가능하다고 생각합니다.

그래도 문서화를 추진하고 있습니다. 그것이 작동하는 방법에 대한 높은 수준의 이해가 없다면, 특히 응용 프로그램을 직접 지원 해야하는 경우 나중에 배럴을 넘을 수 있기 때문에 주저하지 않을 것입니다.


불행히도 계약을 맺을 때이 회사에 없었습니다. 경영진이 아니기 때문에 액세스 할 수 없으므로 규정이 무엇인지 잘 모르겠습니다.
CFL_Jeff 2014 년

2

내부적으로 개발 된 임베디드 시스템의 경우에도 빌드 환경을 설정하는 방법을 설명하는 문서가 있어야합니다. 또한 도구의 모든 바이너리 / 설치 파일 및 빌드 환경을 설정하는 데 필요한 라이브러리를 아카이브해야합니다.


1

VM을 업데이트하기가 어렵 기 때문에 제공 가능한 코드로 VM을 허용하지 않습니다. 개발 작업을 수행하려면 해당 VM을 골든 이미지로 가져와야합니다. 따라서 개조하기가 더 어렵습니다. 개발자는 VM을 다시 포맷하거나 새 머신을 가져와야하며 VM을 설치하고 VM을 가져와야합니다.

편집 할 때 VM의 새로운 "골든 복사본"을 커밋해야합니다. 왜 소스 제어에서 큰 이진 파일을 관리하고 싶습니까? diff는 불가능하며, 내 경험상 바이너리 제어가 제대로 끝나지 않은 황금 사본을 소스 제어하려고 시도했습니다. 골든 카피를 편집하는 사람을 엄격히 통제 할 수 없다면 문서화되지 않은 사람은 아무도 모르게됩니다.

개발자가 해당 형식으로 소프트웨어를 제공하려는 경우 다른 개발자를 찾을 수 있습니다. 이것은 그들이 의존성을 스크립팅하거나 최소한 문서화 할만 큼 전문적이지 않다는 것을 말해줍니다.

나는 그들 중 하나를 가질 것입니다 :

  1. 코드를 사용하여 소스 제어로 체크인되는 텍스트 파일을 작성하십시오. 소스 컨트롤 리포지토리 (예 : CodeWarrior, 명령 줄 도구 또는 기타 외부 앱)의 일부가 아닌 프로젝트를 시작하고 실행하는 데 필요한 모든 종속성이 나열됩니다.

  2. 종속성을 설치하는 스크립트 Windows를 사용하고 있으므로 개발 환경 설정을 자동화하기 위해 Chocolatey 스크립트를 작성하는 것이 어렵지 않아야합니다. 아직 초콜릿 패키지가 아닌 모든 종속성을 만들 수 있습니다. 예를 들어 Chocolatey를 통해 Visual Studio 및 SQL Server와 같은 무거운 상용 도구를 설치할 수 있습니다. 이러한 패키지는 모든 기능을 갖춘 평가판을 설치하며 라이센스 키를 입력하여 잠금을 해제 할 수 있습니다. 따라서 CodeWarrior 및 개발자 환경에 대한 다른 모든 종속성을 사용하여 동일한 작업을 수행 할 수 있습니다.

어쩌면 개발자는 여전히 그와 함께 일하기를 원하지만이 자동화에 능숙하지 않을 수 있습니다. 이 경우에도 괜찮습니다. 자동화 부분을 직접 수행하고 종속성을 확인하고 스크립트를 작동시키기 위해 그와 함께 작업하거나 자동화에 능숙한 다른 개발자를 얻습니다. . 프로젝트 시작시 수행해야합니다. Win8 VM의 깔끔한 베어 본 복사본은 초콜릿 스크립트를 테스트하는 데 사용할 수 있기 때문에 여전히 유용합니다.


0

나는 이것에 문제가 있다고 생각하지 않으며, VM으로 설치되는 콘텐츠 관리 시스템을 보았으며 계약자가 귀하에게 응용 프로그램을 유지 관리하고 확장 할 수있는 능력을 부여한 것을 보았습니다.

그러나 다른 포스터에서 언급했듯이 내가해야 할 두 가지가 있습니다. 먼저 VM을 설치할 때 네트워크와 다른 시스템에 VM을 설치하십시오. 인터넷에서 알 수없는 EXE를 다운로드하여 컴퓨터에 설치하지 않을 것입니다.

둘째, 가능하면 사내 버전을 설정하기 위해이 격리 된 사본을 참조로 유지하십시오. 나는 당신이 겪고있는 비즈니스 압력을 모르기 때문에 가능하다면 말합니다. 궁극적으로이 응용 프로그램을 담당하는 것은 회사의 IT 부서 / 프로그래머입니다. 따라서 더 많이 알수록 좋습니다.

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