다음을 통해 공유


개발 수명 주기

개발 수명 주기 전략은 자동 랜딩 존을 만드는 동안 리포지토리, 분기, 자동화된 빌드, 배포, 롤백 전략에 대한 주요 디자인 고려 사항 및 권장 사항을 제공합니다.

리포지토리 전략

디자인 고려 사항

  • 팀에게 코드 공유 및 관리의 유연성을 제공하기 위해 Git과 같은 버전 제어 시스템을 채택하는 것이 좋습니다.

    • Git은 업계 표준 버전 제어 시스템입니다. Git은 분산 버전 제어 시스템입니다. 즉, 코드의 로컬 사본은 완전한 리포지토리 버전에 해당합니다.
  • 모노 리포지토리와 다중 리포지토리의 리포지토리 구조를 이해합니다.

    • 모노 리포지토리 구조에서 모든 소스 코드는 단일 리포지토리에 있습니다.
    • 다중 리포지토리 구조에서 모든 프로젝트는 별도의 리포지토리로 구성됩니다.
  • 리포지토리의 콘텐츠에 맞는 표시 유형 설정을 선택합니다.

    • 공용 리포지토리는 익명으로 액세스할 수 있습니다.
    • 프라이빗 리포지토리의 경우 사용자가 해당 리포지토리에 대한 액세스 권한을 부여받고 로그인하여 서비스에 액세스해야 합니다.
    • Azure DevOps ProjectsGitHub 리포지토리에 대한 퍼블릭 및 프라이빗 표시 여부를 설정할 수 있습니다.
  • 소스 코드에 기여하고 다른 기능을 관리할 수 있는 사용자를 제어하는 데 도움이 되는 리포지토리 권한을 설정하는 것이 좋습니다.

  • Azure에 IaC(Infrastructure as Code) 리소스 배포를 사용하는 것이 좋습니다. IaC를 사용하면 선언적 모델에서 인프라를 관리할 수 있으므로 구성 노력을 줄이고 배포 간의 일관성을 보장하며 수동 환경 구성을 방지할 수 있습니다.

  • Azure는 다음을 통해 랜딩 존에 대한 IaC를 지원합니다.

디자인 권장 사항

  • Git을 버전 제어 시스템으로 사용합니다.

  • Azure 랜딩 존을 빌드할 때 프라이빗 리포지토리 사용

  • 자동화 예제, 공용 설명서 및 오픈 소스 공동 작업 자료와 같은 비확인 정보를 공유할 때 공용 리포지토리를 사용합니다.

  • 클라우드 리소스 배포, 관리, 관리 및 지원을 위한 IaC 접근 방식을 채택합니다.

분기 전략

디자인 고려 사항

  • 팀이 버전 제어를 더욱 효율적으로 관리할 수 있도록 하는 분기 전략을 사용하는 것이 좋습니다.

  • 분기에 특정 명명 규칙을 사용하는 것이 좋습니다.

  • 분기 사용 권한을 사용하여 사용자 기능을 제어하는 것이 좋습니다.

  • 분기 정책을 사용하여 팀이 중요한 개발 분기를 보호하는 데 도움을 주는 것이 좋습니다. 정책은 코드 품질 및 변경 관리 표준 적용을 지원할 수 있습니다. 분기 정책의 예는 다음과 같습니다.

  • 끌어오기 요청 전략을 채택하면 분기에 병합된 코드 변경 내용을 계속 제어할 수 있습니다.

    • 병합 전략을 정의합니다.
    • 끌어오기 요청은 간단해야 하며, 검토자가 커밋 및 변경 내용의 유효성을 보다 효율적으로 검사할 수 있도록 파일 수를 최소한으로 유지해야 합니다.
    • 끌어오기 요청에는 명확한 제목과 설명이 있어야 하므로 검토자는 코드를 검토할 때 예상되는 사항을 알 수 있습니다.
    • 끌어오기 요청 템플릿을 사용할 수 있습니다.
    • 끌어오기 요청이 완료되면 원본 분기를 삭제할 수 있으므로 더 많은 제어와 더 나은 분기 관리를 제공합니다.

디자인 권장 사항

  • 개발자가 단일 분기에 커밋하는 트렁크 기반 개발 모델을 채택합니다. 이 모델은 연속 통합을 용이하게 합니다. 모든 기능 작업을 트렁크에서 수행하기 때문에 커밋이 발생할 때 병합 충돌을 해결합니다.

  • 팀에서 분기의 일관된 명명 규칙을 정의하고 사용하여 수행된 작업을 식별하도록 합니다.

  • Git 리포지토리의 분기에서 코드를 읽고 업데이트할 수 있는 사용자를 제어하는 권한을 설정합니다. 개별 사용자 및 그룹에 대한 사용 권한을 설정할 수 있습니다.

  • 분기 정책 설정:

    • 분기 병합에 대한 끌어오기 요청을 주 분기로 사용해야 합니다.
    • 끌어오기 요청에 대한 최소 검토자 수가 필요합니다.
    • 모든 승인 응답을 다시 설정하여 모든 승인 응답을 제거하고, 원본 분기가 변경될 때마다 거부하거나 기다리도록 응답을 유지합니다.
    • 코드 검토자를 자동으로 포함합니다.
    • 댓글 확인 검사
  • Squash를 병합 전략으로 설정하면 끌어오기 요청 완료 시 토픽 분기의 Git 기록을 압축할 수 있습니다. Squash 병합은 토픽 분기의 각 커밋을 기본 분기의 기록에 추가하는 대신 모든 파일 변경 내용을 기본 분기의 단일 새 커밋에 추가합니다.

자동화된 빌드

디자인 고려 사항

  • CI(연속 통합)를 구현하는 것이 좋습니다. CI에는 정기적으로 모든 개발자 코드를 중앙 코드베이스에 병합하는 과정이 포함되고 표준 빌드 및 테스트 프로세스를 자동으로 실행합니다.

  • 다음과 같이 CI 트리거를 사용하는 것이 좋습니다.

    • Azure Repos Git CI 빌드를 실행하기 위한 트리거로 분기, 경로, 태그를 구성할 수 있습니다.
    • GitHub. CI 빌드를 실행하도록 분기, 경로, 태그 트리거를 구성할 수 있습니다.
  • 구문의 유효성을 검사하려면 빌드 프로세스에 IaC 단위 테스트를 포함하는 것이 좋습니다.

  • 애플리케이션 빌드 프로세스에 단위 테스트를 포함하는 것이 좋습니다. Azure DevOps 파이프라인에 사용할 수 있는 작업을 검토합니다.

  • Azure DevOps 서비스 연결 또는 GitHub 비밀을 사용하여 Azure에 대한 연결을 관리합니다. 각 연결에는 Azure 리소스에 대한 올바른 액세스 권한이 있어야 합니다.

  • Azure Key Vault 비밀을 사용하여 암호, API 키, 인증서와 같은 중요한 정보를 저장하고 관리하는 것이 좋습니다.

  • Azure DevOps 에이전트는 자체 호스팅 또는 Microsoft 호스팅일 수 있습니다.

    • 유지 관리 및 업그레이드는 Microsoft 호스팅 에이전트를 사용할 때 처리됩니다. 빌드 작업을 실행할 때마다 새 가상 머신이 만들어집니다.
    • 자체 호스팅 에이전트를 설정하고 관리하여 빌드 작업을 실행합니다.

디자인 권장 사항

  • CI를 사용하여 팀 구성원이 버전 관리 변경 사항을 커밋할 때마다 코드 작성 및 테스트를 자동화합니다.

  • 빌드 프로세스의 일부로 IaC 및 애플리케이션 코드에 대한 단위 테스트를 포함합니다.

  • 가능하면 각 파이프라인 실행 시 격리되고 완전한 VM을 제공하므로 자체 호스팅 풀 대신 Microsoft 호스팅 풀을 사용합니다.

  • 서비스 연결 또는 GitHub 비밀을 통해 Azure DevOps 또는 GitHub를 Azure에 연결하는 경우 필요한 리소스에만 액세스할 수 있도록 항상 범위를 정의해야 합니다.

  • Key Vault 비밀을 사용하여 자격 증명(가상 머신의 사용자 암호), 인증서 또는 키와 같은 중요한 정보를 하드 코딩하지 않도록 합니다. 그런 다음, 빌드 및 릴리스 작업에서 비밀을 변수로 사용합니다.

배포 전략

디자인 고려 사항

  • CD(지속적인 업데이트)를 사용하는 것이 좋습니다. CD에는 빌드에서 환경으로 빌드, 테스트, 구성, 배포가 포함됩니다.

  • 환경을 사용하는 것이 좋습니다. 환경을 사용하면 배달 작업에서 리소스 컬렉션을 대상으로 지정할 수 있습니다. 일반적인 환경 이름의 예는 다음과 같습니다.

    • 개발자
    • 테스트
    • QA
    • 준비
    • 프로덕션
  • 전략의 일부로 IaC를 사용하여 변경 내용의 유효성을 검사하고 배포 전을 확인하는 것이 좋습니다.

디자인 권장 사항

  • CD를 사용하여 자동으로 코드를 빌드하고, 테스트하고, 프로덕션과 유사한 환경에 배포하여 항상 코드를 배포할 준비가 되도록 합니다. 지속적인 업데이트를 추가하여 가능한 한 빨리 코드 결함을 감지하고 제대로 테스트된 업데이트를 신속하게 릴리스할 수 있도록 하는 전체 CI/CD 통합을 만듭니다.

  • 배포 전략의 일부로 환경을 사용합니다. 환경은 다음과 같은 이점을 제공합니다.

    • 배포 기록
    • 커밋 및 작업 항목의 추적 가능성
    • 진단 리소스 상태
    • 보안
  • 변경 내용을 미리 보고 리소스가 생성, 수정 또는 삭제되었는지에 대한 세부 정보를 볼 수 있도록 IaC 사전 배포 검사를 포함합니다.

롤백 전략

디자인 고려 사항

디자인 권장 사항

  • 변경 내용을 커밋된 파일로 되돌리거나, 커밋되지 않은 변경 내용을 취소하거나, 분기를 이전 상태로 다시 설정해야 하는 경우 Git에서 변경 취소 사용을 채택합니다.