다섯 살도 알 수 있게 · SRE
데드레터 큐가 뭐예요?
데드레터 큐를, 자꾸 실패하는 주문서를 따로 빼 두는 작은 함 이야기로 풀어봤어요.
주문서 하나가 자꾸 실패해서 계속 다시 시도만 반복해요.재료 이름을 못 알아봐요.
왜: 고장난 주문서를 계속 재시도만 하면 줄 전체가 막혀요.뒤에 다 밀렸어요.
몇 번 실패한 주문서는 따로 빼 두고, 나머지는 계속 흐르게 해요.빼둔 건 사람이 나중에 봐요.
몇 번까지 다시 시도할지 정해요한도를 미리 정해둬요
넘으면 따로 빼요나머지 줄은 안 막혀요
빼둔 건 사람이 나중에 봐요자동으로 버려지지 않아요
왜 실패했는지 적어둬요다음에 고치기 쉬워져요
정상 바구니 옆에 작은 안 찾아간 함, ×3 재시도 후 이동.몇 번 더 시도해도 안 되면, 따로 빼서 사람이 보게 해요.
빼둔 함을 아무도 안 보면 버려지는 것과 같아요.누군가 정기적으로 확인해야 해요.
한 줄로
데드레터 큐 = 몇 번 다시 시도해도 안 되는 주문서를 따로 빼 두는 함. 나머지 줄은 막히지 않고 계속 흘러요.
재시도 횟수 상한을 정해두고, 그걸 넘은 메시지(포이즌 메시지)를 여기로 옮겨요. 빼둔 것 자체로 끝이 아니라, 알림을 연결해 사람이 보게 하고, 원인을 고친 뒤 재처리해야 해요. 다시 넣어도 안전하려면 멱등성이 필요해요.
어른들은 이렇게 불러요
- 데드레터 큐
Dead-letter Queue - 아무도 안 찾아간 바구니함. 자꾸 실패하는 메시지를 따로 빼 두는 곳이에요.
- 재시도 횟수 상한
Max Retry Count - 몇 번까지 다시 시도할지 미리 정한 숫자. 넘으면 데드레터 큐로 옮겨요.
- 메시지 큐
Message Queue - 주문서를 쌓아두는 바구니. → 주문서를 쌓아두는 바구니
- 포이즌 메시지
Poison Message - 계속 실패하는 메시지. 재시도 상한을 넘겨 데드레터 큐로 가요.
- 알림 연결
Alerting - 빼둔 함에 뭔가 쌓이면 사람에게 알리는 것. → 몇 번 울려야 진짜 비상인가
- 재처리
Reprocessing - 원인을 고친 뒤 다시 큐에 넣는 것. 무작정 다시 넣으면 또 실패할 수 있어요.
- 멱등성
Idempotency - 같은 걸 다시 넣어도 안전한 성질. 재처리할 때 꼭 필요해요. → 같은 티켓으로 두 번 못 타요
- 관측
Observability - 바구니와 함 안을 들여다보는 능력. → 세 가지로 들여다보기
다음 이야기
입구를 잠깐 막기 →