

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

# 풀 스택 Amplify Gen 1 앱을 사용한 팀 워크플로
<a name="team-workflows-with-amplify-cli-backend-environments"></a>

기능 브랜치 배포는 **프론트엔드**와 선택적 **백엔드** 환경으로 구성됩니다. 프론트엔드는 빌드된 후 글로벌 콘텐츠 전송 네트워크(CDN)에 배포되지만, 백엔드는 Amplify Studio 또는 Amplify CLI에 의해 AWS에 배포됩니다. 이 배포 시나리오를 설정하는 방법을 알아보려면 [애플리케이션의 백엔드 빌드](deploy-backend.md) 섹션을 참조하세요.

Amplify Hosting은 기능 브랜치 배포와 함께 GraphQL API 및 Lambda 함수와 같은 백엔드 리소스를 지속적으로 배포할 수 있습니다. 다음 브랜칭 모델을 사용하여 Amplify Hosting으로 백엔드 및 프론트엔드를 배포할 수 있습니다.

## 기능 브랜치 워크플로
<a name="standard"></a>
+ Amplify Studio 또는 Amplify CLI로 **prod**, **테스트** 및 **dev** 백엔드 환경을 생성합니다.
+ **prod** 백엔드를 **기본** 브랜치에 매핑하세요.
+ **테스트** 백엔드를 **개발** 브랜치에 매핑합니다.
+ 팀 구성원은 **dev** 백엔드 환경을 사용하여 개별 **기능** 브랜치를 테스트할 수 있습니다.

![\[백엔드 환경에서 프론트엔드 브랜치로 관계를 매핑하는 방법을 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/amplify/latest/userguide/images/FeatureBranchWorkflow.png)


1. Amplify CLI를 설치하여 새 Amplify 프로젝트를 초기화합니다.

   ```
   npm install -g @aws-amplify/cli
   ```

1. 프로젝트에 대해 *prod* 백엔드 환경을 초기화합니다. 프로젝트가 없는 경우, create-react-app 또는 Gatsby와 같은 부트스트랩 도구를 사용하여 프로젝트를 생성합니다.

   ```
   create-react-app next-unicorn
   cd next-unicorn
   amplify init
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: prod
   ...
   amplify push
   ```

1. *테스트* 및 *dev* 백엔드 환경을 추가합니다.

   ```
   amplify env add
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: test
   ...
   amplify push
   
   amplify env add
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: dev
   ...
   amplify push
   ```

1. 선택한 Git 리포지토리로 코드를 푸시합니다(이 예에서는 사용자가 기본에 푸시한 것으로 가정함).

   ```
   git commit -am 'Added dev, test, and prod environments'
   git push origin main
   ```

1. 의 Amplify AWS Management Console 를 방문하여 현재 백엔드 환경을 확인합니다. 탐색 경로에서 한 단계 위로 이동하면 백엔드 환경 탭에서 생성된 모든 **백엔드 환경** 목록을 볼 수 있습니다.  
![\[Amplify 앱과 연결된 백엔드 환경을 보여주는 Amplify 콘솔입니다.\]](http://docs.aws.amazon.com/ko_kr/amplify/latest/userguide/images/reuse-backend-5.png)

1. **프론트엔드 환경** 탭으로 전환하여 리포지토리 제공자와 *기본* 브랜치를 연결하세요.

1. 빌드 설정 페이지에서 기존 백엔드 환경을 선택하여 메인 브랜치를 통한 지속적 배포를 설정합니다. 목록에서 *prod*를 선택하고 Amplify에 서비스 역할을 부여합니다. **저장 및 배포**를 선택합니다. 빌드가 완료된 후 *https://main.appid.amplifyapp.com*에서 사용 가능한 기본 브랜치 배포를 받게 됩니다.  
![\[기존 백엔드의 목록이 포함된 빌드 설정 구성 페이지입니다.\]](http://docs.aws.amazon.com/ko_kr/amplify/latest/userguide/images/reuse-backend-2.png)

1. Amplify에서 *개발* 브랜치를 연결합니다(이 시점에 *개발* 및 *기본* 브랜치가 동일한 것으로 가정함). *test* 백엔드 환경을 선택합니다.  
![\[브랜치 및 백엔드 환경이 선택된 리포지토리 브랜치 추가 페이지입니다.\]](http://docs.aws.amazon.com/ko_kr/amplify/latest/userguide/images/reuse-backend-4.png)

1. 이제 Amplify가 설정되었습니다. 기능 브랜치에서 새 기능에 대한 작업을 시작할 수 있습니다. 로컬 워크스테이션에서 *dev* 백엔드 환경을 사용하여 백엔드 기능을 추가합니다.

   ```
   git checkout -b newinternet
   amplify env checkout dev
   amplify add api
   ...
   amplify push
   ```

1. 기능에 대한 작업을 종료한 후 코드를 커밋하고 pull 요청을 생성하여 내부적으로 검토합니다.

   ```
   git commit -am 'Decentralized internet v0.1'
   git push origin newinternet
   ```

1. 표시될 변경 사항을 미리 보려면 Amplify 콘솔로 이동하여 기능 브랜치를 연결합니다. 참고: 시스템에가 AWS CLI 설치되어 있는 경우(Amplify CLI 아님) 터미널에서 직접 브랜치를 연결할 수 있습니다. 애플리케이션 설정 > 일반 > AppARN: *arn:aws:amplify:<region>:<region>:apps/<appid>*으로 이동하여 appid를 찾아볼 수 있습니다.

   ```
   aws amplify create-branch --app-id <appid> --branch-name <branchname>
   aws amplify start-job --app-id <appid> --branch-name <branchname> --job-type RELEASE
   ```

1. *https://newinternet.appid.amplifyapp.com*에 액세스하여 기능을 팀 메이트와 공유할 수 있습니다. 모든 것이 순조로워 보이면 PR을 개발 브랜치에 병합합니다.

   ```
   git checkout develop
   git merge newinternet
   git push
   ```

1. 이렇게 하면 *https://dev.appid.amplifyapp.com*에서 브랜치 배포와 함께 Amplify에서 프론트엔드와 백엔드를 업데이트할 빌드가 시작됩니다. 내부 이해관계자가 새 기능을 검토할 수 있도록 이 링크를 내부 이해관계자와 공유할 수 있습니다.

1. Git, Amplify에서 기능 브랜치를 삭제하고, 클라우드에서 백엔드 환경을 제거합니다(언제든지 'amplify env checkout prod' 및 'amplify env add'를 실행하여 새 백엔드 환경을 생성할 수 있음).

   ```
   git push origin --delete newinternet
   aws amplify delete-branch --app-id <appid> --branch-name <branchname>
   amplify env remove dev
   ```

## GitFlow 워크플로우
<a name="gitflow"></a>

GitFlow는 두 개의 브랜치를 사용하여 프로젝트 이력을 기록합니다. *기본* 브랜치는 릴리스 코드만 추적하고 *개발* 브랜치는 새로운 기능의 통합 브랜치로 사용됩니다. GitFlow는 새로운 개발과 완성된 작업을 분리하여 병렬 개발을 단순화합니다. 새로운 개발(예: 기능 및 비정기적인 버그 수정)은 *기능* 브랜치에서 수행됩니다. 개발자가 코드를 릴리스할 준비가 완료되면 *기능* 브랜치는 통합 *개발* 브랜치로 병합됩니다. 기본 브랜치에 대한 커밋만 *릴리스* 브랜치와 *핫픽스* 브랜치를 병합합니다(긴급 버그 수정).

아래의 다이어그램은 GitFlow를 사용한 권장된 설정을 보여줍니다. 위의 기능 브랜치 워크플로우 섹션에서 설명된 것과 동일한 절차를 따를 수 있습니다.

![\[GitFlow를 사용한 권장 설정을 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/amplify/latest/userguide/images/GitflowWorkflow.png)


## 각 개발자의 샌드박스
<a name="sandbox"></a>
+ 팀의 각 개발자는 자신의 로컬 컴퓨터와 별도로 클라우드에 샌드박스 환경을 만듭니다 이를 통해 개발자는 다른 팀원의 변경 사항을 덮어쓰지 않고도 서로 격리되어 작업할 수 있습니다.
+ Amplify 의 각 브랜치에는 자체 백엔드가 있습니다. 이렇게 하면 팀의 개발자가 직접 로컬 컴퓨터에서 프로덕션 환경으로 백엔드 또는 프론트엔드를 수동으로 푸시하지 않고 Amplify가 Git 리포지토리를 변경 사항 배포를 위한 단일 소스로 사용할 수 있습니다.

![\[개발자별 샌드박스 워크플로를 보여주는 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/amplify/latest/userguide/images/AmplifySandboxWorkflow.png)


1. Amplify CLI를 설치하여 새 Amplify 프로젝트를 초기화합니다.

   ```
   npm install -g @aws-amplify/cli
   ```

1. 프로젝트에 대해 *mary* 백엔드 환경을 초기화합니다. 프로젝트가 없는 경우, create-react-app 또는 Gatsby와 같은 부트스트랩 도구를 사용하여 프로젝트를 생성합니다.

   ```
   cd next-unicorn
   amplify init
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: mary
   ...
   amplify push
   ```

1. 선택한 Git 리포지토리로 코드를 푸시합니다(이 예에서는 사용자가 기본에 푸시한 것으로 가정함).

   ```
   git commit -am 'Added mary sandbox'
   git push origin main
   ```

1. 리포지토리 > *기본을* Amplify에 연결합니다.

1. Amplify 콘솔은 Amplify CLI에 의해 형성된 백엔드 환경을 감지합니다. 드롭다운에서 *새 환경 생성*을 선택하고 Amplify에 서비스 역할을 부여합니다. **저장 및 배포**를 선택합니다. 빌드가 완료된 후 *https://main.appid.amplifyapp.com*에서 사용 가능한 마스터 브랜치 배포를 받게 되고 새 백엔드 환경은 브랜치에 연결됩니다.

1. Amplify에서 *개발* 브랜치를 연결하고(이 시점에 *개발* 및 *기본* 브랜치가 동일한 것으로 가정함) *생성*을 선택합니다.