2009-03-20 11 views
4

그래서 this question을 보았습니다. 좀 더 일반적인 조언을 구합니다. 빌드 서버를 어떻게 지정합니까? 구체적으로 새 빌드 서버에 사용할 프로세서, HD, RAM 등을 정확히 결정하기 위해 어떤 단계를 거쳐야합니까? 가상화 사용 여부를 결정할 때 고려해야 할 요소는 무엇입니까?서버 구성 하드웨어 구성

나는 하드웨어 구매의 결정을 내리기 위해 필요한 일반적인 단계를 찾고 있습니다. 구체적인 결론을 이끌어내는 단계 - "네가 감당할 수있는만큼의 RAM"대신 "나는 4 기가의 숫양이 필요하다"고 생각하십시오.

P. 저는 의도적으로 구체적인 것을 말하지 않습니다. 왜냐하면 제가 가르치는 사람 대 물고기 대답을 찾고 있기 때문이며, 제 상황에만 적용될 대답이 아닙니다.

답변

5

답변은 코드를 "빌드"하기 위해 컴퓨터에 필요한 요구 사항입니다. 그것은 전적으로 당신이 말하는 코드에 달려 있습니다.

몇 천 줄의 코드 만 있으면 그 오래된 바탕 화면을 옷장에서 꺼낼 수 있습니다. 수십억 라인의 코드가 은행 관리자에게 말하면 블레이드 엔클로저에 대한 대출이 제공됩니다!

저는 빌드 서버로 시작하는 것이 가장 좋은 곳이라고 생각합니다. 그러나 새로운 개발자 머신을 구입 한 다음 이전 서버를 빌드 서버로 다시 빌드하는 것이 가장 좋습니다.

1

고려할 사항 : 몇 개의 프로젝트가 동시에 빌드 될 것으로 예상됩니까? 다른 프로젝트가 완료되는 동안 한 프로젝트가 대기 할 수 있습니까?

CI 또는 예정된 빌드를 수행 하시겠습니까?

빌드가 정상적으로 완료 되려면 얼마나 걸리나요?

어떤 빌드 소프트웨어를 사용하고 있습니까?

대부분의 웹 프로젝트는 규모가 작기 때문에 (5 분 미만의 빌드 시간) 대형 서버를 구입하는 것이 의미가 없습니다.

예를 들어, 우리는 약 20 명의 개발자가 6 가지 프로젝트에 적극적으로 참여하고 있습니다. 우리는 모든 프로젝트에 대해 CI를 실행하는 단일 TFS 빌드 서버를 사용하고 있습니다. 모든 체크인을 할 때마다 빌드되도록 설정됩니다.

모든 프로젝트는 3 분 안에 빌드됩니다.

빌드 서버는 4GB RAM이있는 단일 쿼드 코어입니다. 우리가 주로 사용하는 이유는 성능 개발 및 QA 빌드 준비 때문입니다. 빌드가 완료되면 해당 응용 프로그램이 해당 서버에 자동으로 배포됩니다. 또한 해당 프로젝트에 대한 단위 테스트 및 웹 테스트를 수행합니다.

사용하는 빌드 소프트웨어의 유형은 매우 중요합니다. TFS는 각 코어를 활용하여 솔루션 내에서 프로젝트를 병렬로 만들 수 있습니다. 빌드 소프트웨어가 그렇게 할 수 없다면 필요에 따라 여러 빌드 서버가 있는지 조사 할 수 있습니다.

3

현재 빌드하는 데 사용하는 시스템의 빌드에 대한 성능 메트릭을 수집하는 것으로 시작합니다. 필자는 CPU 및 메모리 사용률, 디스크에서 읽고 쓰는 데이터의 양 및 생성 된 네트워크 트래픽 (있는 경우)의 양을 자세히 살펴볼 것입니다. Windows에서 perfmon을 사용하여이 모든 데이터를 얻을 수 있습니다. Linux에서는 vmstat, iostat 및 top과 같은 도구를 사용할 수 있습니다. 병목 현상이 발생한 위치를 파악하십시오 - 빌드 CPU가 바운드입니까? 디스크 바운드? RAM에 굶주린가요?이 질문에 대한 답변은 구매 결정을 안내 할 것입니다. 빌드가 CPU를 해머하지만 비교적 적은 양의 데이터를 생성하는 경우, 비명을 지르는 SCSI 기반 RAID 디스크를 넣는 것은 낭비입니다.

이러한 메트릭을 수집 할 때 다양한 수준의 병렬 처리로 빌드를 실행 해 볼 수 있습니다. gnumake를 사용한다면 -j 2, -j 4, -j 8으로 빌드를 실행하십시오. 이렇게하면 빌드가 CPU인지 디스크인지 여부를 확인할 수 있습니다.

올바른 빌드 서버가 실제로 하나의 거대한 상자가 아닌 값싼 시스템의 클러스터 일 가능성도 고려하십시오. gmake/distcc, pvmgmake, ElectricAccelerator, 등)를 사용하면 하나의 큰 시스템보다 훨씬 저렴한 컴퓨터를 사용할 수 있습니다.

2

저희 가게는 수천 줄의 코드에서 수십만 줄까지 (이 시점에서 백만 분의 일 이상)의 16 가지 제품을 지원합니다. 우리는 3 HP 서버 (약 5 세), 듀얼 쿼드 코어 및 10GB RAM을 사용합니다. 디스크는 7200 RPM SCSI 드라이브입니다. 모두는 병렬 컴파일이 가능한 명령 행에서 msbuild를 통해 컴파일됩니다.

이 설정으로 가장 큰 병목 현상은 디스크 입출력입니다. 우리는 소스 코드를 완전히 지우고 모든 빌드에서 다시 체크 아웃 할 것이고, 삭제 및 체크 아웃 시간은 정말 느립니다. 편집 및 게시 시간도 느립니다. CPU와 RAM에는 원격 세금이 부과되지 않습니다.

이 서버를 새로 고치는 중입니다. 따라서 워크 스테이션 클래스 시스템의 경로를 찾아서 3 대신 4 개로 이동하고 SCSI 드라이브를 내가 가질 수있는 최고/가장 빠른 SSD로 교체하려고합니다. 이와 유사한 설정이있는 경우 디스크 I/O를 고려해야합니다.