Lambda durable functions

Lambda durable functions

AWS Lambda durable functions를 사용하면 중단에도 불구하고 안정적인 진행을 유지하면서 최대 1년 동안 실행할 수 있는 복원력 있는 다단계 애플리케이션과 AI 워크플로를 구축할 수 있어요. durable function이 실행될 때, 이 전체 수명 주기를 durable execution이라고 부릅니다. 이는 체크포인트로 진행 상황을 추적하고 재생(replay)을 통해 실패에서 자동으로 복구하는데, 처음부터 다시 실행하면서 완료된 작업은 건너뜁니다.

출처: AWS Lambda 개발자 안내서

본문

각 함수 안에서 durable operation을 기본 구성 요소로 사용합니다. 스텝(step)은 내장된 재시도와 진행 추적으로 비즈니스 로직을 실행하고, 대기(wait)는 컴퓨팅 비용이 발생하지 않고 실행을 일시 중단합니다. 그래서 사람이 개입하는 워크플로(human-in-the-loop)나 외부 의존성 폴링 같은 장기 실행 프로세스에 이상적입니다. 주문 처리, 마이크로서비스 조정, 에이전틱 AI 애플리케이션 오케스트레이션 등 어떤 일을 하든, durable function은 친숙한 프로그래밍 언어로 코드를 작성하면서 상태를 자동으로 유지하고 실패에서 복구합니다.

참고

이 가이드는 배포, 구성, 권한, 호출, 모니터링, 쿼터 같은 Lambda 서비스 주제를 다룹니다. SDK 프로그래밍 참조, 퀵스타트 튜토리얼, 언어별 가이드는 AWS Durable Execution SDK 개발자 안내서를 참고하세요.

주요 이점

자연스럽게 복원력 있는 코드 작성하기 — 친숙한 프로그래밍 구문으로 실패를 자동으로 처리하는 코드를 작성해요. 내장된 체크포인팅, 투명한 재시도, 자동 복구 덕분에 비즈니스 로직은 깔끔하고 집중된 상태를 유지합니다.

사용한 만큼만 비용 지불하기 — 대기(wait) 작업 중에는 함수가 컴퓨팅 요금이 부과되지 않고 일시 중단됩니다. 몇 시간이나 며칠을 기다리는 장기 실행 워크플로의 경우, 유휴 대기가 아니라 실제 처리 시간에 대해서만 비용을 지불해요.

운영 단순성 — Lambda의 서버리스 모델 덕분에 인프라를 관리하지 않고도 scale-to-zero를 포함한 자동 확장을 얻을 수 있습니다. durable function은 상태 관리, 재시도 로직, 실패 복구를 자동으로 처리해 운영 오버헤드를 줄입니다.

durable function을 언제 사용하나요

수명이 짧은 조정(Short-lived coordination) — 실패 시 자동 롤백으로 여러 서비스에 걸친 결제, 재고, 배송을 조정합니다. 검증, 결제 승인, 재고 할당, 이행을 거쳐 주문을 처리하며 완료를 보장합니다.

자신 있게 결제 처리하기 — 실패 중에도 트랜잭션 상태를 유지하고 재시도를 자동으로 처리하는 복원력 있는 결제 흐름을 구축합니다. 결제 제공자 간 다단계 승인, 사기 검사, 결제를 단계별 전체 감사 가능성과 함께 조정합니다.

안정적인 AI 워크플로 구축하기 — 실패 시 결정론적으로 처리되는 다단계 AI 워크플로를 만듭니다. 모델 호출을 연결하고, 인간 피드백을 통합하고, 장기 실행 작업을 처리합니다. 일시 중단 후 자동으로 재개되며 활성 실행 시간에 대해서만 비용을 지불합니다.

복잡한 주문 이행 오케스트레이션 — 내장된 복원력으로 재고, 결제, 배송, 알림 시스템에 걸친 주문 처리를 조정합니다. 부분 실패를 자동으로 처리하고, 중단에도 주문 상태를 보존하며, 컴퓨팅 리소스를 소모하지 않고 외부 이벤트를 효율적으로 기다립니다.

다단계 비즈니스 워크플로 자동화 — 며칠 또는 몇 주에 걸친 직원 온보딩, 대출 승인, 규정 준수 프로세스를 위한 안정적인 워크플로를 구축합니다. 인간 승인, 시스템 통합, 예약 작업에 걸쳐 워크플로 상태를 유지하면서 프로세스 상태와 기록을 완전히 가시적으로 제공합니다.

durable function은 Step Functions와 어떻게 다른가요

durable function과 Step Functions는 모두 자동 상태 관리 기능이 있는 워크플로 오케스트레이션을 제공합니다. 핵심 차이는 어디에서 실행되고 워크플로를 어떻게 정의하느냐입니다:

  • Durable functions: Lambda 내에서 실행되고, 표준 프로그래밍 언어를 사용하며, Lambda 환경 내에서 관리됩니다.
  • Step Functions: 독립형 서비스이며, 그래프 기반 DSL 또는 비주얼 디자이너를 사용하고, 완전 관리형으로 유지보수가 없습니다.

durable function은 워크플로가 비즈니스 로직과 밀접하게 결합되는 Lambda의 애플리케이션 개발에 이상적입니다. Step Functions는 비주얼 설계, 220개 이상의 서비스에 대한 네이티브 통합, 무유지보수 인프라가 필요한 AWS 서비스 전반의 워크플로 오케스트레이션에 탁월합니다.

자세한 비교는 durable function 또는 Step Functions를 참고하세요.

작동 방식

내부적으로 durable function은 사용자 정의 일시 중단 지점을 통해 진행을 추적하고 장기 실행 작업을 지원하는 체크포인트/재생 메커니즘을 사용하는 일반적인 Lambda 함수로, 흔히 durable execution이라고 합니다. 함수가 일시 중지나 중단 후 재개되면 시스템이 재생을 수행합니다. 재생 중에는 코드가 처음부터 실행되지만 완료된 체크포인트는 건너뛰고, 완료된 작업을 다시 실행하는 대신 저장된 결과를 사용합니다. 이 재생 메커니즘은 장기 실행을 가능하게 하면서 일관성을 보장합니다.

애플리케이션에서 이 체크포인트-재생 메커니즘을 활용하려면 Lambda가 durable execution SDK를 제공합니다. SDK는 체크포인트와 재생 관리의 복잡성을 추상화하고, 코드에서 사용하는 durable operation이라는 간단한 프리미티브를 노출합니다. SDK는 JavaScript, TypeScript, Python, Java에서 사용할 수 있으며 기존 Lambda 개발 워크플로와 원활하게 통합됩니다.

SDK를 사용하면 Lambda 이벤트 핸들러를 래핑하고, 그러면 이벤트와 함께 DurableContext를 제공받습니다. 이 컨텍스트는 스텝과 대기 같은 durable operation에 대한 접근을 제공합니다. 함수 로직을 평범한 순차 코드로 작성하지만, 서비스를 직접 호출하는 대신 해당 호출을 자동 체크포인팅과 재시도를 위한 스텝으로 감쌉니다. 실행을 일시 중단해야 할 때는 비용이 발생하지 않고 함수를 일시 중단하는 대기를 추가합니다. SDK는 상태 관리와 재생의 모든 복잡성을 백그라운드에서 처리하므로 코드는 깔끔하고 읽기 쉽게 유지됩니다.

다음 단계

더 알아보기 (Learn more)