조회 API 성능 최적화

2023. 6. 13. 12:23BackEnd(Java)/Spring Data JPA

✅ 아래 내용들에 대해서 알아보자

- 조회 API 성능 최적화 방법
- 최적화 VS 코드 복잡도

 

 

조회 API 성능 최적화 방법

1. 엔티티 조회 방식으로 우선 접근

  • 패치조인으로 쿼리 수 최적화
  • 컬렉션 최적화 -> 페이징 필요시 default_batch_fetch_size, @BatchSize로 최적화, 불필요시 패치조인 사용

 

2. 엔티티 조회 방식으로 해결 안 되면 DTO 조회 방식 사용

 

 

3. DTO 조회 방식으로 해결이 안 되면 Native SQL or 스프링 Jdbc Template or Mybatis 등.. 

  • 이 방식으로도 해결이 안 된다면 트래픽이 많은 경우이므로 캐싱 처리(redis, 로컬 캐시)등을 통해 해결해야 한다.
  • 만약 캐싱 처리한다면 엔티티를 캐싱 처리하면 안 됨(라이플 사이클이 안 맞으므로, DTO로 변환하여 캐싱해야 함)

 

 

성능 최적화 vs 코드 복잡도

엔티티 조회 방식은 패치 조인이나, default_batch_fetch_size, @BatchSize와 같이 코드를 거의 수정하지 않고, 옵션만 약간 변경해서 다양한 성능 최적화를 시도할 수 있다.

반면에 DTO를 직접 조회하는 방식은 성능을 최적화하거나 성능 최적화 방식을 변경할 때 많은 코드를 변경해야 해서 비용이 많이 든다.

개발자는 성능 최적화와 코드 복잡도 사이에서 트레이드오프를 잘해야 한다.(보통 성능 최적화는 단순한 코드를 복잡한 코드로 만들게 한다.)

엔티티 조회 방식은 JPA가 많은 부분을 최적화해 주기 때문에 코드 변경 적게 하여 최적화 가능
반면에 DTO 조회 방식은 SQL을 직접 다루는 것과 유사하기 때문에, 코드 변경 많음

 

 

 


참고자료

반응형