본문 바로가기
토이프로젝트/선착순쿠폰발급

[선착순 쿠폰 발급 1편] 개요

by 무대포 개발자 2023. 3. 4.
728x90
반응형

source 는 Github 에 있습니다.

목차는 선착순 쿠폰 발급 에 있습니다.

[선착순 쿠폰 발급 1편] 개요

코틀린, Redis 공부를 위해 작성했습니다.

선착순 쿠폰 발급 제공 기능

  • 쿠폰을 제한된 개수만큼 발급해줘야 합니다.
  • 동시에 여러 사용자가 요청해도 쿠폰 발급이 되야 합니다.
  • 쿠폰 발급 시, 같은 사용자가 여러번 요청해도 1번만 발급됩니다.

시스템 구성도

  • 사용자가 쿠폰 발급을 요청하면, 쿠폰 발급 요청 서버 API 를 호출하게 됩니다.

  • 쿠폰 발급 요청 서버 API 에서는 Redis 와 통신을 합니다.

  • Redis 에 미리 쿠폰 ID 데이터를 만들어 놓습니다. 쿠폰 발급 요청이 들어오면 미리 생성된 쿠폰 ID 를 할당해줍니다.

  • 모니터링 하고 있다가 Redis 에 쿠폰 ID 가 전부 소진되면 Config 를 변경해 쿠폰 발급 요청을 막습니다. (버튼 비활성화 등)

  • 추후 백그라운드에서는 배치가 돌면서 redis 를 조회해서 쿠폰 발급이 된 User 에 대해 DB 처리를 해주는 flow 입니다.

요약

  • 사용자 요청이 들어오면 Redis 에 쿠폰 발급 요청 데이터를 만들어줍니다. (쿠폰 발급이 아니라 요청 데이터입니다) 추후 배치 같은 것을 돌려서 백그라운드로 해당 요청 데이터를 읽어들여서 DB 처리를 해줍니다.
  • 이렇게 설계를 한 이유는 여러 요청이 들어왔을 때, DB 처리까지 해주면 많은 부하가 걸릴 것이라 생각되서입니다. 앞단에서 Redis 로 쿠폰 발급 요청을 받아주고, 이 받아준 요청들을 추후 배치 같은 것을 돌려 DB 처리를 해준다면 DB 에 부담도 덜가고 더 많은 요청을 처리할 수 있을 것이라 생각했습니다.

system architecure

Reference

댓글