

# 지속성 실행 SDK
<a name="durable-execution-sdk"></a>

지속성 실행 SDK는 지속성 함수 빌드의 기반입니다. 진행 상태의 체크포인트를 지정하고, 재시도를 처리하고, 실행 흐름을 관리하기 위한 기본 요소를 제공합니다. SDK는 체크포인트 관리 및 재생의 복잡성을 추상화하여 자동으로 내결함성이 되는 순차적 코드를 작성할 수 있습니다.

SDK는 JavaScript, TypeScript, Python, Java에 대해 사용할 수 있습니다. 전체 API 설명서, 빠른 시작 자습서, 언어별 가이드는 [AWS 지속성 실행 SDK 개발자 안내서](https://docs.aws.amazon.com/durable-execution/)를 참조하세요.

## SDK가 수행하는 작업
<a name="durable-sdk-what-it-does"></a>

**체크포인트 관리:** SDK는 함수가 지속성 작업을 실행할 때 체크포인트를 자동으로 생성합니다. 각 체크포인트에는 작업 유형, 입력 및 결과가 기록됩니다. 함수가 단계를 완료하면 SDK는 계속하기 전에 체크포인트를 유지합니다. 이를 통해 중단되더라도 완료된 작업에서 함수를 재개할 수 있습니다.

**재생 조정:** 일시 중지 또는 중단 후 함수가 재개되면 SDK가 재생을 수행합니다. 처음부터 코드를 실행하지만, 저장된 체크포인트 결과를 사용하여 완료된 작업을 다시 실행하지 않고 건너뜁니다. SDK는 재생이 결정론적으로 되도록 보장합니다. 입력 및 체크포인트 로그가 동일하면 함수가 동일한 결과를 생성합니다.

**상태 격리:** SDK는 비즈니스 로직과 별도로 실행 상태를 유지합니다. 각 지속성 실행에는 다른 실행이 액세스할 수 없는 자체 체크포인트 로그가 있습니다. SDK는 저장된 체크포인트 데이터를 암호화하고 재생 전반에서 상태를 일관적으로 유지합니다.

체크포인트 작동 방식 및 재생 동작에 대한 자세한 설명은 AWS 지속성 실행 SDK 개발자 안내서의 [주요 개념](https://docs.aws.amazon.com/durable-execution/getting-started/key-concepts/)를 참조하세요.

## 지속적인 작업
<a name="durable-sdk-operations"></a>

SDK는 함수에 `DurableContext` 객체를 제공합니다. 이 컨텍스트는 표준 Lambda 컨텍스트를 대체하고 체크포인트 생성, 실행 흐름 관리 및 외부 시스템과의 조정을 위한 방법을 제공합니다.

`DurableContext`는 지속성 워크플로를 빌드하기 위해 다음과 같은 작업을 제공합니다.


| 연산 | 설명 | 
| --- | --- | 
| [단계](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/step/) | 구성 가능한 재시도 전략 및 실행 의미 체계를 사용하여 작업 단위를 실행하고 체크포인트합니다. | 
| [Wait](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/wait/) | 컴퓨팅 리소스를 소비하지 않고 지정된 기간 동안 실행을 일시 중지합니다. | 
| [조건 충족 대기](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/wait-for-condition/) | 시도 사이에 자동 체크포인트 지정을 포함하는 조건에 대해 폴링합니다. | 
| [콜백](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/callback/) | 실행을 일시 중지하고 외부 시스템이 Lambda API를 통해 입력을 제공할 때까지 기다립니다. | 
| [간접 호출](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/invoke/) | 다른 Lambda 함수를 호출하고 자동 체크포인트 지정과 함께 그 결과를 기다립니다. | 
| [Parallel](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/parallel/) | 구성 가능한 완료 정책을 사용하여 여러 작업을 동시에 실행합니다. | 
| [지도](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/map/) | 컬렉션의 각 항목을 선택적 동시성 제어와 함께 동시에 처리합니다. | 
| [하위 컨텍스트](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/child-context/) | 여러 작업을 그룹화하기 위한 격리된 실행 컨텍스트를 생성합니다. | 

각각의 지속성 작업은 체크포인트를 자동으로 생성하므로 언제든지 함수를 재개할 수 있습니다. 자세한 API 참조, 코드 예제, 언어별 사용법은 AWS 지속성 실행SDK 개발자 안내서의 [SDK 참조](https://docs.aws.amazon.com/durable-execution/sdk-reference/)를 참조하세요.

## 지속성 작업 측정 방법
<a name="durable-operations-checkpoint-consumption"></a>

`DurableContext`를 통해 직접 호출하는 각각의 지속성 작업은 실행 진행 상황을 추적하고 상태 데이터를 저장하기 위해 체크포인트를 생성합니다. 이러한 작업에는 사용량에 따라 요금이 부과되고, 체크포인트에는 데이터 쓰기 및 보존 비용에 영향을 미치는 데이터가 포함될 수 있습니다. 저장된 데이터에는 간접 호출 이벤트 데이터, 단계에서 반환된 페이로드, 콜백 완료 시 전달된 데이터가 포함됩니다. 지속성 작업의 측정 방식을 이해하면 실행 비용을 추정하고 워크플로를 최적화하는 데 도움이 됩니다. 요금에 대한 자세한 내용은 [Lambda 요금 페이지](https://aws.amazon.com/lambda/pricing/)를 참조하세요.

페이로드 크기는 지속성 작업에서 유지되는 직렬화된 데이터의 크기를 나타냅니다. 데이터는 바이트 단위로 측정되고 크기는 작업에서 사용하는 직렬 변환기에 따라 달라질 수 있습니다. 작업의 페이로드는 성공적인 완료의 결과 자체이거나 작업이 실패한 경우 직렬화된 오류 객체일 수 있습니다.

### 기본 작업
<a name="durable-operations-basic"></a>

기본 작업은 지속성 함수의 기본 구성 요소입니다.


| 연산 | 체크포인트 시점 | 작업 수 | 유지된 데이터 | 
| --- | --- | --- | --- | 
| Execution | 시작됨 | 1 | 입력 페이로드 크기 | 
| Execution | 완료(성공/실패/중지) | 0 | 출력 페이로드 크기 | 
| 단계 | 재시도/성공/실패 | 1 \+ N회 재시도 | 각 시도에서 반환된 페이로드 크기 | 
| Wait | 시작됨 | 1 | 해당 사항 없음 | 
| WaitForCondition | 각 폴링 시도 | 1 \+ N회 폴링 | 각 폴링 시도에서 반환된 페이로드 크기 | 
| 간접 호출 수준 재시도 | 시작됨 | 1 | 오류 객체의 페이로드 | 

### 콜백 작업
<a name="durable-operations-callbacks"></a>

콜백 작업을 사용하면 함수가 일시 중지되고 외부 시스템에서 입력을 제공할 때까지 대기합니다. 이러한 작업은 콜백이 생성 및 완료될 때 체크포인트를 생성합니다.


| 연산 | 체크포인트 시점 | 작업 수 | 유지된 데이터 | 
| --- | --- | --- | --- | 
| CreateCallback | 시작됨 | 1 | 해당 사항 없음 | 
| API 직접 호출을 통한 콜백 완료 | 완료됨 | 0 | 콜백 페이로드 | 
| WaitForCallback | 시작됨 | 3 \+ N회 재시도(컨텍스트 \+ 콜백 \+ 단계) | 제출자 단계 시도로 반환된 페이로드와 콜백 페이로드 사본 2개 | 

### 복합 작업
<a name="durable-operations-compound"></a>

복합 작업은 여러 지속성 작업을 결합하여 병렬 실행, 배열 처리 및 중첩된 컨텍스트와 같은 복잡한 조정 패턴을 처리합니다.


| 연산 | 체크포인트 시점 | 작업 수 | 유지된 데이터 | 
| --- | --- | --- | --- | 
| Parallel | 시작됨 | 1 \+ N개 브랜치(상위 컨텍스트 1개 \+ 하위 컨텍스트 N개) | 각 브랜치에서 반환된 페이로드 크기의 복사본 최대 2개와 각 브랜치의 상태 | 
| 지도 | 시작됨 | 1 \+ N개 브랜치(상위 컨텍스트 1개 \+ 하위 컨텍스트 N개) | 각 반복에서 반환된 페이로드 크기의 복사본 최대 2개와 각 반복의 상태 | 
| promise 헬퍼 | 완료됨 | 1 | promise에서 반환된 페이로드 크기 | 
| RunInChildContext | 성공/실패 | 1 | 하위 컨텍스트에서 반환된 페이로드 크기 | 

`runInChildContext`의 컨텍스트나 복합 작업 내부에서 사용하는 컨텍스트의 경우 256KB 미만의 결과는 직접 체크포인트가 지정됩니다. 이보다 더 큰 결과는 저장되지 않고 컨텍스트의 작업을 다시 처리하여 재생 중에 재구성됩니다.