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

iii님의 프로필 이미지

작성한 질문수

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

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

이벤트 처리를 위한 여러가지 방식

23.07.27 16:07 작성

·

650

0

안녕하세요 강사님! 강의 너무 잘 들었습니다. 강의를 다 듣고 몇가지 질문이 있어 이렇게 질문 드립니다.

  1. 카프카에 대해서 명확히 이해하지 못해서 그러는데 Consumer에서도 결국 토픽에서 가져와서 MySQL DB에 저장을 하는 방식인데, MySQL의 처리속도가 1분에 100개라고 한다면 100분이 걸리는 것은 동일한거 아닌가? 하는 궁금증이 들었습니다! 카프카를 사용하는 이유는 단순히 수많은 요청이 왔을 때 처리량을 조절해 DB가 다운되지 않도록 함인가요?

  2. 유명 연예인의 티켓팅 서비스 같은 경우처럼 좌석번호마다 다른 티켓으로 보는 경우는 어떤 방식을 사용하는게 맞는것인지 문득 궁금해졌습니다! 이전 동시성 강의처럼 Lock을 거는 방식을 사용하는 방식이 옳을지 아니면 이번 강의에서 Redis의 Set을 사용하여 좌석번호마다 좌석이 찼는지를 구별하는것이 옳을지, 아니면 또 다른 방법을 사용하는지 궁금합니다!

  3. 마지막에서 쿠폰을 발급하다가 에러가 발생하면 여러가지 방식이 있다고 하셨는데 또 어떤 방식이 있는지, 또한 그 방식이 현재 강사님께서 설명해주신 FailedEvent와 무슨 장단점 차이가 있는지가 궁금합니다!

답변 1

1

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

2023. 07. 29. 00:13

iii 님 안녕하세요.

  1. 말씀하신 의도가 맞습니다. 수많은 요청이 들어왔을때 처리량을 조절하여 서비스에 영향을 가지 않는것을 의도하였습니다.

  2. 저도 티켓팅같은 서비스는 개발을 해보지 않아서 정확하지 않을 수 있습니다만, 방법은 여러가지가 있을 수 있습니다.
    redis 를 활용하여 좌석을 key 로 잡고 lock 을 걸 수 있을 것 같습니다.
    그렇게된다면 동일한 좌석에 한해서는 중복으로 예매되는일이 없을 것 같습니다.

  3. 첫번째로는 retry 를 통해 재시도를 할 수 있을 것 같습니다.
    두번째로는 에러처리를 하는 별도의 토픽(A) 을 만들고 A 토픽을 컨슘하는 컨슈머에서 받아서 처리할 수 있을 것 같습니다. 자세한 내용은 kafka event error handling 전략을 보시면 좋을 것 같습니다.

감사합니다!

iii님의 프로필 이미지

작성한 질문수

질문하기