

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

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

*Mike Stephens와 Rayjan Wilson, Amazon Web Services*

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

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

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

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

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

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

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

**대상 아키텍처**

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

![\[각 브랜치 및 환경의 트렁크 활동의 Punnett 제곱\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/5df23e4d-84fe-4ab3-a54f-96b6406abc57/images/ad549ef4-90ad-47c1-bd01-f21d6ce5511a.png)


트렁크 접근 방식의 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-trunk-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) - 흐름도 및 다이어그램을 만들기 위한 애플리케이션입니다.
+ [Figma](https://www.figma.com/design-overview/)는 공동 작업을 위해 설계된 온라인 설계 도구입니다. 코드 리포지토리에는 Figma용 .fig 형식의 템플릿이 포함되어 있습니다.

**코드 리포지토리**

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

## 모범 사례
<a name="implement-a-trunk-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/)의 모범 사례 및 권장 사항을 따릅니다. 이를 통해 Trunk 기반 개발을 효과적으로 구현하고, 협업을 촉진하고, 코드 품질을 개선하고, 개발 프로세스를 간소화할 수 있습니다.

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

### 트렁크 워크플로 검토
<a name="reviewing-the-trunk-workflow"></a>


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

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


| 문제 | Solution | 
| --- | --- | 
| 브랜치 충돌 | Trunk 모델에서 발생할 수 있는 일반적인 문제는 프로덕션 환경에서 핫픽스가 발생해야 하지만 동일한 리소스가 수정되는 `feature` 브랜치에서 해당 변경이 발생해야 하는 경우입니다. 에 병합`main`할 때 상당한 충돌을 방지하려면의 변경 사항을 하위 브랜치에 자주 병합하는 것이 좋습니다`main`. | 

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

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

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

**AWS DevOps 지침**
+ [AWS DevOps 지침](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Deployment Pipeline Reference Architecture](https://pipelines.devops.aws.dev/)
+ [DevOps란 무엇인가요?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps 리소스](https://aws.amazon.com/devops/resources/)

**트렁크 지침**
+ [트렁크 기반 개발](https://trunkbaseddevelopment.com/)

**기타 리소스**
+ [12단계 앱 방법론](https://12factor.net/)(12factor.net)