가상 머신을 사용한 개발에 대한 생각 성이 뛰어나고 저렴하고 관리하기 쉬우

저는 스타트 업의 개발 책임자로 일할 것이며 개발에 VM을 사용할 것을 제안했습니다. 테스트 / 개발을 위해 VM이있는 데스크톱이있는 각 개발자에 대해 이야기하는 것이 아닙니다. 모든 VM이 관리되는 서버 랙이 있고 개발자가 로컬 또는 집에서 원격으로 마이크로 PC (ChromeOS 사람?) 컴퓨터.

나에게 이점은 장기적으로 확장 성이 뛰어나고 저렴하고 관리하기 쉬우 며 하드웨어를 최대한 활용할 수 있다는 것입니다. 단점에 관해서는, 나는 우리가 상기 설정을 설정 / 유지하기 위해 누군가가 필요하다는 것 이외의 특정 쇼탑을 생각할 수 없습니다.

나는 당신의 일부가 당신의 직장에서 비슷한 설정을하고 당신의 의견에 무게를 둘 수 있기를 바랐습니다. 감사.



답변

개발 예산의 일부로 절약하고자하는 것은 무엇입니까? 엡실론이 걱정되는 것 같습니다. 개발자를위한 기계 비용은 개발자를 직원으로 유지하는 데 드는 총 비용의 5 % 미만입니다. 따라서 중요한 질문은 “개발자 시간을 절약 할 것인가?”입니다. 개발 소프트웨어를 설치하고 업그레이드하는 데 시간을 소비하지 않아도 될 수 있습니다. 또는 네트워크가 다운되거나 서버가 다운되거나 네트워크 전체의 응답 성이 가장 적은 경우 시간이 소요될 수 있습니다. 최신 개발은 IDE 또는 키가 매우 지능적인 편집기와의 키 스트로크 별 상호 작용에 달려 있습니다. 이러한 상호 작용을 수십 밀리 초까지 지연 시키면 개발자의 생산성이 떨어집니다. 개발자가이 새로운 작업 방식을 배우는 비용도 있습니다.

이들은 VM에 대한 이의 제기가 아니라 원격 개발에 대한 이의 제기입니다.


답변

나는 당신이 페니와 어리석은 짓이라고 생각합니다.

우선, 기계 비용은 개발자 비용과 비교하여 사소 합니다. 기계 비용을 최소화하지 말고 생산성을 극대화해야합니다.

둘째, 대기 시간 (대역폭 아님)은 많은 프로그래밍 작업, 특히 텍스트 편집의 핵심입니다. 개발자를 위해 컴퓨터에 1 달러 / 파운드 / 유로를 절약 할 때마다 최소한 10 개의 네트워크 업그레이드를 사용하여 생산성을 똑같이 유지하고 심지어는 공급을 통해 절약하면 생산성이 향상 될 것입니다 당신은 어딘가에 쓰레기통에서 발견 된 펜티엄 III을 가지고 있습니다.

또한 개발자가 대상 최종 사용자에게 기대되는 환경과 적어도 합리적으로 가까운 환경을 사용하는 데 상당한 이점이 있다고 생각합니다. 스펙과 같은 공식적인 성능 목표에 관계없이, 대부분의 프로그래머는 코드를 테스트 할 때 코드가 어떻게 “느껴지는”지를 기반으로합니다. 최종 사용자와 완전히 다른 환경을 사용하는 경우 사소한 문제에 시간을 낭비하면서 주요 문제를 완전히 간과 할 수 있습니다.

지원 등의 관점에서 균질 한 환경이 매력적이기 때문에 일반적으로 가능한 한 많은 개발자 머신을 권장해야합니다. 어쨌든 개발자는 많은 지원을 거의 필요로하지 않으며 최소한의 투자 비용을 상환하는 것보다 다른 그래픽 칩, CPU, 네트워크 어댑터 등으로 실패 할 코드가있을 때 즉시 알 필요가 없습니다.

결론 : 가상화 된 서버 환경에서 사용 하도록 의도 된 코드를 작성하는 경우 개발자에게 제공해야합니다. 어쨌든 테스트를 위해 노력하고 있다면 개발에도 의미가 있습니다 (그러나 반드시 그런 것은 아닙니다). 어쨌든 심한 오버 speced 서버 및 네트워크를 필요로 (또는 적어도이) 경우 마찬가지로, 그것은 수도 당신이 이미 가지고있는 사용하여 해당 활용하는 것이합니다.

그러나 가장 일반적인 상황에서는 이것이 해결하는 것보다 더 많은 문제가 발생할 가능성이 높습니다.


답변

그것은 필자의 아이디어 중 하나였습니다. 필요한 소프트웨어를 모두 갖춘 고성능 서버와 원격 데스크톱을 통해 서버에 연결하는 데만 사용되는 저 성능 데스크탑 PC가 많이 있습니다.

이점은 다음과 같습니다.

  • 확실한 백업. 일부 개발자는 데스크톱 컴퓨터를 정기적으로 백업하고 싶지 않을 수 있으므로 중앙 솔루션이 더 안정적입니다.
  • 모든 개발자가 어디서나 작업 할 수있는 가능성. 이것은 회사의 모든 PC에서 일하는 것을 의미합니다. 아침에 개발자가 조용한 작업 조건을 원한다고 가정 해 봅시다. 그는 자신의 방으로 가서 그곳에서 일합니다. 그런 다음 그는 페어 프로그래밍을하거나보다 사회적인 환경에서 일하기를 원합니다. 그는 데스크탑 PC를 종료하고 10 대의 컴퓨터가있는 다른 방으로 가서 연결합니다. 아니요 “모든 앱을 다시로드해야합니다”.

글쎄, 그것에 몇 가지 심각한 문제가있어서, 나는 내년에 이와 같은 것을 결코 사용하지 않을 것이라고 생각합니다.

  • 원격 솔루션의 특이성. 한 번에 여러 대의 컴퓨터 화면을 사용하여 멀리 떨어져 작업하는 것은 어떻습니까? 쉬운가요? 명백한가요? 먼 거리에서 작업 할 때 매일 사용하는 바로 가기를 사용할 수 있습니까? 확실하지 않아요. 현재 실행중인 프로그램 목록을 보려면 Ctrl + Shift + Esc를 누르면 어떻게됩니까? 예, 작동하지 않습니다. 이제 다른 방식으로 수행하는 것을 기억해야합니다.

  • 성능이 저하되었습니다. 성능 저하가 전혀 없을지 확실하지 않습니다. 그리고 느린 컴퓨터를 사용하는 프로그래머는 불행한 프로그래머라는 것을 기억하십시오. 그리고 프로그래머가 까다로운 조건에 만족하지 못하게 만드는 회사는 고품질 소프트웨어를 생산하지 않습니다.

  • 재해의 더 큰 영향. 중복 서버에서 솔루션을 호스팅 하시겠습니까? 회사에 중복 네트워크가 있습니까? 라우터가 다운되고 중복되지 않는다고 가정 해 봅시다. 이제 모든 개발자가 작업 할 수 없습니다. 조금도. 소프트웨어가 로컬에 설치되어 있지 않기 때문입니다. 소스 코드조차 없기 때문에 서버에 있습니다. 따라서 모든 사람이 멈추고 라우터 교체를 기다리기 위해 시간당 모든 사람에게 돈을 지불하고 있습니다.

  • 하드웨어 비용. 하나의 서버 인 경우 비용은 얼마입니까? 예를 들어, 20 명의 개발자라면 서버에 64GB의 RAM이 충분할까요? 확실하지 않습니다. CPU가 2 개인 쿼드 코어 솔루션으로 충분합니까? 다시 한 번, 나는 의심이있다. 그렇지 않으면 어떻게 생각하십니까? 어떤 종류의 구름? 아니면 여러 서버에서 작동하는 확장 가능한 솔루션이 있습니까? 컴퓨터 당 Windows Server (Windows를 사용하는 경우)의 비용을 지불 할 준비가 되셨습니까?

  • 전기 비용. 완전히 원격으로 작업하는 경우 로컬에서 작업하는 것처럼 거의 같은 양의 전원 서버 쪽을 사용하고 로컬 시스템과 네트워크에서 낭비하는 전력량을 소비한다는 의미입니다.

  • 라이센스. 이점이나 이점으로 사용해야하는지 확실하지 않지만이 경우 소프트웨어 라이센스 비용이 훨씬 더 높아질 것 같습니다.

그리고 관리, 지원, 배포, 유지 관리 비용을 모두 생각해보십시오. 이와 같은 사용자 지정 솔루션을 사용하면 문제가 발생할 때마다 모든 개발자가 NOP를 보지 않고 작업을 계속할 수 있기를 기다리는 것을 고려하지 않고 쉽게 커질 수 있습니다.


답변

온 디맨드 Amazon EC2 인스턴스를 개발자 머신으로 사용합니다. 이것은 비용과 관련이 없습니다. 우리는 여러 프로젝트를 수행하는 “개발자 풀 (pool)”을 보유하고 있으며 프로젝트 간을 신속하게 이동할 수있는 능력이 필요합니다.

일반적으로 VM은 초기 설정 시간을 절약합니다. 그러나 장기적으로는 생산성 손실로 인해 시간이 낭비됩니다. 개발자 비용이 기계 비용보다 훨씬 크기 때문에 비용은 축이 아닙니다.

생산성 비용에는 VM 이미지를 시작하는 데 걸리는 시간 (몇 분), 응답 속도 저하 및 리소스 / 메모리 제약 조건이 포함됩니다. 이것들은 처음에는 많지 않지만 시간이 지남에 따라 성가 시게됩니다.

프로젝트 중 하나에서 코드를 리팩터링하여 초기 설정을 단순화하여 “코드를 다운로드하고 maven을 실행”했습니다. 이 변경으로 인해 새로운 개발자가 프로젝트 작업을 시작하는 것이 간단 해졌으며 이제는 아무도 Amazon VM 이미지를 사용하지 않습니다. 우리는 다른 프로젝트에서도 이것을 모방하려고하지만 시간이 걸릴 것입니다. 그때까지 우리는 ec2 이미지를 가지고 있습니다.


답변

여기서 매우 조심하십시오. 저는 최근 IT 부서의 모든 사람이 본질적으로 같은 이유로 VM을 가지고있는 고객에게 배치되었습니다. 책상에 저가형 PC를 설치 한 다음 VM에 원격으로 연결하고 정상적인 작업을 수행 할 수있게했습니다.

그 경험은 예쁘지 않았습니다. 적어도 일주일에 한 번 우리는 다양한 이유로 매우 느리게 달렸습니다. 일반적으로 팀의 누군가가 프로세서 집약적 인 SSIS 패키지를 언제 실행하고 있는지 알 수 있습니다. 그들은 결국 우리 중 일부를 다른 서버로 옮겨서 일부 서버를 도왔지만 성능은 결코 좋지 않았습니다.

서버 전원, 처리 요구 사항, 서비스 할 시스템 수 등에 대한 실사를 수행하면 돈을 절약 할 수 있지만 제대로 구현하지 않으면 LOTS가 발생할 수 있습니다. 두통.

참고 : 이것은 VM 아키텍처의 불꽃이 아닙니다-그것을보고있는 사람들에게 경고 일뿐입니다. 구현하기 전에 오리가 일렬로 있는지 확인하십시오.


답변

가상 머신 개발은 제대로 수행 될 수 있지만 제대로 수행 된 경우에만 가능합니다.

  • VM을 사용하면 개발자 당 한 대가 아닌 팀 전체에 단일 컴퓨터를 사용할 수 있다고해서 좋은 생각이 아닙니다
  • 재부팅시 응답 시간이 24 시간 인 지원 티켓을 열지 않아도됩니다.
  • 개발 VM은 개발자로부터 5000 마일 떨어진 데이터 센터에 있지 않아야합니다.
  • VM이 개발자에 의해 관리되어 지원되지 않을 수 있지만 이것이 소스 제어와 같은 네트워크 서비스에 액세스 할 수 없다는 의미는 아닙니다.
  • 따옴표를 움라우트로 입력하는 일부 사용자 지정 “높은 보안”애플릿이 아니라 원격 데스크톱 연결이 표준이어야합니다.
  • 새로운 VM을 얻거나 기존 VM을 재 구축하는 데 몇 주가 아닌 몇 분이 소요됩니다.

나는이 모든 문제를 보았고, 특히 그들과 함께 일하는 것을 좋아하지 않는다. 그러나 집에서도 선택적으로 사용하는 VM 설정이 있습니다. 이는 로컬 설치보다 빠르게 실행되며 환경이 불안정 할 때 다른 프로젝트를위한 별도의 환경과 빠른 재 구축과 같은 것들을 허용합니다.


답변

VM으로 작업하지만 기본 프로젝트에는 권장하지 않습니다.

VM을 개발에 사용하는 이유는 레거시 프로젝트 (예 : VB6, .NET 1.1 등)를 지원해야하고 VS2003 / 2005 / vb6 / etc를 설치하여 메인 시스템을 더럽 히고 싶지 않기 때문입니다. … 그것은 잘 작동하지만 간헐적으로 문제가 있습니다.

또한 상호 작용이 느리고 VM은 시작 / 종료하는 데 시간이 걸리고 Win7의 Aero와 같은 고유 UI 효과가 없습니다.

당신이 돈을 절약하기 위해 무엇이든 당신은 당신의 팀에 부과하려는 번거 로움과 낭비 할 것입니다. 또한 여기에 언급 된 바와 같이 멀티 스크린 지원은 없습니다. 생산성을 높이려면 화면이 3 개 이상 필요합니다.