2025 백엔드 로드맵 시리즈 - 2편
실무 3년차 이상 개발자를 위한 퍼포먼스 개선 가이드
✅ 지금 이 성능으로 괜찮은가?
실서비스에서 사용자 수가 증가하거나 데이터가 누적되면 성능 문제가 불쑥 찾아온다.
그때 필요한 건 단순한 코드 리팩토링이 아니라 구조적이고 시스템 전반적인 튜닝 전략이다.
🧩 1. DB 튜닝, 알고 써야 한다
🔍 인덱스 전략
- 단일 vs 복합 인덱스 차이점 이해
- 자주 사용하는 쿼리에 대해 커버링 인덱스 설계
- 인덱스 너무 많으면 오히려 성능 저하 → 쿼리 로그 분석 필수
🧪 실행 계획 분석 (EXPLAIN)
- 쿼리 실행 전에
EXPLAIN으로 접근 방식 확인
Using index, Using temporary, Using filesort 여부 체크
🧷 트랜잭션 관리
- Isolation Level별 차이 이해 (
READ COMMITTED, REPEATABLE READ, 등)
- InnoDB의 락(lock) 구조 파악 (Gap Lock, Next-Key Lock 등)
⚡ 2. 캐싱 전략 수립
Redis 기반 캐시 도입
- 세션, 인기글, 메인화면 등 조회 빈도 높은 데이터부터 캐싱
- Spring에서
@Cacheable, @CacheEvict 적극 활용
캐시 전략 종류
| 전략 | 설명 |
|---|
| Cache Aside | 요청 시 캐시 없으면 DB 조회 후 저장 |
| Write Through | 쓰기 요청 시 캐시와 DB 동시 반영 |
| TTL 설정 | 유효기간 기반 자동 삭제 |
🌊 3. 대용량 트래픽 대응 설계
Lazy vs Eager 로딩
- JPA에서는 무심코 Eager 걸면 N+1 문제 유발됨
- 항상
fetch join, @EntityGraph 등으로 최적화 고려
읽기/쓰기 분리
- DB Replication 구조에서 Read Replica 적극 활용
- 조회는 슬레이브, 쓰기는 마스터로 나누기
배치 분리
- 실시간 처리 외에 비동기 + 배치 처리로 트래픽 분산
- 예: 정산, 통계, 리포트 생성 등
🧠 실전 팁
- 쿼리 튜닝은 모든 개발자 필수 역량
- 캐시는 만능이 아님 → 무작정 넣으면 오히려 데이터 불일치 리스크
- 장애가 터지기 전에 미리 대응 시나리오 구성해두기
📌 체크리스트
다음 편 예고:
🔐 3편 - 인증 인가와 보안, 어디까지 알고 있나요?
JWT, OAuth2, Spring Security 고급 설정과 실전 보안 점검 팁