본문 바로가기

토이프로젝트/선착순쿠폰발급4

[선착순 쿠폰 발급 4편] 동시 요청 테스트 source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 4편] 동시 요청 테스트 코틀린, Redis 공부를 위해 작성했습니다. 동시 요청 테스트 동시 요청을 하여 쿠폰 발급이 제대로 처리돼는지 확인할려고 테스트를 진행했습니다. 사용한 테스트 툴은 K6 을 사용했으며, 해당 툴을 사용한 이유는 코드로 테스트 시나리오를 만들기가 편하기 때문입니다. 다른 툴들을 사용해봤는데 테스트 시나리오가 조금 복잡해지면 사용하기 어렵다는 점이 있었습니다. Redis 더미 데이터 생성 실행 방법 앞에서 쿠폰을 미리 발급하고 쿠폰 발급 요청을 진행해야하니 Redis 에 미리 더미 데이터를 만드는 프로그램을 만들었습니다. redis jedis 를 사용했습니다. main 을 실행시키.. 2023. 3. 27.
[선착순 쿠폰 발급 3편] API 설명 source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 3편] API 설명 코틀린, Redis 공부를 위해 작성했습니다. API 설명 쿠폰 발급 요청을 해주는 API 에 대해 간단히 정리했습니다. Controller Source @RestController class CouponIssuanceController( val couponIssuanceService: CouponIssuanceService ) { @PostMapping("api/v1/coupon/issuance/request") fun requestCouponIssuance( @RequestBody request: CouponIssuanceDto.CouponIssuanceRequest ): ApiR.. 2023. 3. 27.
[선착순 쿠폰 발급 2편] Redis 자료 구조 설계 (lua script) source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 2편] Redis 자료 구조 설계 (lua script) 코틀린, Redis 공부를 위해 작성했습니다. 쿠폰 발급 요청 처리 FLOW 쿠폰 발급 요청 처리 FLOW 는 다음과 같습니다. Redis 자료 구조 설계 쿠폰 발급 요청이 들어왔을 때 DB 처리 부하를 줄이기 위해 Redis 자료구조를 사용하여 한 번에 처리하지 않고 앞단에 Redis를 두기로 결정했습니다. 또한, 여러 단계로 이뤄지는 쿠폰 ID 발급 과정에서 동시성 처리 문제를 해결하기 위해 lua script를 사용하여 처리합니다. Redis 자료구조를 설계하는 두 가지 방법은 다음과 같습니다. Redis 에 한정된 쿠폰 데이터를 미리 생성해.. 2023. 3. 18.
[선착순 쿠폰 발급 1편] 개요 source 는 Github 에 있습니다. 목차는 선착순 쿠폰 발급 에 있습니다. [선착순 쿠폰 발급 1편] 개요 코틀린, Redis 공부를 위해 작성했습니다. 선착순 쿠폰 발급 제공 기능 쿠폰을 제한된 개수만큼 발급해줘야 합니다. 동시에 여러 사용자가 요청해도 쿠폰 발급이 되야 합니다. 쿠폰 발급 시, 같은 사용자가 여러번 요청해도 1번만 발급됩니다. 시스템 구성도 사용자가 쿠폰 발급을 요청하면, 쿠폰 발급 요청 서버 API 를 호출하게 됩니다. 쿠폰 발급 요청 서버 API 에서는 Redis 와 통신을 합니다. Redis 에 미리 쿠폰 ID 데이터를 만들어 놓습니다. 쿠폰 발급 요청이 들어오면 미리 생성된 쿠폰 ID 를 할당해줍니다. 모니터링 하고 있다가 Redis 에 쿠폰 ID 가 전부 소진되면 Co.. 2023. 3. 4.