

# Lambda 지속성 함수를 사용하여 주문 처리 시스템 생성
<a name="order-processing-app"></a>

**참고**  
필요: API Gateway, 지속성 함수 워크플로 및 지원 서비스(DynamoDB, EventBridge)를 보여주는 아키텍처 다이어그램 추가

## 사전 조건
<a name="order-processing-prerequisites"></a>
+ AWS CLI 설치 및 구성
+ 필요: 특정 지속성 함수 요구 사항

## 소스 코드 파일 생성
<a name="order-processing-source"></a>

프로젝트 디렉터리에 다음 파일을 생성합니다.
+ `lambda_function.py` - 함수 코드
+ `requirements.txt` - 종속성 매니페스트

### 함수 코드
<a name="order-processing-function-code"></a>

```
# NEED: Verify correct imports
import boto3
import json

def lambda_handler(event, context):
    # NEED: Verify DurableContext syntax
    durable = context.durable
    
    try:
        # Validate and store order
        order = await durable.step('validate', async () => {
            return validate_order(event['order'])
        })
        
        # Process payment
        # NEED: Verify wait syntax
        await durable.wait(/* wait configuration */)
        
        # Additional steps
        # NEED: Complete implementation
        
    except Exception as e:
        # NEED: Error handling patterns
        raise e

def validate_order(order_data):
    # NEED: Implementation
    pass
```

### 요구 사항 파일
<a name="order-processing-requirements"></a>

```
# NEED: List of required packages
```

## 앱 배포
<a name="order-processing-deploy"></a>

### 주문에 대한 DynamoDB 테이블 생성
<a name="order-processing-dynamodb"></a>

1. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)에서 DynamoDB 콘솔을 엽니다.

1. **테이블 생성** 선택

1. **테이블 이름**에 **Orders** 입력

1. **파티션 키**에 **orderId** 입력

1. 다른 설정은 기본값 유지

1. **테이블 생성** 선택

### Lambda 함수 생성
<a name="order-processing-lambda"></a>

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)에서 Lambda 콘솔 열기

1. **함수 생성** 선택

1. **새로 작성** 선택

1. **함수 이름**에 **ProcessOrder**을 입력합니다.

1. **런타임**에서 원하는 런타임 선택

1. 필요: 지속성 함수별 구성 추가

1. **함수 생성** 선택

### API Gateway 엔드포인트 생성
<a name="order-processing-apigateway"></a>

1. [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/)에서 API Gateway 콘솔 열기

1. **API 생성** 선택

1. **HTTP API** 선택

1. **빌드** 선택

1. Lambda 함수와의 통합 추가

1. 주문 처리 경로 구성

1. API 배포

## 앱 테스트
<a name="order-processing-test"></a>

테스트 주문을 제출합니다.

```
{
    "orderId": "12345",
    "items": [
        {
            "productId": "ABC123",
            "quantity": 1
        }
    ]
}
```

필요: 지속성 함수에 대한 특정 모니터링 지침 추가

## 다음 단계
<a name="order-processing-next-steps"></a>

### 비즈니스 로직 추가
<a name="order-processing-business-logic"></a>

재고 관리를 구현합니다.

```
async def check_inventory(order):
    # Add inventory check logic
    pass
```

가격 계산을 추가합니다.

```
async def calculate_total(order):
    # Add pricing logic
    pass
```

### 오류 처리 개선
<a name="order-processing-error-handling"></a>

보정 로직을 추가합니다.

```
async def reverse_payment(order):
    # Add payment reversal logic
    pass
```

주문 취소를 처리합니다.

```
async def cancel_order(order):
    # Add cancellation logic
    pass
```

### 외부 시스템 통합
<a name="order-processing-integrations"></a>

```
async def notify_shipping_provider(order):
    # Add shipping integration
    pass

async def send_customer_notification(order):
    # Add notification logic
    pass
```

### 모니터링 개선
<a name="order-processing-monitoring"></a>
+ CloudWatch 대시보드 생성
+ 주문 처리 시간 관련 지표 설정
+ 지연된 주문에 대한 알림 구성