인프런 커뮤니티 질문&답변

홍혁준님의 프로필 이미지

작성한 질문수

실습으로 배우는 선착순 이벤트 시스템

쿠폰을 발급하다가 에러가 발생하면 어떻게 하나요 ?

쿠폰 생성 에러 처리에 관해서 질문이 있습니다.

작성

·

23

0

안녕하세요 강사님 강의 잘 봤습니다.

덕분에 kafka와 redis를 어떤식으로 사용할 수 있는지 많은 걸 엿볼 수 있는 느낌이었습니다.

강의가 다 진행되고 난 후 궁금한 점이 하나 있습니다.

 

쿠폰 생성 에러 처리 관련되어서 질문이 있는데, 만약 메시지를 수신하는 쪽이 아니라 발송하는 쪽에서 문제가 생겼다면 어떻게 해야하나요?

 

예를들어 redis에서 increment로 수량에 대해서 가져왔지만, 만약 kafka에 메시지를 보내는 것이 실패 될 경우

reids에 있는 값을 다시 하나 줄여야할 것 같습니다.

 

이런 경우 try catch 블럭으로 처리를 하는 지? 아니면 다른 방식으로 예외처리 하는지 궁금합니다.

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

홍혁준님 안녕하세요.
해당건은 정책에 따라 다를것 같으며 구현방법은 여러가지가 있을것 같습니다.

말씀해주신대로 try catch 와 같은것을 사용하여 실패시 redis 에 있는값을 줄이는 방법이 있을수 있을것 같습니다.

다른 방법으로는 발송에 실패한 유저들을 따로 저장해두었다가 쿠폰발급을 해줄수도 있을것 같습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 홍혁준님께서 질문해주신 내용을 기반으로 유사한 질문과 답변을 찾아보았습니다.

질문의 핵심은 Redis에서 수량을 증가시킨 후 Kafka로 메시지 발송에 실패했을 때의 처리 방법에 관한 것이라고 생각합니다. 이러한 상황에서 직접적으로 관련된 기존 질문과 답변이 몇 가지 있습니다.

  1. “데이터베이스에 쿠폰 insert 실패시”
    이 답변에서는 Kafka 컨슈머가 쿠폰 저장 과정에서 실패 시에도 Redis 카운터를 조정해야 하는 상황을 다루고 있습니다. 주로 Dead Letter Queue를 사용해 페이지를 실패했을 때의 예외 처리를 소개하며, 운영자가 로그를 통해 문제를 인식하고 수동으로 조치를 취할 수 있는 방법을 설명합니다. Kafka 메시지 발행 실패 시에도 이러한 방식으로 Dead Letter Queue 또는 로그 시스템을 통해 후속 조치를 취할 수 있습니다.

  2. “이벤트 처리를 위한 여러가지 방식”
    Kafka와 같은 메시지 큐 시스템을 이용하여 API나 DB에 과도한 요청으로 인한 부하를 방지하고, 실패한 이벤트의 재처리에 대한 전략을 소개합니다. 이를 위한 방법으로 retry 전략과 별도의 에러 처리 토픽을 사용하는 방법을 권장합니다.

  3. “redis incr 로 동시성 제어”
    Redis의 incr 명령어를 이용한 동시성 제어와 관련한 내용입니다. Redis의 카운터를 유지하면서 불필요한 증가가 발생하지 않도록 하는 방법에 대해 설명하고 있습니다.

이러한 정보들을 바탕으로 Kafka 메시지 발송 실패 시의 처리 방법은 대부분 로그를 남기고, 실패한 이벤트에 대해 Dead Letter Queue를 구성하거나 수동 재발송을 고려할 수 있습니다. Redis 카운터와 시스템의 원자성 확보는 try-catch 블럭을 통해 임시적으로 처리할 수도 있지만, 무엇보다도 기본적인 아키텍처 레벨에서 이벤트 실패를 보완할 수 있는 지속적인 로그 또는 모니터링 시스템을 운영하는 것이 가장 효과적입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.