⚙️ 백엔드 실무 성능 최적화 전략 - 2편

개발자·2025년 4월 2일
post-thumbnail

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 적극 활용
  • 조회는 슬레이브, 쓰기는 마스터로 나누기

배치 분리

  • 실시간 처리 외에 비동기 + 배치 처리로 트래픽 분산
  • 예: 정산, 통계, 리포트 생성 등

🧠 실전 팁

  • 쿼리 튜닝은 모든 개발자 필수 역량
  • 캐시는 만능이 아님 → 무작정 넣으면 오히려 데이터 불일치 리스크
  • 장애가 터지기 전에 미리 대응 시나리오 구성해두기

📌 체크리스트

  • 느린 쿼리 로그 활성화 (slow_query_log)
  • API 응답 속도 기준 정해두기 (예: 300ms 이내)
  • Redis 모니터링 툴 도입 (예: RedisInsight)
  • DB CPU, I/O 스파이크 로그 추적

다음 편 예고:

🔐 3편 - 인증 인가와 보안, 어디까지 알고 있나요?

JWT, OAuth2, Spring Security 고급 설정과 실전 보안 점검 팁

profile
Developer

0개의 댓글