최근 전세계의 유행을 휩쓸고 있는 아이돌그룹 뉴삭스에서는 빌보트 차트 top10 진입을 기념하여 신상 굿즈 “빌보드 10 삭스” 양말을 출시하려고 한다.
해당 스페셜 양말은 매우 까다로운 제조 공정을 거치기 때문에 대량 생산이 불가능하고, 한정 수량만을 발매하여 선착순 예약을 받기로 한다.
기획사의 상품개발팀에서는 이전 굿즈를 출시하는 과정에서 트래픽 폭증으로 인한 주문내역 중복 이슈를 겪은 적이 있기 때문에 정확히 판매수량만큼 예약이 가능한 예약 시스템을 요구했다.
기획사의 요구를 받은 백엔드 개발자가 되어 문제를 해결해보자
- 이전 굿즈 판매 시스템에서의 문제 발생 원인과, 개선 방향을 조사하여 보고서를 제출해 주세요.
- 동시성 문제(공유자원, 임계영역)의 발생 원인과 해결방안
- Redis를 이용한 분산 락 처리방법
- Redis를 개발환경에 세팅하고, 프로젝트와 연동해 주세요.
- Redis 분산 락 처리를 이용해
CouponDecreaseService.couponDecrease
를 수정해주세요.- 테스트코드와 그외 클래스,패키지는 자유롭게 추가/수정해도 좋습니다.
- 하지만,
NewsocksApplicationTests
내의 테스트코드는 수정하지 말아주세요
- 대용량 트래픽 상황에서 빈번하게 발생하는 동시성 문제 에 대해 알아보고, 이를 해결하는 경험을 할 수 있어요.
- 레디스의 분산 락을 활용하는 경험을 할 수 있어요.
- 분산 서버 시스템을 고려한 설계를 경험해보고 싶은 개발자
- 레디스에 관심이 있어 제대로 활용해보고 싶은 개발자
- 해당 프로젝트는 JAVA 17 / Spring 3.0 버전으로 작성되어 있어요.
- JAVA / Spring 프레임워크에 대한 기본적인 지식이 필요해요
예약 신청이 완료되었습니다 / 수령 코드 : fkqehctgqn / (잔여 수량 : 96개)
예약 신청이 완료되었습니다 / 수령 코드 : glqfztmaam / (잔여 수량 : 96개)
예약 신청이 완료되었습니다 / 수령 코드 : yrrzajwjdu / (잔여 수량 : 96개)
예약 신청이 완료되었습니다 / 수령 코드 : tltqeqpugq / (잔여 수량 : 93개)
예약 신청이 완료되었습니다 / 수령 코드 : rfwyhterwm / (잔여 수량 : 92개)
...
예약 신청이 완료되었습니다 / 수령 코드 : mcgfekcrmk / (잔여 수량 : 2개)
예약 신청이 완료되었습니다 / 수령 코드 : gyepxabett / (잔여 수량 : 1개)
예약 신청이 완료되었습니다 / 수령 코드 : ryqzpbqfub / (잔여 수량 : 0개)
굿즈 구매 예약이 모두 마감되었습니다.
굿즈 구매 예약이 모두 마감되었습니다.
굿즈 구매 예약이 모두 마감되었습니다.
예약 신청이 완료되었습니다 / 수령 코드 : httgwmccjh / (잔여 수량 : 99개)
예약 신청이 완료되었습니다 / 수령 코드 : keklnkxnik / (잔여 수량 : 98개)
예약 신청이 완료되었습니다 / 수령 코드 : wcvveepcev / (잔여 수량 : 97개)
예약 신청이 완료되었습니다 / 수령 코드 : leeeaaipok / (잔여 수량 : 96개)
...
예약 신청이 완료되었습니다 / 수령 코드 : mcgfekcrmk / (잔여 수량 : 2개)
예약 신청이 완료되었습니다 / 수령 코드 : gyepxabett / (잔여 수량 : 1개)
예약 신청이 완료되었습니다 / 수령 코드 : ryqzpbqfub / (잔여 수량 : 0개)
굿즈 구매 예약이 모두 마감되었습니다.
굿즈 구매 예약이 모두 마감되었습니다.
굿즈 구매 예약이 모두 마감되었습니다.
- 미션 수행과 제출을 위해서는 다음 문서를 확인해주세요! LGTM 미션 수행 가이드
- pr 메시지를 잘 작성하면 리뷰어에게 더 좋은 피드백을 받을 수 있어요! 좋은 pr 메시지 작성하는법