

# 코드형 인프라(IaC)와 함께 Lambda 사용
<a name="foundation-iac"></a>

Lambda 함수는 단독으로 실행되는 경우는 거의 없습니다. 대신 데이터베이스, 대기열, 스토리지 등의 다른 리소스와 함께 서버리스 애플리케이션의 일부를 구성하는 경우가 많습니다. [코드형 인프라(IaC)](https://aws.amazon.com/what-is/iac/)로 배포 프로세스를 자동화하여 많은 개별 AWS 리소스를 포함하는 전체 서버리스 애플리케이션을 빠르고 반복적으로 배포하고 업데이트할 수 있습니다. 이 접근법을 사용하면 개발 주기가 단축되고 구성 관리가 쉬워지며 리소스가 매번 같은 방식으로 배포될 수 있습니다.

## Lambda용 IaC 도구
<a name="foundation-iac-tools"></a>

**CloudFormation**  
CloudFormation은 AWS의 기본 IaC 서비스입니다. [YAML 또는 JSON 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)을 사용하여 Lambda 함수를 포함한 전체 AWS 인프라를 모델링하고 프로비저닝할 수 있습니다. CloudFormation은 AWS 리소스를 생성, 업데이트, 삭제하는 복잡한 작업을 처리합니다.

**AWS Serverless Application Model (AWS SAM)**  
AWS SAM은 CloudFormation을 기반으로 구축된 오픈 소스 프레임워크이며, 서버리스 애플리케이션을 정의하기 위한 간소화된 구문을 제공합니다. [AWS SAM 템플릿](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)을 사용하면 몇 줄의 YAML만으로 Lambda 함수, API, 데이터베이스, 이벤트 소스를 신속하게 프로비저닝할 수 있습니다.

**AWS Cloud Development Kit (AWS CDK)**  
CDK는 IaC에 대한 코드 우선 접근 방식입니다. TypeScript, JavaScript, Python, Java, C\#/.Net 또는 Go를 사용하여 Lambda 기반 아키텍처를 정의할 수 있습니다. 선호하는 언어를 선택하고 매개변수, 조건부, 루프, 구성 및 상속과 같은 프로그래밍 요소를 사용하여 인프라의 원하는 결과를 정의하세요. 그러면 CDK가 배포를 위한 기본 CloudFormation 템플릿을 생성합니다. CDK와 함께 Lambda를 사용하는 방법의 예는 [AWS CDK를 사용하여 Lambda 함수 배포](lambda-cdk-tutorial.md) 섹션을 참조하세요.

![AWS SAM 및 AWS CDK가 CloudFormation을 사용하여 AWS 리소스와 코드를 배포하는 방법을 보여주는 다이어그램](http://docs.aws.amazon.com/ko_kr/lambda/latest/dg/images/IaC_tools.png)


AWS는 또한 간단한 그래픽 인터페이스를 사용하여 IaC 템플릿을 개발하기 위한 AWS 인프라 컴포저이라는 서비스를 제공합니다. Infrastructure Composer를 사용하여 시각적 캔버스에서 AWS 서비스를 드래그, 그룹화 및 연결하여 애플리케이션 아키텍처를 설계합니다. 그런 다음 Infrastructure Composer는 디자인을 기반으로 응용 프로그램을 배포하는 데 사용할 수 있는 AWS SAM 템플릿 또는 CloudFormation 템플릿을 생성합니다.

아래 [AWS SAM 및 Infrastructure Composer에서 Lambda 함수 사용](foundation-iac-getting-started.md) 섹션에서는 Infrastructure Composer를 사용하여 기존 Lambda 함수를 기반으로 서버리스 애플리케이션을 위한 템플릿을 개발합니다.