AWS Lambda Durable Functions는 Lambda 함수만으로도 상태 유지 멀티스텝 워크플로우, 장기 실행 작업, AI 워크플로우를 구현할 수 있도록 하는 기능입니다. Durable Functions는 내구성 실행(durable execution) 모델을 제공하며, 기존 Lambda 함수와 동일한 개발 경험 안에서 상태 저장, 오류 복구, 자동 재시작 등을 처리합 니다.
Durable Functions란?
Durable Functions는 Lambda 함수 코드 안에서 워크플로우 상태를 자동 저장(checkpointing)하고, 지정한 지점에서 일시 중단(wait) 했다가 재개(resume) 할 수 있는 서버리스 실행 모델입니다. 워크플로우는 최대 1년까지 중단 가능하며, 중단 중에는 컴퓨팅 비용이 청구되지 않습니다.
Durable Functions는 다음과 같은 문제를 해결합니다.
- 수동 상태 저장 로직 없이 멀티스텝 로직 구현
- 외부 이벤트나 지연 대기 처리
- 오류 시 자동 복구 및 재시작
- AI 워크플로우 및 인간 승인 단계 처리
준비 단계
Lambda 함수 생성
- AWS 콘솔에서 Lambda > Functions > Create function을 선택합니다.
- Author from scratch를 선택하고, 함수 이름을 입력합니다.
- 런타임은 Node.js 22/24 또는 Python 3.13/3.14 중 하나를 선택합니다.
- Durable execution 옵션을 Enable로 설정합니다.
- 이 설정은 함수 생성 시점에만 활성화가 가능하며, 기존 함수에서 변경은 불가능합 니다.

이제 이 함수는 Durable Functions 실행 환경으로 준비되어 있습니다.
Durable 함수 코드 작성
Durable Functions를 작성하려면 AWS에서 제공하는 Durable Execution SDK를 사용합 니다. 이 SDK는 워크플로우의 상태를 체크포인트하고 재시작하는 메커니즘을 추상화합니다.
핵심 개념
- Steps: 중요한 비즈니스 로직 단계를 체크포인트로 감싸 실행
- Waits: 특정 이벤트나 시간 대기를 효율적으로 구현
- Callbacks: 외부 이벤트를 대기하고 처리
- Replay: 재시작 시 체크포인트만 재실행하고 이전 단계는 생략하며 상태를 보존
예제 코드
아래는 Durable Functions를 이용해 주문을 처리하고 승인 대기, 후속 처리를 하는 멀티스텝 워크플로우 코드 예시입니다.
Node.js 예시
import {
DurableContext,
withDurableExecution,
} from "@aws/durable-execution-sdk-js";
export const handler = withDurableExecution(
async (event, context: DurableContext) => {
// Step 1: 주문 검증 단계
const validation = await context.step(async (stepCtx) => {
stepCtx.logger.info(`Validate order: ${event.orderId}`);
return { orderId: event.orderId, valid: true };
});
if (!validation.valid) {
throw new Error("Invalid order");
}
// Step 2: 결제 처리
const payment = await context.step(async (stepCtx) => {
stepCtx.logger.info("Charging payment");
// 실제 결제 API 호출 로직 삽입
return { success: true };
});
if (!payment.success) {
throw new Error("Payment failed");
}
// Step 3: 외부 승인 대기
await context.wait({ seconds: 300 }); // 예: 5분 대기
// Step 4: 주문 완료 처리
const fulfillment = await context.step(async (stepCtx) => {
stepCtx.logger.info("Completing order");
return { status: "completed" };
});
return { orderId: event.orderId, ...fulfillment };
}
);
이 예제는 각 주요 단계에서 context.step()으로 구분된 체크포인트와, context.wait()를 통한 시간 기반 기다림을 포함합 니다.
Durable Functions 동작 원리
Durable Functions는 checkpoint-and-replay 모델로 동작합 니다.
- 함수 실행 중 “step”이 호출되면 해당 단계가 저장됩니다.
- Wait 또는 실패 이후 재시작이 필요한 경우, Lambda는 함수를 처음부터 다시 호출하지만 이전 단계는 재실행하지 않고 저장된 결과를 바로 반환합니다.
- 이 과정을 통해 장기 실행 및 장애 복구를 처리합니다.
이러한 구조 때문에 함수 로직은 반복 실행 시 동일한 결과가 나오는 결정론적 코드(deterministic code)로 작성하는 것이 중요합니다.
함수 호출 및 배포
버전과 Alias
Durable Functions는 고정된 코드 버전으로 실행되도록 권장됩 니다.
즉, Lambda 호출 시 버전 번호 또는 Alias를 명시해야 안정적으로 재시작이 가능합니다.
예시:
aws lambda invoke \
--function-name my-durable-function:1 \
--payload '{"orderId":"123"}' \
response.json
이벤트 소스 매핑
SQS, Kinesis, DynamoDB 스트림 등으로도 Durable Functions를 자동 실행하도록 설정할 수 있습니다.
운영 시 고려 사항
비용 최적화
Durable Functions는 대기 상태(wait) 동안 컴퓨팅 비용이 발생하지 않습니다.
즉, 외부 이벤트나 대기 시간 동안 비용 부담이 없으며, 실제 활성 실행 시간만 요금이 청구됩니다.
코드 설계
- 반복 재실행이 가능한 코드로 작성
- 외부 상태 호출은 step 내부에서 처리하도록 분리
- 불변 변수 및 회귀적 실행을 고려하여 설계
마무리
AWS Lambda Durable Functions는 추가 오케스트레이션 서비스 없이도 멀티스텝 애플리케이션과 AI 워크플로우를 코드로 직접 구성할 수 있는 강력한 기능입니다. 상태 자동 저장, 오류 복구, 장기 실행 지원, 대기 처리 비용 절감 등은 기존 Lambda 기반 서버리스 아키텍처의 부족했던 부분을 보완합니다. 실제 운영 환경에서도 step 기반 체크포인트와 wait/callback 패턴을 이용해 결제, 승인, AI 파이프라인 같은 복잡한 워크플로우를 단순 코드로 구현할 수 있습 니다.
'AWS' 카테고리의 다른 글
| [AWS] Lambda Managed Instances 구성 방법 가이드 (0) | 2025.12.14 |
|---|---|
| [AWS] Amazon EKS Capabilities 구성 방법 (1) | 2025.12.14 |
| [AWS] Amazon VPC IPAM과 Infoblox Universal IPAM 연동 자동 IP 할당 구성 가이드 (0) | 2025.12.13 |
| [AWS] Network Load Balancer( NLB ) 가중치 기반 대상 그룹 구성 방법 (0) | 2025.12.13 |
| [AWS] Cross-Region PrivateLink 구성 방법 (0) | 2025.12.11 |