

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

# 코드형 인프라(IaC)
<a name="what-is-iac"></a>

코드형 인프라(IaC)를 사용하면 서버리스 애플리케이션을 포함한 AWS 리소스의 배포 및 관리를 자동화할 수 있습니다. IaC를 사용하면 코드를 사용하여 인프라를 정의할 수 있으므로 배포를 버전 관리, 공유 및 복제하기가 더 쉽습니다. 이 접근 방식은 다음과 같은 이점을 제공합니다.
+ 개발 주기 단축
+ 구성 관리 간소화
+ 배포의 안정성 및 일관성 향상

## AWS 서버리스 애플리케이션을 위한 IaC 도구
<a name="iac-tools-aws"></a>

AWS 는 클라우드 리소스를 빌드, 배포 및 관리하는 데 도움이 되는 여러 IaC 도구를 제공합니다. 이 섹션에서는가이 에코시스템에 얼마나 AWS SAM 적합하고 다른 AWS IaC 도구에서 어떻게 작동하는지 설명합니다.

**AWS CloudFormation**  
를 사용하면 YAML 또는 JSON 템플릿을 사용하여 전체 AWS 인프라를 모델링하고 프로비저닝[CloudFormation](https://aws.amazon.com/cloudformation/)할 수 있습니다.는 리소스 생성, 업데이트 및 삭제를 자동으로 CloudFormation 처리합니다. AWS SAM 애플리케이션을 배포할 때는 변환된 템플릿을 CloudFormation 처리하여 리소스를 생성하고 관리합니다.

**AWS Serverless Application Model (AWS SAM)**  
AWS SAM 를 사용하면 서버리스 리소스를 정의하기 위한 간소화된 구문으로 서버리스 애플리케이션을 구축할 수 있습니다. AWS SAM 템플릿을 사용하여 간결한 YAML 구문을 사용하여 Lambda 함수, APIs, 데이터베이스 및 이벤트 소스를 프로비저닝할 수 있습니다.는 배포 중에 이러한 템플릿을 CloudFormation 템플릿으로 AWS SAM 변환합니다.  
는 서버리스 애플리케이션을 AWS SAM 전문으로 하지만 AWS SAM 템플릿의 모든 CloudFormation 리소스 유형을 사용할 수 있습니다. 이를 통해 필요할 때 비서버리스 리소스를 유연하게 포함할 수 있습니다.

**AWS 클라우드 개발 키트(AWS CDK)**  
[AWS CDK](https://aws.amazon.com/cdk/)을(를) 사용하면 TypeScript, Python, Java, C\$1/.Net, 또는 Go와 같은 친숙한 프로그래밍 언어를 사용하여 서버리스 인프라를 정의할 수 있습니다. 루프 및 조건과 같은 프로그래밍 구문을 사용하여 인프라를 정의하고 배포용 CloudFormation 템플릿을 AWS CDK 생성할 수 있습니다. 를 AWS SAM CLI 사용하여 로 생성된 애플리케이션을 로컬에서 테스트하고 디버깅할 수 있습니다 AWS CDK. 자세한 내용은 [로컬에서 CDK 애플리케이션 테스트](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html)를 참조하세요.

## 서버리스 애플리케이션을 위한 IaC 도구 비교
<a name="comparing-iac-tools"></a>

서버리스 애플리케이션을 위한 IaC 도구를 선택할 때는 팀의 선호도, 프로젝트 요구 사항 및 기존 워크플로를 고려하세요. 다음 표에서는 서버리스 개발을 위한 AWS IaC 도구의 주요 특성을 비교합니다.


| **도구** | **프라이머리 사용** | **최적의 용도** | **에서 작동 AWS SAM** | **선택 시기** | 
| --- | --- | --- | --- | --- | 
| **CloudFormation** | 복잡한 AWS 인프라 관리 |  AWS 리소스를 세부적으로 제어해야 하는 애플리케이션 | AWS SAM 배포 중 템플릿이 CloudFormation 템플릿으로 변환됨 | 비서버리스 리소스에 대한 세밀한 제어의 경우 | 
| **AWS SAM** | 서버리스 애플리케이션 개발 | Lambda를 사용하여 서버리스 애플리케이션을 구축하는 팀 | 네이티브 기능 | Lambda 함수, API Gateway API 및 기타 서버리스 리소스로 구성된 서버리스 아키텍처에 주로 초점을 맞출 때 | 
| **AWS CDK** | 프로그래밍 언어를 사용한 인프라 정의 | 입력한 언어와 코드 우선 접근 방식을 선호하는 팀 |  AWS SAM 템플릿 생성 및 테스트에 사용 AWS SAM CLI  | 프로그래밍 방식의 인프라 정의 또는 복잡한 리소스 구성 로직이 필요할 때 | 

**참고**  
이 가이드에서는 AWS네이티브 IaC 도구를 중점적으로 다루지만 Terraform은 서버리스 애플리케이션을 정의하는 데 사용할 수 있는 또 다른 인기 있는 IaC 솔루션입니다. AWS SAM CLI은(는) Terraform에 정의된 Lambda 함수의 로컬 테스트를 지원합니다. 자세한 내용은 [AWS SAM CLI Terraform 지원](terraform-support.md) 단원을 참조하십시오.

## 자세히 알아보기
<a name="iac-learn-more"></a>
+ 의 DevOps 사례에 대한 자세한 내용은의 DevOps 소개를 AWS참조하세요. [ DevOps AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html)
+ 다양한 IaC 도구와 함께 Lambda를 사용하는 방법에 대한 자세한 내용은 [코드형 인프라(IaC)와 함께 Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html)을 참조하세요.