

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

# CodeDeploy 주요 구성 요소
<a name="primary-components"></a>

서비스 작업을 시작하기 전에 CodeDeploy 배포 프로세스의 주요 구성 요소를 숙지해야 합니다.

**Topics**
+ [애플리케이션](#primary-components-application)
+ [컴퓨팅 플랫폼](#primary-components-compute-platform)
+ [배포 구성](#primary-components-deployment-configuration)
+ [배포 그룹](#primary-components-deployment-group)
+ [배포 유형](#primary-components-deployment-type)
+ [IAM 인스턴스 프로파일](#primary-components-iam-instance-profile)
+ [개정](#primary-components-revision)
+ [서비스 역할](#primary-components-service-role)
+ [대상 수정 버전](#primary-components-target-revision)
+ [기타 구성 요소](#primary-components-other-components)

## 애플리케이션
<a name="primary-components-application"></a>

*애플리케이션*은 배포할 애플리케이션을 식별할 수 있는 고유 이름입니다. CodeDeploy는 컨테이너 역할을 하는 이 이름을 사용하여 배포 중에 수정 버전, 배포 구성 및 배포 그룹의 올바른 조합을 참조하도록 합니다.

## 컴퓨팅 플랫폼
<a name="primary-components-compute-platform"></a>

*컴퓨팅 플랫폼*은 CodeDeploy가 애플리케이션을 배포하는 플랫폼입니다. 다음과 같은 세 가지 컴퓨팅 플랫폼이 있습니다.
+ **EC2/온프레미스**: 물리적 서버의 인스턴스를 설명합니다. Amazon EC2 클라우드 인스턴스나 온프레미스 서버 또는 둘 다일 수 있습니다. EC2/온프레미스 컴퓨팅 플랫폼을 사용하여 만든 애플리케이션은 실행 파일과 구성 파일, 이미지 및 기타 항목으로 구성될 수 있습니다.

  EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 배포에서는 인 플레이스 또는 블루/그린 배포 유형을 사용하여 인스턴스로 트래픽이 전송되는 방식을 관리합니다. 자세한 내용은 [CodeDeploy 배포 유형 개요](welcome.md#welcome-deployment-overview) 단원을 참조하십시오.
+ **AWS Lambda**: 업데이트된 버전의 Lambda 함수로 구성된 애플리케이션을 배포하는 데 사용됩니다.는 고가용성 컴퓨팅 구조로 구성된 서버리스 컴퓨팅 환경에서 Lambda 함수를 AWS Lambda 관리합니다. 컴퓨팅 리소스의 모든 관리는에서 수행합니다 AWS Lambda. 자세한 정보는 [서버리스 컴퓨팅 및 애플리케이션](https://aws.amazon.com/serverless/)을 참조하세요. AWS Lambda 및 Lambda 함수에 대한 자세한 내용은 섹션을 참조하세요[AWS Lambda](https://aws.amazon.com/lambda/).

  카나리(Canary), 선형(Linear) 또는 한 번에 모두(All-at-once) 구성을 선택하여 업데이트된 Lambda 함수 버전으로 트래픽을 전송하는 방식을 관리할 수 있습니다.
+ **Amazon ECS**: Amazon ECS 컨테이너화된 애플리케이션을 작업 세트로 배포하는 데 사용됩니다. CodeDeploy는 애플리케이션의 업데이트 버전을 새로운 대체 작업 세트로 설치하여 블루/그린 배포를 수행합니다. CodeDeploy는 프로덕션 트래픽을 원래 애플리케이션 작업 세트에서 대체 작업 세트로 다시 라우팅합니다. 배포가 성공하면 기존 작업 세트는 종료됩니다. Amazon ECS에 대한 자세한 내용은 [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)를 참조하세요.

  카나리(Canary), 선형(Linear) 또는 한번에 모두(All-at-once) 구성을 선택하여 배포 중 업데이트된 작업 세트로 트래픽을 전송하는 방식을 관리할 수 있습니다.

**참고**  
Amazon ECS 블루/그린 배포는CodeDeploy 및 CloudFormation모두를 통해 지원됩니다. 이러한 배포에 대한 세부 정보는 다음 단원에서 설명합니다.

## 배포 구성
<a name="primary-components-deployment-configuration"></a>

*배포 구성*이란 배포 중 CodeDeploy에서 사용하는 배포 규칙과 배포 성공 및 실패 조건 집합입니다. EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 배포의 경우, 해당 배포에 대해 정상 인스턴스의 최소 개수를 지정할 수 있습니다. 배포에서 AWS Lambda 또는 Amazon ECS 컴퓨팅 플랫폼을 사용하는 경우 업데이트된 Lambda 함수 또는 ECS 작업 세트로 트래픽이 라우팅되는 방법을 지정할 수 있습니다.

EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 배포에서 최소 정상 호스트 개수를 지정하는 방법은 [최소 정상 인스턴스 수 정보](instances-health.md#minimum-healthy-hosts) 단원을 참조하세요.

다음은 Lambda 또는 ECS 컴퓨팅 플랫폼을 사용하는 배포에서 트래픽을 라우팅하는 방식을 지정하는 배포 구성입니다.
+ **카나리(Canary)**: 트래픽이 두 증분으로 나뉘어 이동합니다. 첫 번째 증분에서 업데이트된 Lambda 함수 또는 ECS 태스크로 이동할 트래픽의 백분율 및 두 번째 증분에서 나머지 트래픽의 이동을 시작하기 전까지 간격(분)을 지정하는 사전 정의된 카나리(Canary) 옵션 중에서 선택할 수 있습니다.
+ **리니어(Linear)**: 트래픽이 동일한 증분 이동하며 각 증분 간에 시간 간격(분)이 동일합니다. 각 증분에서 이동할 트래픽 비율(%)과 각 증분 간의 시간 간격(분)을 지정하는 사전 정의된 선형 옵션에서 선택할 수 있습니다.
+ **한 번에 모두(All-at-once)**: 모든 트래픽이 원본 Lambda 함수 또는 ECS 태스크 집합에서 업데이트된 함수 또는 태스크 집합으로 전부 한꺼번에 이동합니다.

## 배포 그룹
<a name="primary-components-deployment-group"></a>

*배포 그룹*이란 개별 인스턴스 집합입니다. 배포 그룹에는 개별적으로 태그가 지정된 인스턴스, Amazon EC2 Auto Scaling 그룹의 Amazon EC2 인스턴스 또는 둘 다가 포함됩니다. Amazon EC2 인스턴스 태그에 대한 자세한 정보는 [콘솔을 사용한 태그 작업](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)을 참조하세요. 온프레미스 인스턴스에 대한 자세한 정보는 [CodeDeploy용 온프레미스 인스턴스 작업](instances-on-premises.md) 단원을 참조하세요. Amazon EC2 Auto Scaling에 대한 자세한 내용은 [Amazon EC2 Auto Scaling과 CodeDeploy 통합](integrations-aws-auto-scaling.md) 단원을 참조하세요.

## 배포 유형
<a name="primary-components-deployment-type"></a>

*배포 유형*이란 배포 그룹의 인스턴스에서 최신 애플리케이션 수정 버전을 사용 가능하게 만드는 방법입니다. 배포 유형에는 두 가지가 있습니다.
+ **현재 위치 배포**: 배포 그룹의 각 인스턴스에 있는 애플리케이션이 중지되고 최신 애플리케이션 개정 버전이 설치되며 애플리케이션의 새 버전이 시작되고 유효성이 검사됩니다. 로드 밸런서를 사용하면 배포가 진행될 때 각 인스턴스를 등록 취소한 후 배포가 완료된 후 서비스로 복원할 수 있습니다. EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 배포만 인 플레이스 배포를 사용할 수 있습니다. 현재 위치 배포에 대한 자세한 내용은 [인 플레이스 배포 개요](welcome.md#welcome-deployment-overview-in-place) 단원을 참조하세요.
+ **Blue/Green 배포**: 배포 동작은 사용하는 컴퓨팅 플랫폼에 따라 다릅니다.
  + **EC2/온프레미스 컴퓨팅 플랫폼에서의 블루/그린 배포**: 배포 그룹(원래 환경)의 인스턴스가 다음 단계를 거쳐 인스턴스의 다른 집합(대체 환경)으로 대체됩니다.
    + 인스턴스는 대체 환경을 위해 프로비저닝됩니다.
    + 최신 애플리케이션 수정은 대체 인스턴스에 설치됩니다.
    + 애플리케이션 테스트 및 시스템 검증과 같은 활동에 선택적 대기 시간이 발생합니다.
    + 대체 환경의 인스턴스가 하나 이상의 Elastic Load Balancing 로드 밸런서에 등록되고 트래픽이 이러한 인스턴스로 라우팅됩니다. 원래 환경의 인스턴스는 등록이 취소되고 종료되거나 다른 용도로 계속 실행될 수 있습니다.
**참고**  
EC2/온프레미스 컴퓨팅 플랫폼을 사용할 경우 블루/그린 배포는 Amazon EC2 인스턴스에서만 작동합니다.
  + ** AWS Lambda 또는 Amazon ECS 컴퓨팅 플랫폼의 블루/그린**: 트래픽은 **canary**, **선형** 또는 **all-at-once** 배포 구성에 따라 증분으로 이동합니다.
  + **블루/그린 배포: CloudFormation** CloudFormation 스택 업데이트의 일부로 트래픽이 현재 리소스에서 업데이트된 리소스로 이동합니다. 현재는 ECS 블루/그린 배포만 지원됩니다.

  블루/그린 배포에 대한 자세한 내용은 [블루/그린 배포 개요](welcome.md#welcome-deployment-overview-blue-green) 섹션을 참조하세요.

**참고**  
Amazon ECS 블루/그린 배포는CodeDeploy 및 CloudFormation모두를 통해 지원됩니다. 이러한 배포에 대한 세부 정보는 다음 단원에서 설명합니다.

## IAM 인스턴스 프로파일
<a name="primary-components-iam-instance-profile"></a>

*IAM 인스턴스 프로파일*이란 Amazon EC2 인스턴스에 연결하는 IAM 역할입니다. 이 프로파일에는 애플리케이션이 저장되는 Amazon S3 버킷 또는 GitHub 리포지토리에 액세스할 때 필요한 권한이 포함됩니다. 자세한 내용은 [4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기](getting-started-create-iam-instance-profile.md) 단원을 참조하십시오.

## 개정
<a name="primary-components-revision"></a>

*수정 버전*이란 애플리케이션의 버전입니다. AWS Lambda 배포 개정은 배포할 Lambda 함수에 대한 정보를 지정하는 YAML 또는 JSON 형식의 파일입니다. EC2/온프레미스 배포 개정은 소스 콘텐츠(소스 코드, 웹 페이지, 실행 파일 및 배포 스크립트)와 애플리케이션 사양 파일(AppSpec 파일)이 포함된 아카이브 파일입니다. AWS Lambda 개정은 Amazon S3 버킷에 저장할 수 있습니다. EC2/온프레미스 수정 버전은 Amazon S3 버킷 또는 GitHub 리포지토리에 저장됩니다. Amazon S3의 경우 수정 버전은 Amazon S3 객체 키 및 해당 ETag, 버전 또는 둘 다에 의해 고유하게 식별됩니다. GitHub의 경우 수정은 커밋 ID에 의해 고유하게 식별됩니다.

## 서비스 역할
<a name="primary-components-service-role"></a>

*서비스 역할은* AWS 리소스에 액세스할 수 있도록 AWS 서비스에 권한을 부여하는 IAM 역할입니다. 서비스 역할에 연결하는 정책에 따라 서비스가 액세스할 수 있는 AWS 리소스와 해당 리소스로 수행할 수 있는 작업이 결정됩니다. CodeDeploy의 경우 서비스 역할은 다음 작업에 사용됩니다.
+ 인스턴스에 적용된 태그 또는 인스턴스와 연결된 Amazon EC2 Auto Scaling 그룹 이름을 읽습니다. 이를 통해 CodeDeploy는 애플리케이션을 배포할 수 있는 인스턴스를 식별할 수 있습니다.
+ Amazon EC2 Auto Scaling 그룹 및 Elastic Load Balancing 로드 밸런서의 인스턴스에 대한 작업을 수행합니다.
+ 지정된 배포 또는 인스턴스 이벤트가 발생할 때 알림을 전송할 수 있도록 Amazon SNS 주제에 정보를 게시합니다.
+ CloudWatch 경보에 대한 정보를 검색하여 배포에 대한 경보 모니터링을 설정합니다.

자세한 내용은 [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md) 단원을 참조하십시오.

## 대상 수정 버전
<a name="primary-components-target-revision"></a>

*대상 수정 버전*이란 리포지토리에 업로드했고 배포 그룹의 인스턴스에 배포하려는 가장 최신 버전의 애플리케이션 수정 버전입니다. 다시 말해서, 애플리케이션 수정은 현재 배포를 위해 대상 지정됩니다. 또한 이 수정은 자동 배포를 위해 풀링되는 수정입니다.

## 기타 구성 요소
<a name="primary-components-other-components"></a>

CodeDeploy 워크플로의 다른 구성 요소에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [CodeDeploy 리포지토리 유형 선택](application-revisions-repository-type.md)
+  [CodeDeploy 배포](deployment-steps.md)
+  [CodeDeploy 애플리케이션 사양(AppSpec) 파일](application-specification-files.md)
+  [CodeDeploy 인스턴스 상태](instances-health.md)
+  [CodeDeploy 에이전트 작업](codedeploy-agent.md)
+  [CodeDeploy용 온프레미스 인스턴스 작업](instances-on-premises.md)