Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ljw1126/coupon-issue

Repository files navigation

선착순 쿠폰 발급 시스템

Quality Gate Status Duplicated Lines (%) Code Smells

프로젝트 목표

선착순 쿠폰 발급 시스템을 개발하며 동시성 제어, 부하 테스트 및 모니터링, 그리고 성능 개선 경험을 쌓는다.

  • Docker Compose를 활용해 부하 테스트 및 모니터링 환경 구축
  • 테스트 후 지표 기반으로 병목 구간 분석 및 성능 개선
  • 분산락, 로컬 캐시, Kafka를 단계적으로 도입하며 동시성 문제 해결 및 시스템 확장
  • 부가적으로 Testcontainers 및 다양한 오픈소스 도구 활용

요구사항

  1. 쿠폰은 유효 기간동안 발급이 가능하다.
  2. 쿠폰은 1인당 1장만 지급한다.
  3. 쿠폰의 최대 발급 수량을 초과해서는 안된다.

개발 스택

  • Infra: AWS EC2, RDS, ElasticCache, VPC, Subnet
  • Server: JDK 17, Spring Boot 3.x, JPA, QueryDsl, Kafka
  • Database: MySQL 8.0, H2, Redis
  • Monitoring: AWS CloudWatch, Spring Actuator, Prometheus, Grafana
  • Testing: JUnit5, Mockito, Locust, Apache JMeter, k6, Testcontainers
  • Etc: Docker, Gradle 8.1, SonarCloud, Git, Postman, Spring REST Docs, Swagger-UI

아키텍처

다이어그램


트러블 슈팅 및 성능 개선 과정

이슈 해결 방법 개선 효과
동시성 이슈 Redis 분산락 도입 동시 요청 처리 시 데이터 정합성 유지
RPS 성능 한계 Redis Lua Script 활용하여 원자적 연산 수행 - 네트워크 비용 감소 및 동시성 제어
- RPS 5.4배 향상
- 평균 응답 시간 26.7배 단축
Redis 부하 증가 로컬 캐시(Caffeine) 도입 Redis 부하 감소 및 RPS 1.33배 향상
트래픽 증가로 인한 Redis 부하 Kafka 도입하여 비동기 이벤트 처리 Redis 부하 감소 및 RPS 6.97% 향상

About

Redis, Kafka 활용한 선착순 쿠폰 발급 시스템

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /