쿠폰 발급을 api로 제공할 경우, client에서 쿠폰 발급 여부를 확인할 수 있는 방법 문의드립니다.
613
작성한 질문수 2
안녕하세요. 강의 잘 들었습니다.
강의 들으면서 궁금증이 생겼는데, 만약에 쿠폰 발급 기능을 API로 제공한다고 가정하면
client -> 쿠폰 발급 기능 API 호출이 이루어지고
쿠폰 발급 기능 API에서는 쿠폰 발급 여부를 확인하고 kafka로 produce하게 되는데, 이때는 실제로 쿠폰이 발급된 상태는 아닐 수도 있을 것으로 예상됩니다(실제 쿠폰이 발급되는 시점은 consumer에서 작업이 정상적으로 완료되어야하므로 트래픽이 많거나 하는 경우 시간차이가 더 심할 것으로 예상됩니다)
이러면 쿠폰 발급 기능 API에서 응답값은 어떤 값을 줘야할까요?
쿠폰 발급 여부에서 발급이 가능하다면 쿠폰 발급되는것은 확정이기 때문에 발급되었다는 정보?
쿠폰 발급 여부에서 발급이 가능하지만 추가적으로 polling해서 client 쪽에서 확인하도록 처리?
제가 생각했을땐 위의 2가지정도로 가능할 것 같은데 강사님 의견이 궁금합니다..! 감사합니다.
답변 2
0
안녕하세요 예예 님, 인프런 AI 인턴이에요.
쿠폰 발급 기능을 API로 제공할 때 쿠폰 발급 여부를 확인하는 방법에 대해 궁금한 점이 있으신군요. 제 생각을 공유해드리겠습니다.
쿠폰 발급 여부에서 발급이 가능하다면 쿠폰 발급된 것으로 응답하는 방법:
이 경우에는 쿠폰 발급 기능 API에서는 즉시 응답으로 쿠폰 발급 여부가 가능하다면 발급되었다는 정보를 전달할 수 있습니다. 이러한 방법은 쿠폰 발급과 발급 여부 확인의 동시성을 보장하고, 클라이언트에서 추가적인 서버 호출 없이 쿠폰 발급 여부를 확인할 수 있다는 장점이 있습니다.쿠폰 발급 여부에서 발급이 가능하지만 추가적으로 polling하여 확인하는 방법:
이 경우에는 쿠폰 발급 기능 API가 쿠폰 발급 여부 확인 후에는 클라이언트에게 쿠폰 발급이 완료되지 않았다는 정보를 응답합니다. 클라이언트는 이후 일정 시간마다 해당 API를 호출하여 쿠폰 발급 여부를 계속해서 확인할 수 있습니다. 이 방법은 쿠폰 발급이 실제로 완료된 시점을 알기 위해 추가적인 호출이 필요하지만, 트래픽이 많거나 지연이 발생할 경우에도 정확한 정보를 얻을 수 있다는 장점이 있습니다.
두 가지 방법 중에는 서비스 요구사항, 클라이언트 동작 방식, 시나리오에 따라 선택하시면 됩니다. 어떤 방법이 더 적합한지는 분석과 검토가 필요합니다. 감사합니다!
ApplyService와 Consumer서비스의 db공유?
0
54
2
consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.
0
72
1
쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?
0
83
2
흐름정리 제가 이해한게 맞나요?
0
70
2
안되서 스트레스 받아요
-2
108
2
프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!
0
182
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
224
2
마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??
0
274
2
안녕하세요 질문 있습니다!
0
293
1
쿠폰 발급 유저 흐름에 대한 질문
0
306
2
수량 조절에 대한 질문이 있습니다.
0
230
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





