

# 스택 배포 시간 이해
<a name="stack-deployment-time"></a>

스택을 생성, 업데이트 또는 삭제하면 CloudFormation은 템플릿에 정의된 각 리소스를 프로비저닝하고, 리소스가 트래픽을 처리할 준비가 되면 스택 작업이 완료되었음을 보고합니다. 이 주제에서는 CloudFormation이 스택을 프로비저닝하는 방식, 스택 작업에 소요되는 시간에 영향을 미치는 요인, 배포 시간을 단축하는 방법을 설명합니다.

**Topics**
+ [CloudFormation이 스택을 프로비저닝하는 방식](#how-cloudformation-provisions-a-stack)
+ [배포 시간에 영향을 미치는 요인](#what-affects-deployment-time)
+ [배포 시간을 단축하는 방법](#ways-to-shorten-deployment-time)
+ [관련 리소스](#stack-deployment-time-related-resources)

## CloudFormation이 스택을 프로비저닝하는 방식
<a name="how-cloudformation-provisions-a-stack"></a>

CloudFormation은 템플릿에 정의된 리소스 간의 종속성을 확인합니다. `Ref`, `Fn::GetAtt` 또는 `DependsOn`을 통해 다른 리소스를 참조하는 리소스는 참조 대상 리소스가 프로비저닝된 후에 프로비저닝됩니다. 서로 종속되지 않는 리소스는 병렬로 프로비저닝됩니다.

CloudFormation은 리소스 구성을 적용한 다음, 해당 리소스가 트래픽을 처리할 준비가 되었는지 확인합니다. 각 리소스가 준비되는 즉시 다음 단계로 진행하므로 종속 리소스의 프로비저닝을 가능한 한 일찍 시작할 수 있습니다. 따라서 종속성 체인이 긴 스택에서 가장 큰 개선 효과를 얻을 수 있습니다. 스택의 모든 리소스가 준비되면 CloudFormation은 스택 작업이 완료되었음을 보고합니다.

이 동작은 스택 작업에 자동으로 적용됩니다. 템플릿을 변경하거나 파라미터를 설정할 필요가 없습니다.

## 배포 시간에 영향을 미치는 요인
<a name="what-affects-deployment-time"></a>

종속성 체인  
서로 종속된 리소스 중 가장 긴 체인이 스택 작업에 필요한 최소 시간을 결정합니다. 해당 체인에 포함되지 않는 리소스는 병렬로 프로비저닝되며, 일반적으로 전체 소요 시간을 늘리지 않습니다.

준비되는 데 시간이 더 오래 걸리는 리소스  
Amazon RDS 데이터베이스 인스턴스, Elastic Load Balancing 로드 밸런서, NAT 게이트웨이 또는 Amazon CloudFront 배포와 같은 리소스가 포함된 워크로드는 배포 시간의 대부분을 해당 리소스가 트래픽을 처리할 준비가 될 때까지 기다리는 데 사용합니다.

리소스 속성을 참조하는 출력값  
스택 출력값이 예를 들어 `Fn::GetAtt`을 사용하여 리소스 속성을 참조하는 경우, CloudFormation은 스택 작업을 완료하기 전에 해당 속성값을 사용할 수 있을 때까지 기다립니다. 이 대기 시간으로 인해 작업 소요 시간이 늘어날 수 있습니다.

## 배포 시간을 단축하는 방법
<a name="ways-to-shorten-deployment-time"></a>
+ **개발 반복 작업에는 Express Mode를 사용합니다.** Express Mode는 CloudFormation이 리소스 구성을 적용하는 즉시 스택 작업을 완료하며, 리소스는 백그라운드에서 계속 준비됩니다. 자세한 내용은 [Express Mode](cloudformation-express-mode.md) 섹션을 참조하세요.
+ **변경 빈도에 따라 리소스를 그룹화합니다.** 데이터베이스처럼 준비되는 데 시간이 더 오래 걸리는 리소스는 자주 업데이트하는 리소스와 별도의 스택에 배치합니다. 그러면 자주 변경하는 스택을 업데이트할 때 준비 시간이 더 오래 걸리는 리소스는 포함되지 않습니다.
+ **불필요한 종속성을 제거합니다.** 한 리소스가 다른 리소스를 기다려야 하는 경우에만 `DependsOn`을 선언합니다. 종속성이 적을수록 CloudFormation은 더 많은 리소스를 병렬로 프로비저닝할 수 있습니다.
+ **필요한 경우에만 출력값에서 리소스 속성을 참조합니다.** 리소스 속성을 참조하는 출력값이 있으면 해당 값을 사용할 수 있을 때까지 스택 작업이 지연될 수 있습니다.

## 관련 리소스
<a name="stack-deployment-time-related-resources"></a>
+ [CloudFormation 작동 방식](cloudformation-overview.md)
+ [Express Mode](cloudformation-express-mode.md)
+ [변경 세트를 사용하여 CloudFormation 스택 업데이트](using-cfn-updating-stacks-changesets.md)