개발 수명 주기 전략은 자동 랜딩 존을 만드는 동안 리포지토리, 분기, 자동화된 빌드, 배포, 롤백 전략에 대한 주요 디자인 고려 사항 및 권장 사항을 제공합니다.
리포지토리 전략
디자인 고려 사항
팀에게 코드 공유 및 관리의 유연성을 제공하기 위해 Git과 같은 버전 제어 시스템을 채택하는 것이 좋습니다.
- Git은 업계 표준 버전 제어 시스템입니다. Git은 분산 버전 제어 시스템입니다. 즉, 코드의 로컬 사본은 완전한 리포지토리 버전에 해당합니다.
모노 리포지토리와 다중 리포지토리의 리포지토리 구조를 이해합니다.
- 모노 리포지토리 구조에서 모든 소스 코드는 단일 리포지토리에 있습니다.
- 다중 리포지토리 구조에서 모든 프로젝트는 별도의 리포지토리로 구성됩니다.
리포지토리의 콘텐츠에 맞는 표시 유형 설정을 선택합니다.
- 공용 리포지토리는 익명으로 액세스할 수 있습니다.
- 프라이빗 리포지토리의 경우 사용자가 해당 리포지토리에 대한 액세스 권한을 부여받고 로그인하여 서비스에 액세스해야 합니다.
- Azure DevOps Projects 및 GitHub 리포지토리에 대한 퍼블릭 및 프라이빗 표시 여부를 설정할 수 있습니다.
소스 코드에 기여하고 다른 기능을 관리할 수 있는 사용자를 제어하는 데 도움이 되는 리포지토리 권한을 설정하는 것이 좋습니다.
- Azure DevOps 및 GitHub에 대한 리포지토리 권한을 설정할 수 있습니다.
Azure에 IaC(Infrastructure as Code) 리소스 배포를 사용하는 것이 좋습니다. IaC를 사용하면 선언적 모델에서 인프라를 관리할 수 있으므로 구성 노력을 줄이고 배포 간의 일관성을 보장하며 수동 환경 구성을 방지할 수 있습니다.
Azure는 다음을 통해 랜딩 존에 대한 IaC를 지원합니다.
디자인 권장 사항
Git을 버전 제어 시스템으로 사용합니다.
Azure 랜딩 존을 빌드할 때 프라이빗 리포지토리 사용
자동화 예제, 공용 설명서 및 오픈 소스 공동 작업 자료와 같은 비확인 정보를 공유할 때 공용 리포지토리를 사용합니다.
클라우드 리소스 배포, 관리, 관리 및 지원을 위한 IaC 접근 방식을 채택합니다.
분기 전략
디자인 고려 사항
팀이 버전 제어를 더욱 효율적으로 관리할 수 있도록 하는 분기 전략을 사용하는 것이 좋습니다.
분기에 특정 명명 규칙을 사용하는 것이 좋습니다.
분기 사용 권한을 사용하여 사용자 기능을 제어하는 것이 좋습니다.
분기 정책을 사용하여 팀이 중요한 개발 분기를 보호하는 데 도움을 주는 것이 좋습니다. 정책은 코드 품질 및 변경 관리 표준 적용을 지원할 수 있습니다. 분기 정책의 예는 다음과 같습니다.
- 항상 끌어오기 요청을 사용하여 변경 내용을 중요한 분기에 병합합니다.
- 끌어오기 요청에 대한 최소 검토자 수가 필요합니다.
- 코드 검토자를 자동으로 포함합니다.
- 연결된 작업 항목을 확인하면 추적 가능성을 유지할 수 있습니다.
- 설명 확인 검사는 모든 PR 설명이 확인되었는지 검사합니다.
- 병합 형식 제한
끌어오기 요청 전략을 채택하면 분기에 병합된 코드 변경 내용을 계속 제어할 수 있습니다.
- 병합 전략을 정의합니다.
- 끌어오기 요청은 간단해야 하며, 검토자가 커밋 및 변경 내용의 유효성을 보다 효율적으로 검사할 수 있도록 파일 수를 최소한으로 유지해야 합니다.
- 끌어오기 요청에는 명확한 제목과 설명이 있어야 하므로 검토자는 코드를 검토할 때 예상되는 사항을 알 수 있습니다.
- 끌어오기 요청 템플릿을 사용할 수 있습니다.
- 끌어오기 요청이 완료되면 원본 분기를 삭제할 수 있으므로 더 많은 제어와 더 나은 분기 관리를 제공합니다.
디자인 권장 사항
개발자가 단일 분기에 커밋하는 트렁크 기반 개발 모델을 채택합니다. 이 모델은 연속 통합을 용이하게 합니다. 모든 기능 작업을 트렁크에서 수행하기 때문에 커밋이 발생할 때 병합 충돌을 해결합니다.
팀에서 분기의 일관된 명명 규칙을 정의하고 사용하여 수행된 작업을 식별하도록 합니다.
Git 리포지토리의 분기에서 코드를 읽고 업데이트할 수 있는 사용자를 제어하는 권한을 설정합니다. 개별 사용자 및 그룹에 대한 사용 권한을 설정할 수 있습니다.
분기 정책 설정:
- 분기 병합에 대한 끌어오기 요청을 주 분기로 사용해야 합니다.
- 끌어오기 요청에 대한 최소 검토자 수가 필요합니다.
- 모든 승인 응답을 다시 설정하여 모든 승인 응답을 제거하고, 원본 분기가 변경될 때마다 거부하거나 기다리도록 응답을 유지합니다.
- 코드 검토자를 자동으로 포함합니다.
- 댓글 확인 검사
Squash를 병합 전략으로 설정하면 끌어오기 요청 완료 시 토픽 분기의 Git 기록을 압축할 수 있습니다. Squash 병합은 토픽 분기의 각 커밋을 기본 분기의 기록에 추가하는 대신 모든 파일 변경 내용을 기본 분기의 단일 새 커밋에 추가합니다.
자동화된 빌드
디자인 고려 사항
CI(연속 통합)를 구현하는 것이 좋습니다. CI에는 정기적으로 모든 개발자 코드를 중앙 코드베이스에 병합하는 과정이 포함되고 표준 빌드 및 테스트 프로세스를 자동으로 실행합니다.
다음과 같이 CI 트리거를 사용하는 것이 좋습니다.
- Azure Repos Git CI 빌드를 실행하기 위한 트리거로 분기, 경로, 태그를 구성할 수 있습니다.
- GitHub. CI 빌드를 실행하도록 분기, 경로, 태그 트리거를 구성할 수 있습니다.
구문의 유효성을 검사하려면 빌드 프로세스에 IaC 단위 테스트를 포함하는 것이 좋습니다.
- ARM 템플릿 테스트 도구 키트는 템플릿이 권장 사례를 따르는지 여부를 확인합니다.
- Bicep Linter는 Bicep 파일에서 구문 오류 및 모범 사례 위반을 확인합니다.
애플리케이션 빌드 프로세스에 단위 테스트를 포함하는 것이 좋습니다. 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에서 변경 취소를 사용하는 것이 좋습니다.
디자인 권장 사항
- 변경 내용을 커밋된 파일로 되돌리거나, 커밋되지 않은 변경 내용을 취소하거나, 분기를 이전 상태로 다시 설정해야 하는 경우 Git에서 변경 취소 사용을 채택합니다.