한방 쿼리 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