

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

# 다중 계정 DevOps 환경을 위한 Gitflow 분기 전략 구현
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens, Stephen DiCato, Abhilash Vinod, Tim Wondergem, Amazon Web Services*

## 요약
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-summary"></a>

소스 코드 리포지토리를 관리할 때 다양한 분기 전략이 개발 팀이 사용하는 소프트웨어 개발 및 릴리스 프로세스에 영향을 미칩니다. 일반적인 분기 전략의 예로는 Trunk, Gitflow 및 GitHub Flow가 있습니다. 이러한 전략은 서로 다른 브랜치를 사용하며, 각 환경에서 수행되는 활동은 다릅니다. DevOps 프로세스를 구현하는 조직은 이러한 분기 전략 간의 차이를 이해하는 데 도움이 되는 시각적 가이드의 이점을 누릴 수 있습니다. 조직에서이 시각적 객체를 사용하면 개발 팀이 업무를 조정하고 조직 표준을 따르는 데 도움이 됩니다. 이 패턴은이 시각적 객체를 제공하고 조직에서 Gitflow 분기 전략을 구현하는 프로세스를 설명합니다.

이 패턴은 여러가 있는 조직의 DevOps 분기 전략을 선택하고 구현하는 방법에 대한 설명서 시리즈의 일부입니다 AWS 계정. 이 시리즈는 처음부터 올바른 전략과 모범 사례를 적용하여 클라우드에서의 경험을 간소화하는 데 도움이 되도록 설계되었습니다. Gitflow는 조직에서 사용할 수 있는 가능한 분기 전략 중 하나일 뿐입니다. 이 설명서 시리즈에서는 [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) 및 [GitHub Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) 분기 모델도 다룹니다. 아직 수행하지 않은 경우이 패턴의 지침을 구현하기 전에 [다중 계정 DevOps 환경에 대한 Git 분기 전략 선택을 검토하는](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) 것이 좋습니다. 실사를 통해 조직에 적합한 분기 전략을 선택합니다.

이 가이드에서는 조직이 Gitflow 전략을 구현하는 방법을 보여주는 다이어그램을 제공합니다. [AWS Well-Architected DevOps 지침을](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) 검토하여 모범 사례를 검토하는 것이 좋습니다. 이 패턴에는 DevOps 프로세스의 각 단계에 대한 권장 작업, 단계 및 제한이 포함됩니다.

## 사전 조건 및 제한 사항
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**사전 조건 **
+ Git [설치](https://git-scm.com/downloads) 이는 소스 코드 리포지토리 도구로 사용됩니다.
+ Draw.io, [설치](https://github.com/jgraph/drawio-desktop/releases)됨. 이 애플리케이션은 다이어그램을 보고 편집하는 데 사용됩니다.
+ (선택 사항) Gitflow 플러그인이 [설치되어](https://github.com/nvie/gitflow) 있습니다.

## 아키텍처
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**대상 아키텍처**

다음 다이어그램은 [Punnett 사각형](https://en.wikipedia.org/wiki/Punnett_square)(Wikipedia)처럼 사용할 수 있습니다. 세로 축의 브랜치를 가로 축의 AWS 환경과 정렬하여 각 시나리오에서 수행할 작업을 결정합니다. 숫자는 워크플로의 작업 순서를 나타냅니다. 이 예에서는 기능 브랜치에서 프로덕션 배포까지 안내합니다.

![각 브랜치 및 환경의 Gitflow 활동의 Punnett 제곱입니다.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/1dee2a06-cc54-4797-b9a9-78b6685edd33/images/d8be49bf-dca1-4892-ac4c-11996a7258c2.png)


Gitflow 접근 방식의 AWS 계정, 환경 및 브랜치에 대한 자세한 내용은 [다중 계정 DevOps 환경을 위한 Git 브랜치 전략 선택을 참조하세요](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/).

**자동화 및 규모 조정**

지속적 통합 및 지속적 제공(CI/CD)은 소프트웨어 릴리스 수명 주기를 자동화하는 프로세스입니다. 일반적으로 초기 커밋에서 프로덕션으로 새 코드를 가져오는 데 필요한 수동 프로세스의 대부분 또는 전부를 자동화합니다. CI/CD 파이프라인에는 샌드박스, 개발, 테스트, 스테이징 및 프로덕션 환경이 포함됩니다. 각 환경에서 CI/CD 파이프라인은 코드를 배포하거나 테스트하는 데 필요한 모든 인프라를 프로비저닝합니다. CI/CD를 사용하면 개발 팀이 코드를 변경하여 자동으로 테스트하고 배포할 수 있습니다. 또한 CI/CD 파이프라인은 기능 수락 및 배포에 대한 일관성, 표준, 모범 사례 및 최소 허용 수준을 적용하여 개발 팀에 거버넌스 및 가드레일을 제공합니다. 자세한 내용은 [AWS에서 지속적 통합 및 지속적 전달 연습](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html)을 참조하세요.

AWS 는 CI/CD 파이프라인을 구축하는 데 도움이 되도록 설계된 개발자 서비스 제품군을 제공합니다. 예를 들어 [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)는 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는 데 도움이 되는 완전관리형 지속적 제공 서비스입니다.는 소스 코드를 [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)컴파일하고 테스트를 실행하며 ready-to-deploy 있는 소프트웨어 패키지를 생성합니다. 자세한 내용은 [의 개발자 도구를 AWS](https://aws.amazon.com/products/developer-tools/) 참조하세요.

## 도구
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS 서비스 및 도구**

AWS 는이 패턴을 구현하는 데 사용할 수 있는 개발자 서비스 제품군을 제공합니다.
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)는 확장성이 뛰어난 관리형 아티팩트 리포지토리 서비스로, 애플리케이션 개발을 위한 소프트웨어 패키지를 저장하고 공유하는 데 도움을 줍니다.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)는 소스 코드를 컴파일하고 유닛 테스트를 실행하며 배포할 준비가 완료된 아티팩트를 생성하는 완전 관리형 빌드 서비스입니다.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)는 Amazon Elastic Compute Cloud(Amazon EC2) 또는 온프레미스 인스턴스, AWS Lambda 함수 또는 Amazon Elastic Container Service(Amazon ECS) 서비스에 대한 배포를 자동화합니다.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)은 소프트웨어 릴리스의 여러 단계를 신속하게 모델링하고 구성하고 소프트웨어 변경 내용을 지속적으로 릴리스하는 데 필요한 단계를 자동화합니다.

**기타 도구**
+ [Draw.io 데스크톱](https://github.com/jgraph/drawio-desktop/releases)은 흐름도와 다이어그램을 만들기 위한 애플리케이션입니다. 코드 리포지토리에는 Draw.io.drawio 형식의 템플릿이 포함되어 있습니다.
+ [Figma](https://www.figma.com/design-overview/)는 공동 작업을 위해 설계된 온라인 설계 도구입니다. 코드 리포지토리에는 Figma용 .fig 형식의 템플릿이 포함되어 있습니다.
+ (선택 사항) [Gitflow 플러그인](https://github.com/nvie/gitflow)은 Gitflow 분기 모델에 대한 상위 수준 리포지토리 작업을 제공하는 Git 확장 모음입니다.

**코드 리포지토리**

이 패턴의 다이어그램에 대한이 소스 파일은 GitFlow 리포지토리용 GitHub [Git 분기 전략 GitFlow](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/gitflow)에서 사용할 수 있습니다. 여기에는 PNG, draw.io 및 Figma 형식의 파일이 포함됩니다. 조직의 프로세스를 지원하도록 이러한 다이어그램을 수정할 수 있습니다.

## 모범 사례
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

[AWS Well-Architected DevOps 지침](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) 및 [다중 계정 DevOps 환경을 위한 Git 분기 전략 선택](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)의 모범 사례 및 권장 사항을 따릅니다. 이를 통해 Gitflow 기반 개발을 효과적으로 구현하고, 협업을 촉진하고, 코드 품질을 개선하고, 개발 프로세스를 간소화할 수 있습니다.

## 에픽
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Gitflow 워크플로 검토
<a name="reviewing-the-gitflow-workflows"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 표준 Gitflow 프로세스를 검토합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps 엔지니어 | 
| 핫픽스 Gitflow 프로세스를 검토합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps 엔지니어 | 
| 버그 수정 Gitflow 프로세스를 검토합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps 엔지니어 | 

## 문제 해결
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| 문제 | Solution | 
| --- | --- | 
| 브랜치 충돌 | Gitflow 모델에서 흔히 발생하는 문제는 프로덕션에서 핫픽스가 필요하지만 동일한 리소스를 수정 중인 또 다른 브랜치가 있는 하위 환경에서도 동일한 변경이 필요할 때 생기는 상황입니다. 한 번에 하나의 릴리스 브랜치만 활성화하는 것이 좋습니다. 한 번에 둘 이상의 활성 상태가 있는 경우 환경의 변경 사항이 충돌할 수 있으며 브랜치를 프로덕션으로 이동하지 못할 수 있습니다. | 
| 병합 | 릴리스는 기본 브랜치로 다시 병합하고 가능한 한 빨리 개발하여 작업을 기본 브랜치로 다시 통합해야 합니다. | 
| 스쿼시 병합 | `feature` 브랜치에서 브랜치로 병합할 때만 스쿼시 병합을 사용합니다`develop`. 상위 브랜치에서 스쿼시 병합을 사용하면 변경 사항을 하위 브랜치로 다시 병합할 때 문제가 발생합니다. | 

## 관련 리소스
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-resources"></a>

이 가이드에는 Git에 대한 교육이 포함되어 있지 않지만이 교육이 필요한 경우 인터넷에서 사용할 수 있는 고품질 리소스가 많이 있습니다. [Git 설명서](https://git-scm.com/doc) 사이트로 시작하는 것이 좋습니다.

다음 리소스는의 Gitflow 분기 여정에 도움이 될 수 있습니다 AWS 클라우드.

**AWS DevOps 지침**
+ [AWS DevOps 지침](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS 배포 파이프라인 참조 아키텍처](https://pipelines.devops.aws.dev/)
+ [DevOps란 무엇인가요?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps 리소스](https://aws.amazon.com/devops/resources/)

**Gitflow 지침**
+ [원본 Gitflow 블로그](https://nvie.com/posts/a-successful-git-branching-model/)(Vincent Driessen 블로그 게시물)
+ [Gitflow 워크플로](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)(Atlassian)
+ [GitHub: GitHub 기반 리포지토리와 함께 Git Flow 워크플로를 사용하는 방법](https://youtu.be/WQuxeEvaCxs)(YouTube 비디오)
+ [Git 흐름 초기화 예시](https://www.youtube.com/watch?v=d4cDLBFbekw)(YouTube 동영상)
+ [시작부터 끝까지 Gitflow 릴리스 브랜치](https://www.youtube.com/watch?v=rX80eKPdA28)(YouTube 비디오)

**기타 리소스**

[12단계 앱 방법론](https://12factor.net/)(12factor.net)