수량 조절에 대한 질문이 있습니다.
230
작성한 질문수 8
안녕하세요! 먼저 강의 잘 들었습니다. 좋은 강의 만들어주셔서 감사합니다.
해당 강의에서 쿠폰 수량 조절을 Redis로 진행을 하는데 이에 대해 근본적으로 궁금한 점과 전체적으로 제가 이해한 것이 맞는지 여쭙고 싶습니다.
쿠폰 재고의 동시성을 싱글스레드 기반인 Redis를 통해 100개까지 생성해준다. -> 여기서 X-lock을 사용하는 비관적락을 사용해도 문제가 없지 않나요? Redis를 사용했을 때 장점은 직접적인 DB락을 걸지 않아 데드락이나 다른 위험을 방지할 수 있다는 것인가요?(강의에는 해당되지 않지만) 동시성 제어를 위해 비관적락, 낙관적락(x), Redis를 통한 수량제어 이렇게 해볼 수 있을 거 같은데 언제 Redis를 선택할지 감이 잘 오지 않습니다.
강의에서 DB에 10,000개가 들어와서 서버 사용률이 높아졌는데, 결국 카프카로 보내 컨슈머들이 처리를 하게 된다면 똑같이 DB에는 10,000개의 부하가 오지 않나요? 단지 흐름 제어용이라고 보면 될까요? (카프카가 익숙하지 않습니다.)
쿠폰의 재고가 아닌 만약 사용자가 상품을 구매할 때에도 해당 강의에 내용을 적용해볼 수 있을 것 같습니다.
상품 구매할 때 중복 구매를 방지한다고 하면 Redis에 Set 키 값으로 [product:1(pid):member:1] 이런식으로 하면 마찬가지로 실수로 같은 사용자의 중복 결제도 막아볼 수 있을 것 같습니다! (의도라면 시간을 같이 넣어 조절해도 될 거 같아요) 잘 이해한게 맞을까요?
답변 2
0
이재윤님 안녕하세요.
1. X-lock 을 비관적으로 사용하고자 하려면 쿠폰의 개수에 대한 row 가 이미 존재해야 사용할 수 있습니다.
낙관적락도 동일합니다. redis 를 사용하면 row 가 존재하지 않더라도 사용할 수 있다는 장점이 있습니다.
속도가 굉장히 빠르다는 장점도 존재합니다.
부하를 분산시킬 수 있습니다. 중간에 카프카를 두지 않았다면 10000개의 요청이 바로 DB 로 가게 됩니다. 중간에 카프카를 일정 개수가 완료된 이후 요청을 보낼 수 있습니다.
이에 대해서는 카프카가 어떻게 동작하는지를 공부해보시면 도움되실것 같습니다.활용의 방법은 다양하지만 일부 상품에 한하여 중복구매를 방지하고자 한다면 말씀해주신 방법도 가능할 것 같습니다.
감사합니다.
다른 질문이 있으시다면 질문 남겨주세용!
0
안녕하세요, 인프런 AI 인턴입니다.
강의와 관련된 깊이 있는 질문 주셔서 감사합니다. 강의 내용에 대한 질문에 대해서는 직접 강사님께 더 자세한 답변을 요청하는 것이 좋을 것 같아요. 수강 전 문의 게시판을 통해 강사님께 연락을 시도해 보는 것을 추천드립니다.
질문하신 내용에 대해 제한적으로 답변드립니다:
Redis를 사용하는 주된 이유 중 하나는 높은 성능과 동시성 제어를 위해서입니다. 비관적 락을 사용할 경우, 데이터베이스 레벨에서 락을 걸게 되어 있어 시스템의 병목 현상이 발생할 가능성이 높아집니다. 반면, Redis는 메모리 기반의 데이터 저장소로 빠른 입출력이 가능하며, 싱글 스레드로 동작하기 때문에 복잡한 동시성 문제를 피할 수 있습니다. 상황에 따라 적합한 동시성 제어 방법을 선택하는 것이 중요합니다.
카프카를 사용하는 경우, 메시지 큐 시스템을 통해 비동기 처리를 할 수 있기 때문에 시스템의 부하를 분산시키는 효과가 있습니다. DB에 부하가 한 번에 몰리는 것을 방지하고, 메시지를 순차적으로 처리함으로써 시스템 전체의 안정성을 유지할 수 있습니다. 그래서 결국 DB에 10,000개의 요청이 들어가더라도 이를 효율적으로 관리할 수 있게 됩니다.
말씀하신 대로 Redis를 활용하여 사용자의 중복 구매를 방지하는 방법은 유효한 방안 중 하나입니다. 특정 키 값으로 사용자의 구매 요청을 관리하여 중복 요청을 효율적으로 필터링 할 수 있으며, 타임스탬프를 추가하여 제한 시간을 설정하는 것도 가능합니다. 이러한 접근 방식은 다양한 상황에서 유용하게 활용될 수 있습니다.
다시 한 번, 강의 내용에 대한 구체적인 부분은 직접 강사님 또는 관련 전문가에게 문의하는 것이 가장 정확한 정보를 얻는 방법이라는 점을 참고해주시기 바랍니다.
ApplyService와 Consumer서비스의 db공유?
0
54
2
consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.
0
72
1
쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?
0
83
2
흐름정리 제가 이해한게 맞나요?
0
70
2
안되서 스트레스 받아요
-2
108
2
프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!
0
181
2
Redis 활용하기 문제점 해결하기 부분이 이해가 잘 안됩니다...
0
212
1
카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.
0
167
2
키생성 방식에 따른 성능
0
165
2
사용자 동선에 대한 트랜잭션 문의
0
134
2
강사님 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다.
0
209
1
쿠폰 발급 개수 제한
0
181
2
ApplyService 의 총 처리 시간이 궁금합니다.
0
154
1
쿠폰 생성 에러 처리에 관해서 질문이 있습니다.
0
223
2
마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??
0
274
2
안녕하세요 질문 있습니다!
0
293
1
쿠폰 발급 유저 흐름에 대한 질문
0
306
2
kafka Producer 실행 중 에러 시 redis count 정합성 이슈
0
398
2
test 과정에서 오류가 발생합니다.
0
381
1
도커 환경설정에 대해서
0
267
2
Redis의 INCR 사용 해도 Race condition이 잡히지 않는 문제
0
593
1
consumer 모듈
0
321
2
카프카 토픽 생성오류
0
380
2
redis 를 사용하여 문제점 해결하기
0
370
2





