Skip to content

jh-01/ClassPath-Project

Repository files navigation

🏫 수강신청 서비스

1. 팀원 소개

팀장
김지현
유저
동시성 제어 및 테스트
CI/CD
k6 부하 테스트
팀원
고동원
강의
동시성 제어 및 테스트
k6 부하 테스트
팀원
이다인
수강신청
동시성 제어 및 테스트
팀원
임서연
공지사항
동시성 제어 및 테스트
캐싱
팀원
임태훈
인증·인가 (JWT)
동시성 제어 및 테스트
CI/CD

2. 프로젝트 개요.

개발 기간: 2025.07.07 ~ 2025.07.15

ClassPath는 Spring Boot 기반의 대학 수강신청 사이트입니다. 사용자는 강의 검색·조회 및 잔여 정원 확인, Redisson 분산 락을 통한 동시성 제어로 피크 타임에도 안정적인 성능을 제공합니다.

3. 주요 기술 스택

애플리케이션

인증 및 보안

데이터베이스

협업 도구

Slack Git GitHub Notion

4. 아키텍쳐

image

5. ERD

image

7. 트러블 슈팅 & 최적화 전략

1. 수강 신청 동시성 처리 (Redisson)

🔍 문제 원인

  • 여러 사용자가 동시에 수강신청 시 실제 생성된 수강신청 데이터 개수와 현재 수강 인원 데이터 간의 불일치 문제 발생
  • 단일 트랜잭션 내에서 INSERT(수강신청 레코드 생성)와 UPDATE(강의 현재 인원 갱신)를 연속 실행하면서 데드락 발생

💡 문제 해결

  • Redisson으로 분산 락 구현하여 동시성 문제 해결.

📈 도입 전후 비교

시나리오 : 50명 정원의 강의에 대해 200명이 한번에 요청

  • 도입 전: 동시 요청으로 인해 데이터 불일치 발생, 데드락 발생, 요청 실패율 증가.

image image

구분 표본 수 평균 (ms) 최소값 (ms) 최대값 (ms) p(90)(ms) p(95)(ms) 오류 %
HTTP 요청 200 656 138 973 910 926 95.0%

  • 도입 후: 동시성 제어에 성공하여 정확한 강의 인원 관리, 요청 실패율 0%.

image image

구분 표본 수 평균 (ms) 최소값 (ms) 최대값 (ms) p(90)(ms) p(95)(ms) 오류 %
HTTP 요청 200 1008 178 1720 1610 1980 0%

🌟 성능 개선 요약

  • 동시 요청 처리: 정확한 강의 수강 인원 유지.
  • 오류율: 95% → 0% (완전 제거)

2. 공지사항 조회수 캐싱 최적화 (Redis 캐시 활용)

🔍 문제 원인

  • 게시글 조회 시마다 DB에서 조회수를 즉시 증가시키면서 DB 부하 및 성능 저하 발생
  • 동시 다발적인 조회 요청 시 DB 업데이트 경합과 느린 응답 문제 발생

💡 문제 해결

  • Redis 캐시를 사용해 조회수 캐싱
  • 일정 시간 간격으로 캐시된 조회수를 DB에 일괄 업데이트하는 방식 도입
  • 캐시 TTL 및 스케줄러(@Scheduled)를 활용해 데이터 일관성 유지

📈 도입 전후 비교

시나리오 : 50명의 가상 사용자가 30초 동안 동시에 특정 공지사항 단일 조회 API를 반복 요청

  • 도입 전: 조회 요청 시마다 DB 업데이트 → 높은 부하, 응답 지연 및 데이터 경쟁 발생

image

구분 표본 수 평균 (ms) 최소값 (ms) 최대값 (s) p(90)(ms) p(95)(ms)
HTTP 요청 15839 141.87 6.83 2.59 199.43 222.47

  • 도입 후: 조회수 증가 요청은 Redis 캐시에 기록 → DB 부하 감소, 응답 속도 개선, 동시성 문제 완화

image

구분 표본 수 평균 (ms) 최소값 (ms) 최대값 (s) p(90)(ms) p(95)(ms)
HTTP 요청 26151 25.49 5.26 1.35 48.8 61.27

🌟 성능 개선 요약

  • 응답 속도 크게 향상: 평균 응답 시간이 약 82% 감소
  • 최대 응답 시간 단축: 최대 응답 시간이 절반 이상 감소
  • 90%, 95% 지연 시간(p90, p95) 대폭 개선: p(90) 199.43ms → 48.8ms, p(95) 222.47ms → 61.27ms
  • 처리량 증가: 캐시 적용 후 표본 수가 증가해 더 많은 요청을 처리 가능
  • 서비스 안정성 및 사용자 경험 개선: 빠른 응답과 부하 완화로 오류 및 지연 감소 기대

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages