기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
부분 배치 응답 구현에 대한 모범 사례
이 섹션에서는 Amazon SQS 이벤트 소스에 대한 부분 배치 응답을 구성하는 모범 사례를 제공합니다.
-
서버리스 애플리케이션 아키텍처에서 snowball 방지 패턴 생성을 방지하도록 DLQ(Dead Letter Queue)를 구성합니다. 자세한 내용은 Snowball 안티 패턴 방지(을)를 참조하세요.
-
실패한 메시지만 표시하도록 Lambda 함수 이벤트 소스 매핑을 구성합니다. 이렇게 하려면 이벤트 소스 매핑을 구성할 때 FunctionResponseTypes 목록에 ReportBatchItemFailures를 추가합니다. FunctionResponseTypes Lambda 함수는 SQS에서 호출할 때 부분 배치 응답을 구현해야 합니다. 기본 제공 부분 AWS Lambda 배치 지원으로 SQS 메시지를 처리하는 배치 처리 유틸리티용 Powertools를 사용하는 것이 좋습니다.
배치 처리
-
SQS에서 호출하는 Lambda 함수에 부분 배치 응답을 구현합니다. AWS Lambda 배치 처리를 위한 Powertools 유틸리티를 사용하는 것이 좋습니다. 이 유틸리티는 내장된 부분 배치 응답 지원을 통해 SQS 메시지 처리를 처리합니다. 자세한 내용은 AWS Lambda 개발자 안내서의 Amazon SQS 트리거를 사용하여 Lambda 함수에 대한 배치 항목 실패 보고를 참조하세요.
AWS Lambda 배치 처리 유틸리티용 Powertools
멱등성
-
DLQ(Dead Letter Queue)로 이동되기 전에 메시지가 소스 대기열로 배달되는 횟수를 정의합니다. 가장 가능성이 높은 장애 원인과 예상 복구 시간을 식별하여 정의한 값이 애플리케이션의 사용 사례에 맞는지 확인합니다. 재시도 횟수를 정의하려면 소스 대기열의 RedrivePolicy에서 maxReceiveCount 값을 구성합니다. 자세한 내용은 Amazon SQS API Reference의 SetQueueAttributes를 참조하세요. 또한 소스 대기열에 Amazon Simple Queue Service 배달 못한 편지 대기열 리드라이브 소개를 참조하세요
. -
Lambda 코드가 멱등성이고 메시지를 여러 번 처리할 수 있는지 확인합니다. 멱등성을 구현하려면 Amazon SQS 배치 내의 개별 작업을 지원하도록 함수의 코드를 준비하는 Powertools for AWS Lambda Idempotency Utility를 사용하는 것이 좋습니다. 먼저 이벤트 소스 매핑에 ReportBatchItemFailures를 통합합니다. 자세한 내용은 AWS Lambda 개발자 안내서의 부분 배치 응답 구현 및 Amazon SQS 메시지가 Lambda 함수를 두 번 이상 호출하지 않도록 하려면 어떻게 해야 합니까?를 참조하세요.
AWS Lambda Idempotency 유틸리티용 Powertools
지표
-
함수에 비즈니스 지표를 통합하여 작업 세부 정보 및 실패한 작업을 추적하려면 임베디드 지표 형식으로 SQS 이벤트를 처리하는 동안 운영 및 비즈니스 지표를 내보내는 aws-embedded-metrics 또는 Powertools for AWS Lambda Metrics Utility를 사용하는 것이 좋습니다.
AWS Lambda 지표 유틸리티용 Powertools
-
First-In-First-Out(FIFO) 대기열을 사용하는 경우 함수는 첫 번째 실패 후 메시지 처리를 중단하고 실패한 메시지와 처리되지 않은 모든 메시지를 batchItemFailures로 반환해야 합니다. 이렇게 하면 대기열의 메시지 순서를 유지하는 데 도움이 됩니다.
참고
부분 배치 처리를 사용하는 애플리케이션의 전체 성능을 추적하려면 코드 수준 성능 추적이 필요합니다. 배치 처리가 구성된 후 Lambda 함수 호출은 일반적으로 처리 결과에 관계없이 성공합니다.
Snowball 안티 패턴 방지
Lambda와 Amazon SQS는 업스트림 마이크로서비스가 SQS 대기열에 쓰는 메시지를 제어할 수 없습니다. 처리할 수 없는 메시지가 있는 경우 별도의 배달 못한 편지 대기열이 구성되지 않은 한 Lambda는 처리되지 않은 메시지를 소스 SQS 대기열에 반환합니다. 그런 다음 처리되지 않은 메시지는 Lambda 함수에 의해 재시도됩니다. 배달 못한 편지 대기열이 없는 경우 Amazon SQS 대기열로 반환된 처리되지 않은 메시지 수가 결국 대기열의 유효한 메시지보다 많아집니다.
각 연속 Lambda 호출이 문제를 악화시키는 이러한 유형의 눈덩이 안티 패턴은 다음과 같은 문제를 일으킬 수 있습니다.
-
작업이 처리하는 데 평소보다 오래 걸리거나 전혀 처리되지 않기 때문에 사용자 경험이 좋지 않음
-
비용 증가 - Amazon SQS 대기열의 메시지 수와 메시지 재시도 횟수의 기하급수적 증가에 비례
-
애플리케이션의 Lambda 컴퓨팅 용량 감소 또는 AWS 계정 함수에 호출 요청에 대한 제한이 없는 경우
부분 배치 응답을 구성할 때 눈덩이 안티 패턴을 생성하지 않으려면 배달 못한 편지 대기열도 생성하는 것이 가장 좋습니다. 이 별도의 대기열에는 성공적으로 처리되지 않은 메시지가 저장되어 애플리케이션의 처리되지 않은 메시지 수명 주기를 더 잘 관리할 수 있습니다.
자세한 내용은 Amazon SQS 개발자 안내서의 Amazon SQS 콘솔을 사용하여 배달 못한 편지 대기열 구성을 참조하세요. Amazon SQS