새로운 AWS Lambda Durable Functions – 이것이 Step Functions를 대체할까?
Source: Dev.to
소개
서버리스 환경이 우리 발밑에서 뒤틀렸습니다. 2025년 12월에 AWS Lambda Durable Functions가 출시되면서, 아마존은 FaaS(Function as a Service) 초기부터 개발자들이 요구해 온 기능을 도입했습니다.
Durable Functions를 사용하면 익숙한 await 구문을 이용해 Lambda 코드 안에서 상태를 유지하는 장기 실행 워크플로를 작성할 수 있습니다. 실행을 며칠, 몇 주, 심지어 1년까지도 중단할 수 있으며, 유휴 컴퓨팅 비용을 지불하지 않고 로컬 상태를 그대로 유지한 채 재개할 수 있습니다.
가용성 – 현재 us-east-2 (Ohio) 리전에서만 독점적으로 제공되며, 전 세계 롤아웃은 2026년 2분기에 예정되어 있습니다.
배경: Lambda vs. Step Functions
AWS Lambda와 AWS Step Functions는 오랫동안 서버리스 아키텍처의 핵심이었습니다:
| 항목 | AWS Lambda | AWS Step Functions |
|---|---|---|
| 주요 역할 | 비즈니스 로직을 위한 순수 컴퓨팅 | 오케스트레이션 및 저코드 워크플로 정의 |
| 일반적인 사용 사례 | 작업을 수행하는 코드를 작성 | 여러 Lambda와 서비스들을 조정하는 상태 머신(ASL) 정의 |
| Step Functions가 해결한 과거 문제 | “Lambda가 Lambda를 호출”하는 안티패턴(취약, 디버깅 어려움, 비용 비쌈) | 관리형 상태 추적, 오류 처리, 재시도 |
Step Functions는 시각적 편집기를 통한 구성‑우선 접근 방식을 도입해, 비개발자나 운영팀도 코드를 작성하지 않고 S3 → DynamoDB → SQS와 같은 통합을 끌어다 놓기만 하면 되도록 했습니다.
Step Functions의 제한점
- 단계 간 무상태 – 컨텍스트를 유지하려면 큰 JSON 페이로드를 전달해야 함.
- 구성‑우선 장벽 – 디버깅을 위해 클라우드에 배포하고, 실행을 수행하고, 콘솔 로그를 확인하고, ASL JSON을 반복적으로 수정해야 하므로 피드백 루프가 느림.
기능 겹침
두 서비스는 이제 여러 기능을 공유합니다:
- 대기 비용 제로 – 최대 1년까지 실행을 일시 중지해도 유휴 컴퓨팅 비용이 발생하지 않음.
- 내장된 복원력 – 지수 백오프와 재시도를 포함한 자동 오류 처리.
- 상태 영속성 – 대기 또는 충돌 후 워크플로가 정확히 중단된 지점부터 재개됨.
사용성 및 개발 라이프사이클
AWS Lambda Durable Functions (코드‑우선)
- 표준 프로그래밍 구문(
if,for,try/catch) 사용. - 코드 내 대기 예시:
# Python example
await step.sleep('7 days')
- 로컬 디버깅 – Jest, Pytest 또는 선호하는 프레임워크로 단위 테스트; 내구성 단계 모킹; 로컬에서 브레이크포인트 설정.
- 라이브러리를 공유하고, 익숙한 소프트웨어 엔지니어링 패턴을 적용하며, 노트북(임시 AWS 자격 증명 사용)에서 전체 통합 테스트 실행 가능.
AWS Step Functions (구성‑우선)
- 시각적 가시성 – 엔지니어가 호출 시 상태 머신 그래프를 확인하고, 어느 상태가 실패했는지, 입력/출력 데이터를 콘솔에서 직접 검사 가능.
- 코드‑제로 통합 – SDK 호출 없이 AWS 서비스들을 연결(S3 → Transcribe → DynamoDB → SES)할 수 있음.
- 복잡한 비즈니스 로직보다 서비스 오케스트레이션이 주된 워크플로에 이상적.
가격 비교
| 서비스 | 청구 모델 | 주요 비용 요인 |
|---|---|---|
| Step Functions (Standard Workflows) | 1 M 상태 전환당 $25 | 전환 횟수(예: 루프) |
| Lambda Durable Functions | 요청 수 + 실행 시간 | 코드 실행 중 CPU 시간 |
예시: 고처리량 루프
워크플로: 작은 항목을 10,000번 처리하는 루프.
- Step Functions – 반복당 3개의 상태(Task, Choice, Wait) → 총 30,000 상태 전환. 전환 수에 따라 비용이 증가.
- Durable Functions – 루프 전체의 집계 컴퓨팅 시간에만 비용이 청구됨. 대기는 사실상 무료이므로 수천 번의 전환보다 저렴함.
예시: 장기 대기 + 단일 작업
워크플로: 6개월 대기 후 이메일 1통 전송.
- Step Functions – 전환이 몇 번만 발생하므로 매우 저렴.
- Durable Functions – 대기 중 컴퓨팅이 없으므로 역시 저렴하고 관리 오버헤드가 최소.
언제 어떤 서비스를 선택할까
| 관점 | 권장 서비스 |
|---|---|
| 개발자‑중심 (코드 재사용, 로컬 테스트, 복잡한 로직) | AWS Lambda Durable Functions |
| 운영/아키텍트‑중심 (시각적 모니터링, 저코드 서비스 오케스트레이션) | AWS Step Functions |
결론
AWS Lambda Durable Functions는 워크플로 오케스트레이션을 코드 안으로 끌어들여 강력한 로컬 디버깅과 컴퓨팅 집약적 루프에 대한 비용 이점을 제공합니다. AWS Step Functions는 시각적 가시성과 AWS 서비스 간의 코드‑제로 통합을 위한 최적의 솔루션으로 남아 있습니다.
- 개발자라면 – Durable Functions가 대부분의 요구를 충족시킬 가능성이 높습니다.
- 아키텍트나 운영팀이라면 – Step Functions는 서비스 연결 워크플로에 유용한 시각적 도구와 단순성을 계속 제공할 것입니다.
두 도구는 공존하며, 변화하는 서버리스 생태계에서 각각 고유한 사용 사례를 담당하게 될 것입니다.