본문으로 건너뛰기

[교육 내 팀 프로젝트]

Security Ticket

Excel·이메일 중심의 수동 보안 점검 프로세스를 웹 기반으로 전환한 관리 시스템

기간
2025.04 - 2025.05
팀 구성
BE 8인 / FE 3인
역할
사용자 관리 도메인 및 백엔드 API 설계
기술 스택
Java · Spring Boot · JPA · MyBatis · MySQL · Redis · Nginx · Docker

대표 성과

  • 복합 검색 쿼리 구조 개선 (평균 24.45ms → 16.85ms)

1. 시스템 아키텍처

  • 개발 환경: 폐쇄망 기반 온프레미스 환경에서 GitLab으로 소스를 관리하고 Nexus를 통해 의존성 패키지를 제공했습니다.
  • 배포 구조: 개발·스테이징 영역이 분리된 온프레미스 배포 환경에서 개발했습니다.
시스템 다이어그램
ERD시스템 다이어그램

2. 핵심 문제 해결 및 성과

Case 1. 조회 특성에 맞춘 JPA·MyBatis 하이브리드 전략

1) 문제 맥락

  • 복합 조건 검색에 JPA Specification을 사용하면서 가독성이 낮아지고, 복잡한 쿼리를 작성하거나 튜닝하기 어려워졌습니다.

2) 선택 기준과 구현

  • 복합 조회에만 MyBatis를 부분적으로 도입했습니다.
  • 추가 1) choose 중첩 → OR 조건을 통합해 쿼리 재사용성을 높였습니다.
  • 추가 2) JOIN → EXISTS 서브쿼리 기반 카운팅을 통해 쿼리를 최적화했습니다.

3) 검증 결과

항목JPA SpecificationMyBatis (최종)개선율
평균 응답시간24.45ms16.85ms31.1% ↓
최대 응답시간83.67ms54ms35%↓
처리량(TPS)55.7168.9023.7%↑

로컬 환경에서 동시 사용자 10명, 각 50회 요청으로 측정했으며, 동일한 데이터와 인덱스 조건을 유지했습니다.

  • 평균 응답시간:24.45ms → 16.85ms (31.1% 개선)으로 단축했습니다.

4) 설계 회고

  • 복합 조회를 MyBatis로 분리하고 COUNT 쿼리의 불필요한 JOIN을 EXISTS로 재구성한 결과, 동일한 로컬 테스트 조건에서 응답 시간을 줄였습니다.

3. 관련 블로그 포스팅