오늘의 집, 여기어때, 배달의 민족과 같은 할인 기능이 필요한 모든 서비스에서 쉽게 사용할 있는 할인 쿠폰 플랫폼을 위한 프로젝트입니다. 본 프로젝트의 할인 쿠폰 플랫폼을 사용하여, 판매 서비스는 손쉽게 쿠폰을 발행하고, 쿠폰을 적용한 상품의 가격을 응답받을 수 있습니다.
한정된 쿠폰이 나오면 많은 고객이 쿠폰을 받기 위해 몰려들 때 발생할 수 있는 문제를 고려하고, 다량의 트래픽을 효율적으로 처리하는 서버를 만드는 것이 본 프로젝트의 첫 번째 목표입니다.
본 프로젝트는 쿠폰 발행/사용에 대한 서비스에 집중하여 개발할 예정이며, 그에 따라 사용자 인가/인증 및 쿠폰 생성과 관련된 컴포넌트는 추후 개발 예정입니다.
- 객체를 지향하여 재사용성 및 유지보수에 용이한 코드 작성
- 요구사항을 충족하면서 문제를 발견 및 정의하고, 트레이드-오프를 고려하여 문제를 해결
- 다량의 트래픽으로 인한 수많은 트랜잭션에서의 데이터의 정확성과 일관성을 보장
- 성능 테스트를 통한 성능 개선
- Java 17
- Spring Boot
- JUint5
- MySQL
- JPA
- 부하 테스트 : nGrinder
- 성능 테스트 : pinpoint
- 동시성 이슈 : 데드락 발생 원인
- 동시성 이슈 : 이슈 해결을 위한 lock 선택
- 초기 응답 지연 이슈 : warm up
- 응답 지연 이슈 : connection-pool-size, index (TPS : 61.2 -> 179.3)
- Lock으로 인한 응답 지연 이슈 : Lock 경합 최소화 (TPS : 180.7 -> 220.3)
- 데이터소스 라우팅 이슈 : 어노테이션 기반 데이터소스 라우팅 어노테이션
본 프로젝트의 자세한 내용은 Wiki에서 확인할 수 있습니다.