지속성 실행 SDK
지속성 실행 SDK는 지속성 함수 빌드의 기반입니다. 진행 상태의 체크포인트를 지정하고, 재시도를 처리하고, 실행 흐름을 관리하기 위한 기본 요소를 제공합니다. SDK는 체크포인트 관리 및 재생의 복잡성을 추상화하여 자동으로 내결함성이 되는 순차적 코드를 작성할 수 있습니다.
SDK는 JavaScript, TypeScript, Python, Java에 대해 사용할 수 있습니다. 전체 API 설명서, 빠른 시작 자습서, 언어별 가이드는 AWS 지속성 실행 SDK 개발자 안내서를 참조하세요.
SDK가 수행하는 작업
체크포인트 관리: SDK는 함수가 지속성 작업을 실행할 때 체크포인트를 자동으로 생성합니다. 각 체크포인트에는 작업 유형, 입력 및 결과가 기록됩니다. 함수가 단계를 완료하면 SDK는 계속하기 전에 체크포인트를 유지합니다. 이를 통해 중단되더라도 완료된 작업에서 함수를 재개할 수 있습니다.
재생 조정: 일시 중지 또는 중단 후 함수가 재개되면 SDK가 재생을 수행합니다. 처음부터 코드를 실행하지만, 저장된 체크포인트 결과를 사용하여 완료된 작업을 다시 실행하지 않고 건너뜁니다. SDK는 재생이 결정론적으로 되도록 보장합니다. 입력 및 체크포인트 로그가 동일하면 함수가 동일한 결과를 생성합니다.
상태 격리: SDK는 비즈니스 로직과 별도로 실행 상태를 유지합니다. 각 지속성 실행에는 다른 실행이 액세스할 수 없는 자체 체크포인트 로그가 있습니다. SDK는 저장된 체크포인트 데이터를 암호화하고 재생 전반에서 상태를 일관적으로 유지합니다.
체크포인트 작동 방식 및 재생 동작에 대한 자세한 설명은 AWS 지속성 실행 SDK 개발자 안내서의 주요 개념를 참조하세요.
지속적인 작업
SDK는 함수에 DurableContext 객체를 제공합니다. 이 컨텍스트는 표준 Lambda 컨텍스트를 대체하고 체크포인트 생성, 실행 흐름 관리 및 외부 시스템과의 조정을 위한 방법을 제공합니다.
DurableContext는 지속성 워크플로를 빌드하기 위해 다음과 같은 작업을 제공합니다.
| 연산 | 설명 |
|---|---|
| 단계 | 구성 가능한 재시도 전략 및 실행 의미 체계를 사용하여 작업 단위를 실행하고 체크포인트합니다. |
| Wait | 컴퓨팅 리소스를 소비하지 않고 지정된 기간 동안 실행을 일시 중지합니다. |
| 조건 충족 대기 | 시도 사이에 자동 체크포인트 지정을 포함하는 조건에 대해 폴링합니다. |
| 콜백 | 실행을 일시 중지하고 외부 시스템이 Lambda API를 통해 입력을 제공할 때까지 기다립니다. |
| 간접 호출 | 다른 Lambda 함수를 호출하고 자동 체크포인트 지정과 함께 그 결과를 기다립니다. |
| Parallel | 구성 가능한 완료 정책을 사용하여 여러 작업을 동시에 실행합니다. |
| 지도 | 컬렉션의 각 항목을 선택적 동시성 제어와 함께 동시에 처리합니다. |
| 하위 컨텍스트 | 여러 작업을 그룹화하기 위한 격리된 실행 컨텍스트를 생성합니다. |
각각의 지속성 작업은 체크포인트를 자동으로 생성하므로 언제든지 함수를 재개할 수 있습니다. 자세한 API 참조, 코드 예제, 언어별 사용법은 AWS 지속성 실행SDK 개발자 안내서의 SDK 참조를 참조하세요.
지속성 작업 측정 방법
DurableContext를 통해 직접 호출하는 각각의 지속성 작업은 실행 진행 상황을 추적하고 상태 데이터를 저장하기 위해 체크포인트를 생성합니다. 이러한 작업에는 사용량에 따라 요금이 부과되고, 체크포인트에는 데이터 쓰기 및 보존 비용에 영향을 미치는 데이터가 포함될 수 있습니다. 저장된 데이터에는 간접 호출 이벤트 데이터, 단계에서 반환된 페이로드, 콜백 완료 시 전달된 데이터가 포함됩니다. 지속성 작업의 측정 방식을 이해하면 실행 비용을 추정하고 워크플로를 최적화하는 데 도움이 됩니다. 요금에 대한 자세한 내용은 Lambda 요금 페이지
페이로드 크기는 지속성 작업에서 유지되는 직렬화된 데이터의 크기를 나타냅니다. 데이터는 바이트 단위로 측정되고 크기는 작업에서 사용하는 직렬 변환기에 따라 달라질 수 있습니다. 작업의 페이로드는 성공적인 완료의 결과 자체이거나 작업이 실패한 경우 직렬화된 오류 객체일 수 있습니다.
기본 작업
기본 작업은 지속성 함수의 기본 구성 요소입니다.
| 연산 | 체크포인트 시점 | 작업 수 | 유지된 데이터 |
|---|---|---|---|
| Execution | 시작됨 | 1 | 입력 페이로드 크기 |
| Execution | 완료(성공/실패/중지) | 0 | 출력 페이로드 크기 |
| 단계 | 재시도/성공/실패 | 1 + N회 재시도 | 각 시도에서 반환된 페이로드 크기 |
| Wait | 시작됨 | 1 | 해당 사항 없음 |
| WaitForCondition | 각 폴링 시도 | 1 + N회 폴링 | 각 폴링 시도에서 반환된 페이로드 크기 |
| 간접 호출 수준 재시도 | 시작됨 | 1 | 오류 객체의 페이로드 |
콜백 작업
콜백 작업을 사용하면 함수가 일시 중지되고 외부 시스템에서 입력을 제공할 때까지 대기합니다. 이러한 작업은 콜백이 생성 및 완료될 때 체크포인트를 생성합니다.
| 연산 | 체크포인트 시점 | 작업 수 | 유지된 데이터 |
|---|---|---|---|
| CreateCallback | 시작됨 | 1 | 해당 사항 없음 |
| API 직접 호출을 통한 콜백 완료 | 완료됨 | 0 | 콜백 페이로드 |
| WaitForCallback | 시작됨 | 3 + N회 재시도(컨텍스트 + 콜백 + 단계) | 제출자 단계 시도로 반환된 페이로드와 콜백 페이로드 사본 2개 |
복합 작업
복합 작업은 여러 지속성 작업을 결합하여 병렬 실행, 배열 처리 및 중첩된 컨텍스트와 같은 복잡한 조정 패턴을 처리합니다.
| 연산 | 체크포인트 시점 | 작업 수 | 유지된 데이터 |
|---|---|---|---|
| Parallel | 시작됨 | 1 + N개 브랜치(상위 컨텍스트 1개 + 하위 컨텍스트 N개) | 각 브랜치에서 반환된 페이로드 크기의 복사본 최대 2개와 각 브랜치의 상태 |
| 지도 | 시작됨 | 1 + N개 브랜치(상위 컨텍스트 1개 + 하위 컨텍스트 N개) | 각 반복에서 반환된 페이로드 크기의 복사본 최대 2개와 각 반복의 상태 |
| promise 헬퍼 | 완료됨 | 1 | promise에서 반환된 페이로드 크기 |
| RunInChildContext | 성공/실패 | 1 | 하위 컨텍스트에서 반환된 페이로드 크기 |
runInChildContext의 컨텍스트나 복합 작업 내부에서 사용하는 컨텍스트의 경우 256KB 미만의 결과는 직접 체크포인트가 지정됩니다. 이보다 더 큰 결과는 저장되지 않고 컨텍스트의 작업을 다시 처리하여 재생 중에 재구성됩니다.