인프라를 코드로(Infrastructure as Code, IaC)와 함께 Lambda 사용하기
인프라를 코드로(Infrastructure as Code, IaC)와 함께 Lambda 사용하기 (Using Lambda with infrastructure as code, IaC)
Lambda 함수는 거의 단독으로 실행되지 않아요. 대신 데이터베이스, 큐, 스토리지 같은 다른 리소스와 함께 서버리스 애플리케이션의 일부를 이루는 경우가 많아요. 인프라를 코드로(IaC)를 쓰면 여러 개별 AWS 리소스를 포함하는 전체 서버리스 애플리케이션을 빠르고 반복 가능하게 배포·업데이트하는 배포 프로세스를 자동화할 수 있어요. 이 방식은 개발 주기를 빠르게 하고 구성 관리를 쉽게 하며, 리소스가 매번 같은 방식으로 배포되도록 보장해요.
Lambda용 IaC 도구
CloudFormation
CloudFormation은 AWS의 기반 IaC 서비스예요. YAML 또는 JSON 템플릿으로 Lambda 함수를 포함한 전체 AWS 인프라를 모델링하고 프로비저닝할 수 있어요. CloudFormation이 AWS 리소스를 만들고·업데이트하고·삭제하는 복잡성을 처리해요.
AWS Serverless Application Model(AWS SAM)
AWS SAM은 CloudFormation 위에 구축된 오픈소스 프레임워크예요. 서버리스 애플리케이션 정의를 위한 단순화된 문법을 제공해요. AWS SAM 템플릿으로 몇 줄의 YAML만으로 Lambda 함수, API, 데이터베이스, 이벤트 소스를 빠르게 프로비저닝할 수 있어요.
AWS Cloud Development Kit(AWS CDK)
CDK는 IaC에 대한 코드 우선(code-first) 접근 방식이에요. TypeScript, JavaScript, Python, Java, C#/.NET, Go로 Lambda 기반 아키텍처를 정의할 수 있어요. 선호하는 언어를 선택하고 파라미터, 조건문, 반복문, 합성, 상속 같은 프로그래밍 요소를 사용해 인프라의 목표 결과를 정의해요. 그러면 CDK가 배포용 기본 CloudFormation 템플릿을 생성해요. CDK로 Lambda를 사용하는 예시는 AWS CDK로 Lambda 함수 배포하기를 참고하세요.
AWS는 또한 간단한 그래픽 인터페이스로 IaC 템플릿을 개발하는 AWS Infrastructure Composer 서비스도 제공해요. Infrastructure Composer에서는 시각적 캔버스에서 AWS 서비스를 끌어다 놓고, 그룹화하고, 연결해 애플리케이션 아키텍처를 설계해요. 그러면 Infrastructure Composer가 설계에서 AWS SAM 템플릿이나 CloudFormation 템플릿을 만들어 애플리케이션을 배포할 수 있게 해줘요.
아래의 AWS SAM과 Infrastructure Composer에서 Lambda 함수 사용하기 섹션에서는 Infrastructure Composer로 기존 Lambda 함수를 기반으로 한 서버리스 애플리케이션용 템플릿을 개발해요.
본문
IaC의 핵심 가치는 "리소스를 사람이 재현 가능하게, 반복적으로 배포한다"는 점이에요. 어떤 AWS 계정·리전에 배포하든, 옆에서 실수로 만든 리소스가 아니라 템플릿이 정의한 그대로의 리소스가 만들어지죠. Lambda 기반 애플리케이션이 커질수록 함수 하나가 아니라 함수·큐·테이블·알림이 연결된 전체를 관리해야 하므로, CloudFormation / SAM / CDK 같은 도구가 자연스럽게 필요해져요.