빌드 속도 향상을 위한 권장 사항

이 Azure Well-Architected Framework 운영 우수성 검사 목록 권장 사항에 적용됩니다.

OE:04 개발 및 테스트에 대한 업계에서 입증된 사례를 따라 소프트웨어 개발 및 품질 보증 프로세스를 최적화합니다. 명확한 역할 지정을 위해 도구, 소스 제어, 애플리케이션 디자인 패턴, 설명서 및 스타일 가이드와 같은 구성 요소의 사례를 표준화합니다.

관련 가이드: 도구 및 프로세스 | 표준화를 위한 권장사항 연속 통합을 사용하기 위한 권장 사항

이 가이드에서는 배포 인프라의 성능을 개선하기 위한 권장 사항을 설명합니다. 제품 개발 첫날 빌드 프로세스를 실행하고 실행하는 것이 중요합니다. 빌드 상태 제품을 배포할 수 있는 시기를 표시하기 때문에 빌드는 지속적인 업데이트 시스템의 하트비트입니다. 빌드는 제품의 상태 대한 중요한 정보를 제공하므로 항상 빠른 빌드를 위해 노력해야 합니다.

빌드하는 데 시간이 오래 걸리는 경우 빌드 문제를 해결하기가 어렵습니다. 지연이 발생하고 정규화되면 팀은 문제를 해결하려는 의욕이 떨어지는 경향이 있습니다.

주요 디자인 전략

빌드 시간

더 빠른 빌드를 수행하려면 다음을 수행할 수 있습니다.

  • 성능 요구 사항을 충족하는 에이전트 선택: 올바른 빌드 머신을 선택하여 빌드 속도를 향상합니다. 빠른 머신은 몇 시간, 몇 분의 차이를 만들 수 있습니다. 파이프라인이 Azure Pipelines에 있는 경우 Microsoft 호스팅 에이전트를 사용하여 작업을 실행할 수 있습니다. Microsoft 호스팅 에이전트를 사용하는 경우 유지 관리 및 업그레이드가 관리됩니다. 자세한 내용은 Microsoft 호스트된 에이전트를 참조하세요.

  • 빌드 서버 위치 최적화: 코드를 빌드할 때 데이터가 유선으로 전송됩니다. 빌드에 대한 입력은 소스 제어 리포지토리 및 아티팩트 리포지토리에서 가져옵니다. 컴파일된 아티팩트, 테스트 보고서, 코드 검사 결과 및 디버그 기호를 포함하여 빌드 프로세스의 출력을 복사해야 합니다. 이러한 복사 작업을 신속하게 실행하는 것이 중요합니다. 자체 빌드 서버를 사용하는 경우 빌드 서버가 원본 및 대상 위치 근처에 있는지 확인합니다. 빠른 업로드 및 다운로드는 전체 빌드 시간을 줄일 수 있습니다.

  • 빌드 서버 확장: 단일 빌드 서버는 소규모 제품에 충분할 수 있습니다. 제품의 크기와 scope 제품에서 작업하는 팀의 수가 증가함에 따라 단일 서버만으로는 충분하지 않을 수 있습니다. 한도에 도달하면 인프라를 여러 머신으로 수평으로 스케일링합니다. 자세한 내용은 에이전트 풀 만들기 및 관리를 참조하세요.

  • 빌드 최적화:

    • 병렬 작업을 추가하여 빌드 프로세스 속도를 향상합니다. 자세한 내용은 병렬 잡억 구성 및 결제를 참조하세요.

    • 병렬 테스트 도구 모음 실행을 사용하도록 설정하면 특히 통합 및 UI 테스트를 실행할 때 많은 시간을 절약할 수 있습니다. 자세한 내용은 테스트 실행기에 대해 병렬로 테스트 실행을 참조하세요.

    • 여러 빌드 에이전트를 통해 빌드를 스케일 아웃할 수 있는 승수 개념을 사용합니다. 자세한 내용은 파이프라인에서 작업 지정을 참조하세요.

    • 통합, UI 및 스모크 테스트를 릴리스 파이프라인으로 이동하는 것이 좋습니다. 릴리스 파이프라인으로 이동하면 빌드 피드백 루프의 빌드 속도와 속도가 향상됩니다.

    • 빌드 아티팩트를 NuGet 또는 Maven과 같은 패키지 관리 솔루션에 게시합니다. 패키지 관리 솔루션에 게시하면 빌드 아티팩트가 더 쉽게 재사용됩니다.

작업자의 개입

organization 빌드 시간을 최적화하기 위해 여러 종류의 빌드를 만들도록 선택할 수 있습니다. 가능한 빌드는 다음과 같습니다.

  • CI(연속 통합) 빌드: 이 빌드의 목적은 코드가 컴파일되고 단위 테스트가 실행되도록 하는 것입니다. 이 빌드는 각 커밋에서 트리거됩니다. 프로젝트의 하트비트 역할을 하며 즉시 팀에 품질 피드백을 제공합니다. 자세한 내용은 파이프라인을 트리거하는 이벤트 지정을 참조하세요.

  • 야간 빌드: 야간 빌드의 목적은 코드를 컴파일하는 것뿐만 아니라 각 빌드에 대한 정기적인 주기에서 비효율적인 더 큰 테스트 도구 모음이 실행되도록 하는 것입니다. 일반적으로 이러한 테스트에는 통합, UI 또는 스모크 테스트가 포함됩니다. 자세한 내용은 파이프라인의 일정 구성을 참조하세요.

  • 릴리스 빌드: 테스트를 컴파일하고 실행하는 것 외에도 이 빌드는 코드가 빌드될 때마다 필요하지 않은 API 설명서, 규정 준수 보고서, 코드 서명 및 기타 단계를 컴파일합니다. 이 빌드는 최종적으로 프로덕션 환경에 배포하기 위해 릴리스 파이프라인에 푸시되는 골든 복사본을 제공합니다.

organization 필요한 빌드 유형은 팀 및 organization 완성도, 작업 중인 제품의 종류 및 배포 전략을 포함한 요인에 따라 달라집니다.

Azure 촉진

Azure DevOps 는 협업적이고 효율적이며 일관된 개발 사례를 빌드하는 데 도움이 되는 서비스 모음입니다.

Azure Pipelines를 사용하여 애플리케이션의 CI/CD(지속적인 통합 및 지속적인 업데이트)를 지원하는 서비스를 빌드하고 릴리스합니다.

Azure용 GitHub Actions 사용하여 CI/CD 프로세스를 자동화하고 Azure와 직접 통합하여 배포를 간소화합니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드하고 테스트하는 워크플로를 만들거나 Azure용 GitHub Actions 사용하여 병합된 끌어오기 요청을 프로덕션에 배포할 수도 있습니다.

Microsoft 호스팅 에이전트는Azure Pipelines에서 기본적으로 사용할 수 있습니다. 이러한 에이전트는 단일 작업에만 사용된 다음 삭제되는 일회용 가상 머신으로, 빌드에 관리하기 쉬운 옵션을 제공합니다.

운영 우수성 검사 목록

전체 권장 사항 집합을 참조하세요.