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


당시 클래스메이트 서버는 MySQL의 LIKE 문법으로 결과 리스트를 반환하는 구조였고, JPA의 추상 메소드를 활용했습니다. 그러나 데이터가 100만 개 이상 쌓이면서 평균 응답 시간이 44초로 늘어나며 조회 성능이 떨어지고 Java 힙 메모리 초과 오류까지 발생했습니다.
문제 원인은 풀 테이블 스캔과 대량 메모리 로딩이었습니다. 그래서 커서 페이징과 검색 필드 인덱싱, 네이티브 쿼리를 적용해 처리량과 응답 속도를 1500배 개선했습니다. 하지만 이 방식은 ‘조사 생략’과 ‘일부 단어’ 같은 실제 사용자 검색 양상을 반영하지 못했습니다.