Team Foundation Build 시스템 이해

Team Foundation Build를 사용하여 자동화된 분산 시스템에서 소프트웨어를 컴파일, 테스트 및 배포할 수 있습니다. 이 소프트웨어는 소프트웨어 개발에 "입문"한 소규모 업체뿐 아니라 대규모 소프트웨어 개발 회사도 지원하도록 디자인되었습니다. 이 시스템에서는 사용자 팀 및 코드베이스의 증가에 따라 빌드 시스템을 확장할 수 있습니다.

항목 내용

  • 빌드 컴퓨터

    • Team Foundation Build 서비스

    • 가상 컴퓨터를 빌드 컴퓨터로 사용

  • 빌드 컨트롤러

  • 빌드 에이전트

  • 빌드 시스템 토폴로지 예제

  • 다음 단계

빌드 컴퓨터

Team Foundation Build를 사용하려면 적어도 하나의 빌드 컴퓨터가 있어야 합니다. 중간 규모 또는 대규모 소프트웨어 작업에서는 빌드 컴퓨터가 여러 대 필요할 수 있습니다. 이 항목의 뒷부분에서는 몇 가지 빌드 시스템 구성에 대한 예제가 제공됩니다.

빌드 컴퓨터는 Team Foundation Build 서비스가 설치 및 구성되어 있는 컴퓨터입니다. 이 컴퓨터는 책상 아래에 있는 개인용 컴퓨터 또는 연구소의 워크스테이션과 같은 물리적 컴퓨터일 수 있습니다. 유연성이 높은 가상 컴퓨터를 빌드 컴퓨터로 활용할 수도 있습니다.

참고

사용할 수 있는 모든 컴퓨터는 임시 빌드 컴퓨터로 설정할 수 있습니다. 예를 들어 사용 가능한 추가 컴퓨터를 보유한 개인 개발자의 경우 이 컴퓨터를 빌드 컴퓨터로 설정하여 Team Foundation Build 서비스 기능을 사용할 수 있습니다.

Team Foundation Build 서비스가 실행 중인 컴퓨터에서 직접 빌드 컴퓨터를 구성, 수정 및 관리할 수 있지만 구성 데이터 자체는 팀 프로젝트 컬렉션에 저장됩니다.

Team Foundation Build 서비스

빌드 컴퓨터를 설정하기 전에 먼저 Team Foundation Build 서비스를 설치하고 구성 및 실행해야 합니다.

Team Foundation Build 서비스는 운영 체제 내의 여러 위치에 나열되는 Windows 서비스입니다. 나열되는 위치는 Team Foundation Build 서비스가 Windows 서비스로 실행되는지 또는 대화형 서비스로 실행되는지에 따라 달라집니다. 이 옵션을 설정하는 방법에 대한 자세한 내용은 빌드 컴퓨터 구성을 참조하십시오.

Team Foundation Build 서비스가 Windows 서비스로 실행되는 경우:

  • 서비스 노드에서 Team Foundation Build 서비스가 Visual Studio Team Foundation Build 서비스 호스트로 나열됩니다. 서비스 노드는 다음 중 한 위치에서 볼 수 있습니다.

    • 서버 운영 체제(예: Windows Server 2008)의 경우 서버 관리자

    • 클라이언트 운영 체제(예: Windows Vista)의 경우 컴퓨터 관리

  • 작업 관리자에서 Team Foundation Build 서비스는 서비스 탭에 Visual Studio Team Foundation Build 서비스 호스트로 나열됩니다.

참고

위에서 설명한 목록에 포함된 위치에서 빌드 서비스를 중지하거나 다시 시작할 수 있습니다. 이 서비스를 중지하거나 다시 시작하면 빌드 컴퓨터를 효율적으로 중지하거나 다시 시작할 수 있습니다. 하지만 Team Foundation 관리 콘솔을 사용하면 훨씬 편리하게 빌드 컴퓨터를 관리할 수 있습니다. 자세한 내용은 빌드 시스템 관리를 참조하십시오.

Team Foundation Build 서비스가 대화형 서비스로 실행되는 경우:

  • 작업 관리자에서 Team Foundation Build 서비스는 응용 프로그램 탭에 TFSBuildServiceHost로 나열됩니다.

가상 컴퓨터를 빌드 컴퓨터로 사용

Team Foundation Build 서비스는 가상 컴퓨터(예: 운영 체제가 Windows Server 2008인 물리적 컴퓨터에서 실행되는 Hyper-V 가상 컴퓨터)에 배포할 수 있습니다. 이 배포 방법을 선택하면 다음 작업을 쉽게 수행할 수 있습니다.

  • 임의의 상태 및 시점에서 시스템을 다시 빌드할 수 있습니다. 예를 들어 시스템이 손상된 경우 정상 환경의 스냅숏으로 빠르게 되돌린 후 시스템을 다시 빌드할 수 있습니다.

  • 가상 컴퓨터의 스냅숏을 만든 후 내보내서 원하는 위치에 보관하거나 팀의 다른 구성원과 공유할 수 있습니다.

가상 컴퓨터를 사용할 때의 가장 큰 단점은 물리적 컴퓨터에 비해 작업 속도가 느리다는 점입니다. 빌드에 필요한 작업량이 적거나 빌드를 자주 실행하지 않는 경우(예: 야간)에는 가상 컴퓨터를 시스템의 빌드 컴퓨터로 충분히 사용할 수 있습니다.

Team Foundation Build 서비스를 가상 컴퓨터에서 실행할 경우 성능을 향상시키려면 다음 작업을 수행하면 됩니다.

  • 다중 코어 프로세서가 있는 물리적 컴퓨터에서 가상 컴퓨터를 실행합니다. 예를 들어, 물리적 컴퓨터에 쿼드 코어 프로세서가 있는 경우 네 개의 가상 컴퓨터를 동시에 실행할 수 있으므로 대부분의 경우 빌드 컴퓨터 역할을 상당히 잘 수행합니다.

  • 각 가상 컴퓨터에 전용 물리적 하드 디스크를 지정하고 탑재합니다.

빌드 컨트롤러

각 빌드 컨트롤러는 단일 팀 프로젝트 컬렉션 전용으로 사용됩니다. 이 컨트롤러는 지정된 팀 프로젝트 컬렉션에 있는 팀 프로젝트의 빌드 요청을 수락합니다.

각 빌드 컨트롤러는 하나 이상의 빌드 에이전트의 서비스를 풀링 및 관리하고 프로세서를 많이 사용하는 작업(예: 코드 컴파일 또는 테스트 실행)을 해당 풀 내의 빌드 에이전트에 배포합니다.

빌드 컨트롤러는 워크플로를 처리한 후 일반적으로 빌드 이름 결정, 버전 제어의 레이블 생성, 메모 기록 및 빌드 상태 보고와 같은 간단한 작업을 수행합니다.

일반적으로 빌드 컨트롤러는 프로세서 시간을 많이 차지하지 않기 때문에 가상 컴퓨터가 빌드 컨트롤러의 플랫폼 역할을 충분히 수행할 수 있습니다. 그러나 특정 상황에서는 빌드 컨트롤러에 메모리가 많이 필요할 수 있습니다. 따라서 빌드 컨트롤러를 설치하는 가상 컴퓨터 또는 물리적 컴퓨터에 충분한 메모리를 제공해야 합니다.

빌드 에이전트

각 빌드 에이전트는 단일 빌드 컨트롤러에 전용으로 사용되고 제어됩니다. 빌드 에이전트는 프로세서 또는 디스크를 많이 사용하는 작업을 수행합니다. 여기에는 버전 제어에서 파일을 가져오고 체크 인하는 작업, 작업 영역 프로비전, 코드 컴파일 및 테스트 실행이 포함됩니다.

빌드 시스템을 어셈블할 때 몇 개의 에이전트로 시작할 수 있습니다. 그런 다음 팀 멤버가 추가되고, 코드베이스가 증가하고, 빌드 시스템에서 처리해야 하는 작업이 늘어남에 따라 빌드 에이전트를 추가하여 빌드 시스템을 확장할 수 있습니다.

에이전트에 특수 기능을 설정한 경우에는 해당 에이전트에 태그를 할당해야 합니다. 이 방법에 따르면 이러한 특수 에이전트를 사용할 수 하는 빌드 정의를 만들 수 있습니다. 예를 들어 BVT 테스트를 실행하도록 설계된 에이전트의 풀에 BVT 태그를 적용할 수 있습니다. 그런 다음 해당 빌드 에이전트만 사용하는 야간 빌드를 정의할 수 있습니다.

빌드 에이전트는 프로세서를 많이 사용하는 작업의 대부분을 수행하므로 허용된 시간 내에 빌드 에이전트가 작업을 수행할 수 있도록 빌드 컴퓨터에 강력한 하드웨어를 사용해야 합니다.

빌드 시스템 토폴로지 예제

Team Foundation Build 서비스는 작고 복잡하지 않은 빌드 시스템부터 시작할 수 있도록 디자인되었습니다. 코드베이스가 확장되고 팀의 규모가 커짐에 따라 이미 가지고 있는 시스템에 빌드 컴퓨터를 추가하는 점진적인 방식으로 시스템을 쉽게 확장할 수 있습니다.

단일 컴퓨터 시스템(응용 프로그램 계층과 공유)

다음 구성에서는 휴무 시간에만 가끔씩 빌드를 실행하는 매우 작은 팀을 지원할 수 있습니다. 예를 들어 단일 야간 빌드만 실행할 수 있습니다.

응용 프로그램 계층의 단일 컴퓨터 시스템

대부분의 경우 다음과 같은 이유 때문에 단일 빌드 컴퓨터 토폴로지로는 충분하지 않습니다.

  • 빌드 에이전트는 프로세서에 큰 부담을 주므로 응용 프로그램 계층의 성능이 현저히 저하될 수 있습니다.

  • 특히 빌드 컨트롤러에서 여러 활성 빌드 에이전트를 동시에 관리하는 경우 시스템 메모리가 받는 부담이 커질 수 있습니다.

  • Team Foundation Build 서비스를 설치하면 빌드 컴퓨터의 공격 대상 영역이 증가합니다. 예를 들어 악의적인 사용자가 임의의 코드를 실행하여 서버를 제어하고 데이터를 가로채기 위해 빌드 정의를 만들 수 있습니다.

단일 컴퓨터 시스템(독립 실행형)

다음은 소규모 팀에서 시작하기에 좋은 구성입니다.

단일 컴퓨터 시스템(독립 실행형)

프로세서를 많이 사용하는 작업은 빌드 에이전트에 의해 별도의 컴퓨터에서 수행되기 때문에 빌드가 실행될 때 빌드 에이전트가 응용 프로그램 계층의 성능에 영향을 주지는 않습니다.

또한 빌드 컨트롤러를 전용 빌드 컴퓨터에서 실행할 수도 있습니다. 그러나 그림에 설명된 구성을 적용하면 빌드 컴퓨터를 수리하거나 교체해야 하는 경우 등에 파급 효과를 줄이면서 빌드 시스템을 변경할 수 있는 이점이 있습니다.

빌드 컨트롤러가 응용 프로그램 계층과 같은 컴퓨터에 있다는 점은 프로세서 관점에서 일반적으로 문제가 되지 않습니다. 하지만 다음과 같은 이유 때문에 보다 확장 가능한 토폴로지를 사용할 수 있습니다.

  • 특히 빌드 컨트롤러에서 여러 활성 빌드 에이전트를 동시에 관리하는 경우 시스템 메모리가 받는 부담이 커질 수 있습니다.

  • Team Foundation Build 서비스를 설치하면 빌드 컴퓨터의 공격 대상 영역이 증가합니다. 예를 들어 악의적인 사용자가 임의의 코드를 실행하여 서버를 제어하고 데이터를 가로채기 위해 빌드 정의를 만들 수 있습니다.

다중 컴퓨터 시스템

일반적으로 중간 규모 및 대규모 팀에서는 작업을 수행하기 위해 여러 빌드 컴퓨터가 필요합니다. 다음 예제에서는 두 개의 빌드 컴퓨터를 배포합니다.

다중 컴퓨터 시스템

다음 예제에서와 같이 여러 빌드 컴퓨터를 사용하여 각 컴퓨터에 다른 용도를 부여할 수 있습니다.

  • 하나의 빌드 컴퓨터는 연속 통합 빌드를 처리하는 전용 빌드 에이전트가 될 수 있습니다. 팀에서는 빌드로 인해 작업이 지연되지 않도록 이러한 종류의 빌드(특히 제어된 체크 인 빌드)를 빠르게 실행해야 합니다. 빌드 프로세스 매개 변수 설정을 사용하여 빌드를 빠르게 실행할 수 있습니다. 이러한 설정에는 작업 영역 지우지 않기, 최우선 순위 테스트만 실행 및 최대 실행 시간 설정의 하한값 지정이 포함될 수 있습니다.

  • 다른 빌드 컴퓨터에서는 많은 처리 시간이 필요한 예약 및 임시 빌드만 전용으로 처리할 수 있습니다. 예를 들어, 빌드 정의가 작업 영역을 정리하고 모든 테스트를 수행하며 코드 분석을 실행하도록 이 컴퓨터의 빌드 에이전트를 대상으로 하는 빌드 정의를 설정할 수 있습니다.

다중 컨트롤러가 있는 다중 컴퓨터 시스템

다음 토폴로지 예제는 엔터프라이즈 수준 소프트웨어 작업을 지원할 수 있습니다.

다중 컨트롤러가 있는 다중 컴퓨터 시스템

각 팀 프로젝트 컬렉션에는 그림에서와 같이 고유 빌드 컨트롤러가 있어야 합니다. 이 토폴로지에 의해 빌드 컴퓨터가 격리되는 방식을 확인하십시오. 팀 프로젝트 컬렉션 A에서 작업하는 팀 멤버는 빌드 컨트롤러 A에서 제어하는 빌드 에이전트만 사용할 수 있습니다.

다음 단계

Team Foundation Build 시스템의 작동 방법을 배웠으므로 이제 다음과 같은 단계를 수행할 수 있습니다.