- 사용자에게 할인, 선물등 쿠폰을 제공하는 서비스를 개발
- Maven Project
- Java 8
- Junit
- Swagger
- h2 database
- mybatis
- lombok
- 객체 지향의 기본 원리와 의미 있는 코드 작성
- 라이브러리 및 기능 추가 시 이유 있는 선택과 사용 목적 고려
- Junit을 사용하여 테스트 코드 작성
- batch Insert 기능을 이용한 대용량 데이터 처리
- 대용량 트래픽 환경을 고려하여 WAS의 Scale-out 구조로 개발
- 20만개 쿠폰 벌크 csv Import 기능 개발
- 조건 : 각각의 쿠폰은 만료기간이 존재하며, 쿠폰형식은 번호, 코드, 자릿수등 자유롭게 선택
- 랜덤한 코드의 쿠폰을 N개 생성하여 데이터베이스에 보관하는 API를 구현하세요.
- input : N
- 생성된 쿠폰중 하나를 사용자에게 지급하는 API를 구현하세요.
- output : 쿠폰번호(XXXXX-XXXXXX-XXXXXXXX)
- 사용자에게 지급된 쿠폰을 조회하는 API를 구현하세요.
- 지급된 쿠폰중 하나를 사용하는 API를 구현하세요. (쿠폰 재사용은 불가)
- input : 쿠폰번호
- 지급된 쿠폰중 하나를 사용 취소하는 API를 구현하세요. (취소된 쿠폰 재사용 가능)
- input : 쿠폰번호
- 발급된 쿠폰중 당일 만료된 전체 쿠폰 목록을 조회하는 API를 구현하세요.
- 100억개 이상 쿠폰 관리 저장 관리 가능하도록 구현할것
- 10만개 이상 벌크 csv Import 기능
- 대용량 트랙픽(TPS 10K 이상)을 고려한 시스템 구현
- coupon.7z 압축 파일 해제
- (윈도우 기준) 파일 경로 에서 실행 명령어 실행 (jre or jdk 필요)
- mvn test package 시 target 파일에 InitialData.txt 복사 해야 정상 구동 됩니다.
cd coupon
java -jar coupon-0.0.1-SNAPSHOT.jar
- url 접근시 swagger 를통해 API 확인
- http://localhost:8080/swagger-ui.html#/
- http://localhost:8080/h2-console/ 접속 후
- setting 값을 Generic h2 (embedded) 설정
- JDBC url 값을 jdbc:h2:~/coupon 접속 후 확인