시리즈
3 posts
쿠폰 발급 (3) - 레디스 적용

레디스를 적용해보자 시나리오 1. Coupon 이 생성 될때, 발행갯수만큼 CouponTicket(userId가 null 상태)을 DB에 저장한다. 2. 쿠폰 발급, CouponTicket의 ID를 Redis에 쌓는다. 3. 쿠폰 배급 Redis에 쌓이 CouponTicket을 가져온다. 가져온 CouponTicket이 이미 userId가 정해져있는지 DB에 확인하고 정해져 있지 않다면 userId를 맵핑하고 저장한다. 쿠폰티켓 결과를 반환해준다. 구현 1. Coupon 이 생성 될때, 발행갯수만큼 CouponTicket(userId가 null 상태)을 DB에 저장한다. 2. 쿠폰 발급, CouponTicket의 ID를 Redis에 쌓는다. 여러 방법이 있겠지만, 스케쥴러를 적용해보기로 했다. 일정 갯수 이하일때 Redis에 쌓기. Redis 설정하기 스케쥴러 적용 1초에 한번씩 체크 2000개 이하일때 10000개씩 밀어 넣게 구현 3. 쿠폰 배급 Redis에 쌓이 CouponT…

May 23, 2023
시리즈
쿠폰 발급 (2) - 부하테스트

새로운 요구사항 팀장: 잘 구현 해주셨군요. 대략적인 쿠폰 발행에 대해 이해도가 높아진것 같네요. 서버로 이제 구현해주세요. 세팅하기 발급 서비스 동시 요청 테스트 오래걸리는 작업은 까지 나왔다. 좀 더 빨리 할 수 없을까? 고민이 되었다. 이미 발급이 종료되었다면 빠르게 리턴하면 좋지 않을까? 테스트 결과 로 절반 정도 시간이 단축되었다. 중간점검 쿠폰이 발급해야되는 양만큼 정확히 발급 테스트 완료 100ms 이하 처리 속도 테스트 완료 서버 부하 테스트를 위한 준비 컨트롤러 CouponTicket 또한 발급하고 데이터 베이스에 저장 코드를 추가하였다. 부하 테스트 API 부하 테스트를 진행하고자 한다. 부하 테스트는 응답시간만 간단하게 체크 할 것이기 떄문에, K6 부하 테스트를 활용한다. k6.io K6 테스트 스크립트 높은 트래픽에서의 속도만 측정할것이기 때문에 시간은 길게하지 않았다. 응답시간이 만족스럽지 않다. 어디에서 지연이 되는걸까? 아무래도 “CouponTic…

May 21, 2023
시리즈
쿠폰 발급 (1) - 로컬테스트

요구사항 팀장 : 다음주에 99% 할인 쿠폰 발행 행사를 하려고하는데, 다음주 까지 개발해주세요. 요구사항은 다음과 같습니다. 쿠폰은 최대 발행 갯수를 가지고 있습니다. 쿠폰은 발행 갯수 만큼 발급 할 수 있습니다. 쿠폰 발행 갯수 보다 쿠폰티켓을 초과 발급 할 수 없습니다. 대규모 트래픽에서도 쿠폰 발행 갯수를 초과해서는 안된다. 응답시간은 요청당 100ms이하로 한다. 정의 쿠폰 최대 발행 갯수를 가진다. 쿠폰티켓 발행된 갯수를 가진다. 쿠폰티켓 발행 갯수는 최대 발행 갯수를 초과 할 수 없다. 쿠폰 티켓 발행한 쿠폰이 존재한다. 쿠폰 티켓을 소유한 유저ID 를 가지고 있다. 도메인 우선 도메인 부터 파악해보고자 한다. 쿠폰은 쿠폰티켓을 발급 할 수 있다. 쿠폰 티켓이 발급될때 발급 카운터를 증가시킨다. 동시요청 호출에도 안전할까? 쿠폰 발행은 동시에 여러 요청이 들어올 수 있다. 이때 동시에 여러 요청이 들어오면 어떻게 될까? 동시요청 테스트 시나리오 100개 발급 제한 쿠…

May 20, 2023
시리즈