내구성 실행 SDK(Durable Execution SDK)
내구성 실행 SDK(Durable Execution SDK)
내구성 실행 SDK는 내구성 함수(durable functions)를 구축하기 위한 기반이에요. 진행 상황을 체크포인트하고, 재시도를 처리하고, 실행 흐름을 관리하는 기본 요소(primitive)를 제공해요. SDK는 체크포인트 관리와 재생(replay)의 복잡성을 추상화해서, 자동으로 내결함성이 생기는 순차 코드를 작성할 수 있게 해줘요.
SDK는 JavaScript, TypeScript, Python, Java, C#(.NET)에서 사용할 수 있어요. 전체 API 문서, 빠른 시작 튜토리얼, 언어별 가이드는 AWS Durable Execution SDK 개발자 안내서를 참고하세요.
본문
SDK가 하는 일
체크포인트 관리: SDK는 함수가 내구성 작업을 실행할 때 체크포인트를 자동으로 만들어요. 각 체크포인트는 작업 유형, 입력, 결과를 기록해요. 함수가 단계를 완료하면 SDK는 계속하기 전에 체크포인트를 유지해요. 이렇게 하면 함수가 중단되더라도 완료된 작업부터 재개할 수 있어요.
재생 조정: 함수가 일시 중지나 중단 후 재개되면 SDK는 재생을 수행해요. 코드를 처음부터 실행하되 완료된 작업은 건너뛰고, 다시 실행하는 대신 저장된 체크포인트 결과를 사용해요. SDK는 재생이 결정적(deterministic)이도록 보장해요. 동일한 입력과 체크포인트 로그가 주어지면 함수는 동일한 결과를 만들어요.
상태 격리: SDK는 비즈니스 로직과 별도로 실행 상태를 유지해요. 각 내구성 실행에는 다른 실행이 접근할 수 없는 자체 체크포인트 로그가 있어요. SDK는 체크포인트 데이터를 저장 시 암호화하고 재생 전체에서 상태가 일관되게 유지되도록 보장해요.
체크포인팅 작동 방식과 재생 동작에 대한 자세한 설명은 AWS Durable Execution SDK 개발자 안내서의 핵심 개념(Key concepts)을 참고하세요.
내구성 작업(Durable operations)
SDK는 함수에 DurableContext 객체를 제공해요. 이 컨텍스트는 표준 Lambda 컨텍스트를 대체하며 체크포인트 생성, 실행 흐름 관리, 외부 시스템과의 조정을 위한 메서드를 제공해요.
DurableContext는 내구성 워크플로 구축을 위한 다음 작업을 제공해요.
| 작업 | 설명 |
|---|---|
| Step | 구성 가능한 재시도 전략과 실행 의미론으로 작업 단위를 실행하고 체크포인트해요. |
| Wait | 컴퓨팅 리소스를 소비하지 않고 지정된 기간 동안 실행을 일시 중지해요. |
| Wait for Condition | 시도 사이에 자동 체크포인팅으로 조건을 폴링해요. |
| Callback | 실행을 일시 중지하고 Lambda API를 통해 외부 시스템이 입력을 제공할 때까지 기다려요. |
| Invoke | 다른 Lambda 함수를 호출하고 자동 체크포인팅으로 결과를 기다려요. |
| Parallel | 구성 가능한 완료 정책으로 여러 작업을 동시에 실행해요. |
| Map | 선택적 동시성 제어로 컬렉션의 각 항목을 동시에 처리해요. |
| Child Context | 여러 작업을 그룹화하기 위한 격리된 실행 컨텍스트를 만들어요. |
각 내구성 작업은 체크포인트를 자동으로 생성해서 함수가 어떤 지점에서든 재개할 수 있도록 보장해요. 자세한 API 참조, 코드 예시, 언어별 사용법은 AWS Durable Execution SDK 개발자 안내서의 SDK 참조를 참고하세요.
내구성 작업이 계량되는 방식
DurableContext를 통해 호출하는 각 내구성 작업은 진행 상황을 추적하고 상태 데이터를 저장하기 위해 체크포인트를 생성해요. 이러한 작업은 사용량에 따라 요금이 발생하며, 체크포인트에는 데이터 쓰기·보존 비용에 기여하는 데이터가 포함될 수 있어요. 저장된 데이터에는 호출 이벤트 데이터, 단계에서 반환된 페이로드, 콜백 완료 시 전달된 데이터가 포함돼요. 내구성 작업이 계량되는 방식을 이해하면 실행 비용을 추정하고 워크플로를 최적화하는 데 도움이 돼요. 가격에 대한 자세한 내용은 Lambda 가격 페이지를 참고하세요.
페이로드 크기는 내구성 작업이 유지하는 직렬화된 데이터의 크기를 말해요. 데이터는 바이트 단위로 측정되며 크기는 작업이 사용하는 직렬 변환기에 따라 달라질 수 있어요. 작업의 페이로드는 성공 완료의 경우 결과 자체일 수 있고, 작업이 실패한 경우 직렬화된 오류 객체일 수 있어요.
기본 작업(Basic operations)
기본 작업은 내구성 함수의 기본 구성 요소예요.
| 작업 | 체크포인트 시점 | 작업 수 | 유지되는 데이터 |
|---|---|---|---|
| Execution | 시작됨 | 1 | 입력 페이로드 크기 |
| Execution | 완료됨(성공/실패/중지) | 0 | 출력 페이로드 크기 |
| Step | 재시도/성공/실패 | 1 + N회 재시도 | 각 시도에서 반환된 페이로드 크기 |
| Wait | 시작됨 | 1 | 해당 없음 |
| WaitForCondition | 각 폴링 시도 | 1 + N회 폴링 | 각 폴링 시도에서 반환된 페이로드 크기 |
| 호출 수준 재시도 | 시작됨 | 1 | 오류 객체 페이로드 |
콜백 작업(Callback operations)
콜백 작업을 사용하면 함수가 일시 중지하고 외부 시스템이 입력을 제공할 때까지 기다릴 수 있어요. 이러한 작업은 콜백이 생성될 때와 완료될 때 체크포인트를 만들고:
| 작업 | 체크포인트 시점 | 작업 수 | 유지되는 데이터 |
|---|---|---|---|
| CreateCallback | 시작됨 | 1 | 해당 없음 |
| API 호출을 통한 콜백 완료 | 완료됨 | 0 | 콜백 페이로드 |
| WaitForCallback | 시작됨 | 3 + N회 재시도(컨텍스트 + 콜백 + 단계) | 제출자 단계 시도가 반환한 페이로드 + 콜백 페이로드 사본 2개 |
복합 작업(Compound operations)
복합 작업은 여러 내구성 작업을 결합해서 병렬 실행, 배열 처리, 중첩 컨텍스트 같은 복잡한 조정 패턴을 처리해요.
| 작업 | 체크포인트 시점 | 작업 수 | 유지되는 데이터 |
|---|---|---|---|
| Parallel | 시작됨 | 1 + N개 분기(부모 컨텍스트 1 + 자식 컨텍스트 N개) | 각 분기에서 반환된 페이로드 크기 사본 최대 2개 + 각 분기의 상태 |
| Map | 시작됨 | 1 + N개 분기(부모 컨텍스트 1 + 자식 컨텍스트 N개) | 각 반복에서 반환된 페이로드 크기 사본 최대 2개 + 각 반복의 상태 |
| Promise 헬퍼 | 완료됨 | 1 | 프로미스에서 반환된 페이로드 크기 |
| RunInChildContext | 성공/실패 | 1 | 자식 컨텍스트에서 반환된 페이로드 크기 |
runInChildContext에서 오거나 복합 작업이 내부적으로 사용하는 컨텍스트처럼, 256KB보다 작은 결과는 직접 체크포인트돼요. 더 큰 결과는 저장되지 않아요. 대신 재생 중에 컨텍스트의 작업을 다시 처리해서 재구성돼요.
더 알아보기 (Learn more)
내구성 함수 시작하기는 Lambda 내구성 함수를, SDK API 문서는 AWS Durable Execution SDK 개발자 안내서를 참고하세요.