Lambda 지속성 함수 모범 사례
지속성 함수는 기존 Lambda 함수와 다른 프로그래밍 관행이 필요한 재생 기반 실행 모델을 사용합니다. 지속성 워크플로 코드를 작성하고 테스트하는 방법에 대한 지침은 AWS 지속성 실행 SDK 개발자 안내서의 모범 사례를 참조하세요.
다음 권장 사항은 Lambda 지속성 함수를 배포, 간접 호출, 모니터링하기 위한 모범 사례입니다.
함수 버전 및 별칭
버전 번호 또는 별칭이 있는 함수를 간접 호출하여 실행을 특정 코드 버전에 고정합니다. 새 코드 버전이 이전 버전의 상태를 처리할 수 있어야 합니다. 재생이 중단되는 방식으로 단계의 이름을 바꾸거나 동작을 변경하지 않습니다.
모니터링
실행 ID 및 단계 이름을 포함하여 구조화된 로깅을 활성화합니다. 오류 발생률 및 실행 기간에 대한 CloudWatch 경보를 설정합니다. 추적을 사용하여 병목 현상을 식별합니다. 자세한 지침은 모니터링 및 디버깅을 참조하세요.
오류 처리
일시적 장애에 대한 재시도 전략을 구성하는 것 외에도 영구적으로 실패한 실행에서 발생하는 이벤트를 캡처하도록 내구성 함수에 Dead Letter Queue(DLQ)를 구성합니다. 비동기식 간접 호출 후 지속적 실행이 터미널 상태(FAILED, STOPPED 또는 TIMED_OUT)에 도달하면 Lambda는 원래 트리거 이벤트를 DLQ로 보냅니다. 이를 통해 실패한 이벤트 손실 없이 검사하고, 디버깅하고, 필요에 따라 재처리할 수 있습니다.
DLQ를 구성하려면 함수의 DeadLetterConfig 속성을 Amazon SQS 대기열이나 Amazon SNS 주제 ARN으로 설정합니다. 자세한 내용은 DLQ(Dead Letter Queue)를 참조하세요.
내구성 함수에서 오류를 처리할 때 다음 모범 사례를 따르세요.
-
비동기식 간접 호출을 위한 DLQ 구성 - 내구성 함수를 비동기식으로 간접 호출할 때는 항상 Dead Letter Queue(DLQ)를 연결합니다. 표준 Lambda 함수와 달리 지속적인 실행은 실패 시 자동으로 재시도되지 않으므로 DLQ는 영구적으로 실패한 실행을 초래한 이벤트를 캡처하기 위한 안전망입니다.
-
단계 내에서 재시도 전략 사용 - 일시적 장애에 대해 적절한 백오프를 사용하여 명시적 재시도 전략을 구성합니다. 재시도 구성 지침은 내구성 함수 재시도를 참조하세요.
-
DLQ와 EventBridge 알림 결합 - EventBridge 규칙을 사용하여 FAILED, STOPPED, TIMED_OUT 상태 변경 시 알림을 받아 실시간으로 상황을 파악하고, DLQ를 활용하여 추후 분석이나 재처리를 위해 원본 이벤트 페이로드를 보존합니다.
-
DLQ 깊이 모니터링 - DLQ의
ApproximateNumberOfMessagesVisible지표에 대한 CloudWatch 경보를 생성하여 장애가 누적되는 시기를 감지합니다.