SQS + Lambda로 이벤트 소싱할경우 주의해야할 점
낮은 예약된 동시성 사용시 주의해야할 점
찾아보거나 알게된 배경
비동기 시스템 구성을 위해 서치하다가 알게 되었다.
요약
- 내부적으로 이벤트를 가져와서 람다를 호출하기 때문에, 동시성이 낮다면(1~30), SQS 메세지 타임아웃이 먼저 지나서, 해당 메세지가 다시 람다로 처리될 수 있다. ( 즉, 내부적으로 땡겨온 시간부터 타임아웃을 체크할테니 발생하는 문제로 보인다 )
- DLQ ( dead letter queue ) 를 사용한다면, 해당 큐로 넘어갈 수 있다.
- 해당부분을 해결하려면, 아래의 방법중 하나를 사용하면 된다.
- SQS 타임아웃을 Lambda 타임아웃보다 5~6배로 지정해서 써야한다
- DLQ 설정시, 재시도 횟수를 5이상으로 설정해줘야 한다.
참고자료
https://betterprogramming.pub/lambda-sqs-trigger-and-concurrency-87131dad9a12