한방 쿼리 vs 애플리케이션에서 조립

아키텍처까지도 확장될 수 있는 내용이며, 트레이드 오프의 대상이기에 정답이 없습니다. 따라서 이 리뷰에서는 조금 단순화된 범위에서 답변합니다. 확장 hint

  • DB Replica, DB Cache

  • CQRS

  • MSA - API 통신, Cache, CDC

  • JPA - OneToMany가 아닌 OneToFew

한방 쿼리

장점

  • 비용이 큰 요청 중 하나인 DB I/O를 절약할 수 있습니다.

  • native SQL에 익숙한 사람이라면 오히려 가독성이 좋을 수 있습니다.

    • 직관적인 쿼리 튜닝이 가능합니다. with DBA

    • SQL만으로 업무 흐름을 파악할 수 있습니다.

    • 러닝 커브가 낮습니다.

  • 코드량이 줄어듭니다.

단점

  • 시간이 지날수록 쿼리 복잡도가 늘어나 유지보수의 어려움이 있습니다.

  • 거대한 쿼리는 DB 부하를 초래합니다.

  • 영속성 레이어에 업무 로직이 들어가게 될 위험이 있습니다.

  • 런타임시 에러 감지가 될 확률이 높습니다.

애플리케이션에서 조립

장점

  • 충분히 작은 단위의 조회 후 projection을 하기에 재사용이(작은 단위의 조회를) 가능합니다.

  • ORM의 장점을 활용할 수 있습니다.

    • 다양한 라이브러리의 도움을 받을 수 있습니다.

    • 컴파일시 에러 감지가 될 확률이 높습니다.

    • 러닝 커브가 높습니다.

  • 상대적으로 저렴한 서버 인프라를 활용할 수 있습니다.

단점

  • 비용이 큰 요청 중 하나인 DB I/O가 추가 발생합니다.

  • 코드량이 많아지고 도메인 로직이 튼튼하지 않다면 오히려 로직 파악이 어렵습니다.

    • ORM 개념이 필요할 수도 있습니다.

심화 질문에 대한 일부 리뷰

Last updated