

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 부록: 예제 ADR
<a name="appendix"></a>

**제목**

이 결정은 ABC 애플리케이션 개발을 위한 소프트웨어 개발 수명 주기 접근 방식을 정의합니다.

**상태**

수락됨

**날짜**

2022-03-11

**컨텍스트**

ABC 애플리케이션은 배포 패키지를 사용하여 고객 환경에 배포되는 패키지 솔루션입니다. 제어 가능한 기능, 핫픽스 및 릴리스 파이프라인을 확보할 수 있는 개발 프로세스가 필요합니다.

**결정**

여기서는 수정된 버전의 [GitFlow 워크플로](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)를 사용하여 ABC 애플리케이션을 개발합니다.

![\[ABC 샘플 애플리케이션에 맞게 수정된 GitFlow 워크플로\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/architectural-decision-records/images/gitflow-workflow.png)


단순화를 위해 `hotfix/*` 및 `release/*` 브랜치를 사용하지 않습니다. ABC 애플리케이션을 특정 환경에 배포하는 대신 패키지화할 것이기 때문입니다. 따라서 프로덕션 릴리스의 버그를 수정하기 위해 신속하게 대응하거나 별도의 환경에서 릴리스를 테스트하는 데 방해가 될 수 있는 복잡성을 더할 필요가 없습니다

합의된 브랜치 전략은 다음과 같습니다.
+ 릴리스에 태그를 지정하는 데 사용되는 보호되는 `main` 브랜치가 각 리포지토리에 있어야 합니다.
+ 진행 중인 모든 개발 작업을 위한 보호되는 `develop` 브랜치가 각 리포지토리에 있어야 합니다.

**결과**

장점:
+ 적응된 GitFlow 프로세스를 통해 ABC 애플리케이션의 릴리스 버전을 제어할 수 있습니다.

단점:
+ GitFlow가 트렁크 기반 개발이나 GitHub 흐름보다 더 복잡하고 오버헤드가 더 많습니다.

**규정 준수**
+ 각 리포지토리의 `main` 분기와 `develop` 분기는 `Protected`로 표시되어야 합니다.
+ `main` 및 `develop` 브랜치의 변경 사항은 병합 요청을 사용하여 전파되어야 합니다.
+ 모든 병합 요청에는 최소 한 번의 승인이 필요합니다.

**참고**
+ 작성자: Jane Doe
+ 버전: 0.1
+ 변경 로그: 
  + 0.1: 최초 제안 버전