Security Ticket
수동 점검 프로세스를 디지털화한 웹 기반 관리 시스템
1. 프로젝트 요약
- 한 줄 정의: Excel·이메일 중심의 수동 프로세스 → 웹 기반 자동화 전환
- 팀 구성: BE 8명 (A팀 4명, B팀 4명), FE 3명
- 기간: 2025.04 ~ 2025.05 (2개월)
- 나의 역할: 백엔드 API 설계 및 사용자 관리 도메인 개발
- 코드 컨벤션 정의, 공통 응답 및 예외 처리 표준화 주도
- 팀 내 통합 API 규약 문서 작성 → BE/FE 협업 속도 및 구현 일관성 향상
- 핵심 성과: MyBatis 하이브리드 도입을 통한 복합 검색 최적화
2. 기술 스택 및 시스템 아키텍처
- 기술 스택: Java, Spring Boot 3, MySQL, Redis, Docker, GitLab, nginX
- GitLab, nginX: 폐쇄망 기반 온프레미스 + Nexus로 패키지 관리
- 구조: On-Premises 기반 개발/운영 존 분리 구조
ERD

3. 핵심 문제 해결 및 성과
Trouble 1. MyBatis 하이브리드 도입 및 EXISTS 서브쿼리를 통한 복합 검색 최적화
1) Problem
- 복합 조건 검색 시, JPA Specification 사용 시,
- 가독성 저하, 복잡한 쿼리 작성의 어려움, 쿼리 튜닝의 어려움 등 한계 발생
2) Action
MyBatis의 부분적 도입을 통한 성능 향상- 추가 1) choose 중첩 → OR 조건 통합을 통한 쿼리 재사용성 향상
- 추가 2) JOIN → EXISTS 서브쿼리 기반 카운팅을 통한 쿼리 최적화
3) Result
그래프

표
| 항목 | JPA Specification | MyBatis (최종) | 개선율 |
|---|---|---|---|
| 평균 응답시간 | 24.45ms | 15.51ms | 36.8% ↓ |
| 최대 응답시간 | 83.67ms | 54ms | 35% ↓ |
| 처리량 (TPS) | 221.77 | 273.34 | 23% ↑ |
- 평균 응답시간: 24.56ms → 15.51ms (36.8% 개선)
- 최대 응답시간: 473ms → 54ms (88.5% 단축)
- 처리량: 66.7 TPS → 273 TPS (약 3.9배 향상)
- 복합 검색 조건에서도 안정적인 응답 시간 유지
4) Deep Dive
- 상황에 따른 구조적 접근 경험 (MyBatis)
- 커스텀 세션 로그인 구조 설계 & 요구 사항 적용
- Spring Security 내부 동작 이해
4. 관련 블로그 포스팅
- Spring Boot에서 Session 인증을 커스텀하는 이유와 실전 구현 – 로그인 구조 설계 & 요구 사항 적용
- JPA vs MyBatis 성능 비교와 하이브리드 전략– 동적 쿼리에서 MyBatis를 통한 성능 향상