Untitled.png

🚀 소개

클래스메이트는 항해99 백엔드 부트캠프에서 진행한 팀 프로젝트로, 대규모 사용자 요청 속에서도 안정적인 성능을 유지하는 수강신청 플랫폼을 목표로 개발되었습니다. 해당 프로젝트에서는 짧은 시간에 집중되는 트래픽 상황을 효과적으로 처리하기 위한 다양한 기술을 팀 단위로 논의하고 적용했습니다. 실제 상황을 가정한 부하 테스트와 모니터링 지표 분석을 통한 성능을 개선해보는 등, 실질적인 경험을 쌓을 수 있었습니다.

🛠️ 핵심 기능

(1) 기술 스택

Java 17, Spring Boot, Spring Data JPA, Spring Security, MySQL, Redis, ELK, AWS, GCP, Prometheus, Grafana, JMeter, Docker, Github Actions

(2) 아키텍처 및 ERD

image.png

스크린샷 2025-08-07 오전 3.28.52.png

(3) 주요 성과

🐞 트러블 슈팅

(1) DB 튜닝과 ELK 비교 도입으로 사용자 검색 경험 개선

당시 클래스메이트 서버는 MySQL의 LIKE 문법으로 결과 리스트를 반환하는 구조였고, JPA의 추상 메소드를 활용했습니다. 그러나 데이터가 100만 개 이상 쌓이면서 평균 응답 시간이 44초로 늘어나며 조회 성능이 떨어지고 Java 힙 메모리 초과 오류까지 발생했습니다.

문제 원인은 풀 테이블 스캔과 대량 메모리 로딩이었습니다. 그래서 커서 페이징과 검색 필드 인덱싱, 네이티브 쿼리를 적용해 처리량과 응답 속도를 1500배 개선했습니다. 하지만 이 방식은 ‘조사 생략’과 ‘일부 단어’ 같은 실제 사용자 검색 양상을 반영하지 못했습니다.