연속 통합 사용에 대한 권장 사항

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

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

관련 가이드: 빌드 속도 | 향상도구 및 프로세스 표준화

코드가 개발, 업데이트 또는 제거될 때 이러한 변경 내용을 기본 코드 분기에 통합하는 직관적이고 안전한 방법을 사용하면 개발자가 가치를 제공할 수 있습니다.

개발자는 작은 코드를 변경하고, 이러한 변경 내용을 코드 리포지토리에 푸시하고, 품질, 테스트 검사 및 도입된 버그에 대한 거의 즉각적인 피드백을 얻을 수 있습니다. 이 프로세스를 통해 더 빠르고 더 많은 신뢰도와 위험을 줄여 작업할 수 있습니다.

CI(연속 통합)는 원본 제어 시스템과 소프트웨어 배포 파이프라인이 통합되어 소프트웨어 개발 팀에 자동화된 빌드, 테스트 및 피드백 메커니즘을 제공하는 방식입니다.

주요 디자인 전략

연속 통합은 개발자가 정기적으로 소프트웨어 업데이트를 소스 제어 시스템에 통합하는 데 사용하는 소프트웨어 개발 사례입니다.

연속 통합 프로세스는 엔지니어가 GitHub 끌어오기 요청을 만들어 코드 변경 내용을 통합할 준비가 되었음을 CI 시스템에 알릴 때 시작됩니다. 통합 프로세스는 여러 기준 및 테스트에 대해 코드의 유효성을 검사하는 것이 이상적입니다. 그런 다음, 요청 엔지니어에게 이러한 테스트의 상태 대한 피드백을 제공합니다.

기준 검사 및 테스트가 잘 진행되면 통합 프로세스는 업데이트된 소프트웨어를 배포할 자산을 생성하고 단계화합니다. 이러한 자산에는 컴파일된 코드 및 컨테이너 이미지가 포함됩니다.

연속 통합은 다음 작업을 수행하여 고품질 소프트웨어를 보다 신속하게 제공하는 데 도움이 될 수 있습니다.

  • 코드에 대해 자동화된 테스트를 실행하여 호환성이 손상되는 변경에 대한 조기 검색을 제공합니다.
  • 코드 분석을 실행하여 코드 표준, 품질 및 구성을 보장합니다.
  • 규정 준수 및 보안 검사를 실행하여 소프트웨어에 알려진 취약성이 없는지 확인합니다.
  • 승인 또는 기능 테스트를 실행하여 소프트웨어가 예상대로 작동하는지 확인합니다.
  • 검색된 문제에 대한 빠른 피드백을 제공합니다.
  • 해당되는 경우 업데이트된 코드가 포함된 배포 가능한 자산 또는 패키지를 생성합니다.

연속 통합 파이프라인

연속 통합을 달성하려면 소프트웨어 솔루션을 사용하여 프로세스를 관리, 통합 및 자동화합니다. 일반적인 방법은 연속 통합 파이프라인을 사용하는 것입니다.

연속 통합 파이프라인에는 다음을 제공하는 소프트웨어(종종 클라우드 호스팅)가 포함됩니다.

  • 자동화된 테스트를 실행하기 위한 플랫폼입니다.
  • 규정 준수 검사.
  • 보고.
  • 연속 통합 프로세스를 구성하는 다른 모든 구성 요소입니다.

대부분의 경우 끌어오기 요청이 생성되거나 소프트웨어가 특정 분기에 병합되면 연속 통합 파이프라인이 실행되도록 파이프라인 소프트웨어가 소스 제어에 연결됩니다. 소스 제어 통합은 끌어오기 요청에 대해 CI 피드백을 직접 제공할 수 있는 기회도 제공합니다.

Azure Pipelines 또는 GitHub Actions 같은 많은 솔루션은 연속 통합 파이프라인의 기능을 제공합니다.

소스 제어 통합

연속 통합 파이프라인을 소스 제어 시스템과 통합하는 것은 빠른 셀프 서비스 코드 기여 사용하도록 설정하는 데 핵심적인 요소입니다.

CI 파이프라인은 새로 만든 끌어오기 요청에서 실행됩니다. 파이프라인에는 모든 테스트, 보안 평가 및 기타 검사가 포함됩니다. CI 테스트 결과는 품질에 대한 거의 실시간 피드백을 허용하기 위해 끌어오기 요청에 직접 표시됩니다.

또 다른 인기 있는 사례는 현재 빌드 상태를 표시하도록 소스 제어에 표시할 수 있는 작은 보고서 또는 배지를 빌드하는 것입니다.

다음 이미지는 GitHub와 Azure DevOps 파이프라인 간의 통합을 보여줍니다. 이 예제에서 끌어오기 요청을 만들면 Azure DevOps 파이프라인이 트리거됩니다. 파이프라인 상태 끌어오기 요청에 나타납니다.

GitHub 리포지토리의 Azure DevOps 상태 배지 스크린샷

테스트 통합

연속 통합의 핵심 요소는 개발자가 코드 기여 만들 때 코드를 지속적으로 빌드하고 테스트하는 것입니다. 끌어오기 요청을 만들 때 테스트하면 커밋에 호환성이 손상되는 변경이 도입되지 않았다는 빠른 피드백이 있습니다. 이점은 연속 통합 파이프라인의 테스트가 테스트 기반 개발 중에 실행되는 것과 동일한 테스트일 수 있다는 것입니다.

다음 코드 조각은 Azure DevOps 파이프라인의 테스트 단계를 보여줍니다. 이 단계에는 다음 두 가지 작업이 있습니다.

  • 첫 번째 작업은 인기 있는 Python 테스트 프레임워크를 사용하여 CI 테스트를 실행합니다. 이러한 테스트는 Python 코드와 함께 원본 제어에 있습니다. 테스트 결과는 test-results.xml라는 파일로 이동합니다.
  • 두 번째 작업은 테스트 결과를 사용하고 Azure DevOps 파이프라인에 통합 보고서로 게시합니다.
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

다음 이미지는 Azure DevOps 포털에 표시되는 테스트 결과를 보여 줍니다.

Azure DevOps 포털의 Azure DevOps 파이프라인 테스트 스크린샷

실패한 테스트

실패한 테스트는 배포를 일시적으로 차단하고 발생한 작업을 더 심층적으로 분석해야 합니다. 테스트에 실패하면 테스트가 개선되거나 테스트가 실패하게 된 변경 내용이 개선되어야 합니다.

CI 결과 배지

많은 개발자는 리포지토리에 상태 배지를 표시하여 코드 품질이 높다는 것을 보여 줍니다. 다음 이미지는 GitHub의 오픈 소스 프로젝트에 대한 추가 정보 파일에 표시되는 Azure Pipelines 배지를 보여 줍니다.

GitHub의 추가 정보 파일에 대한 Azure Pipelines 배지의 스크린샷

Azure 촉진

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

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

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

GitHub 또는 Azure DevOps를 사용하여 연속 통합 파이프라인을 만드는 방법을 알아봅니다.

리포지토리에 배지를 표시하는 방법을 알아봅니다.

운영 우수성 검사 목록