인프런 커뮤니티 질문&답변
조회 시 개념간 격벽
해결된 질문
작성
·
73
2
안녕하세요.
상품 상세조회 섹션을 보고 궁금한 점이 생겨 질문을 드립니다 !
평소에는 개념간 격벽을 신경쓰지만 조회 시에는 지키기가 쉽지 않더라고요.
특히 list 조회인데 다른 개념이 있어서 조회 + in query + 조립 등을 하면 너무 과한가..? 싶은 생각이 가끔 듭니다.
제가 생각하는 방법과 트레이드 오프입니다.
개념간 격벽을 유지하고, 쿼리를 분리
아무래도 복잡해지는 구현
DB 커넥션을 위한 오버헤드 증가
팀원의 공감을 생각보다 얻기 힘듦(사실 저부터 확신이 없는...)
조회의 경우 느슨한 규정
화면 요구사항에 따라 변하는 쿼리
재사용성 x
주체가 모호함
점점 쌓이는 비슷한 쿼리와 projection dto들
거의 혼자 백엔드 개발을 진행하다보니 이런 고민에 대해 선택을 내리기 참 어렵네요 ㅎㅎ..
제미니님은 어떤식으로 선택하시는지 궁금합니다 !
감사합니다.
답변 2
3
안녕하세요! 질문 감사드립니다!
저는 개념과 격벽을 유지하여 쿼리를 구성하는 편입니다!
다만 이게 기본 컨셉은 쿼리를 가능한 작게 만들고 어플리케이션 로직을 적극활용하는 전략을 펼치는 편 입니다.
대신 개념과 격벽 기준으로 쿼리를 응집 시키기 때문에 필요 시 join 도 사용하는 편입니다
(이 부분이 결과적으로 너무 과한 부분을 해결 할 수 있다고 생각합니다)
(어드민은 제외) 서비스 영역 코드 기준 조회 부분도 개념과 격벽을 지켜주면 훨씬 더 코드의 품질을 유지하면서 지속적으로 유지보수하기 좋아지는 형태가 된다고 생각합니다
1번의 하위 3개를 적어주신 부분이 있다면 일 부분 join 을 활용해서 적절한 쿼리 규모를 유지하면서 구성해보시면 어떨까 싶습니다!
다만 이것은 저 또한 모든 케이스에 이렇게 한다는 것은 아니기 때문에 일반적으로 이렇게한다~로 참고만 부탁드립니다!
모쪼록 완강까지 화이팅입니다! 완강 후 수강평도 기대하고있겠습니다!
추가 질문이 있다면 편하게 물어봐주세요!
0
안녕하세요, 인프런 AI 인턴입니다. 루리이님.
백엔드 개발을 하면서 특히 데이터베이스의 조회 시에 개념 간의 격벽을 어떻게 유지할지를 고민하는 것은 매우 중요한 주제입니다. 아래는 이와 관련된 다양한 접근 방식과 고려 사항입니다.
개념 간 격벽을 유지하며 조회하기
격벽 유지 및 쿼리 분리:
- 장점: 도메인 간의 책임을 명확히 할 수 있고, 재사용 가능한 쿼리를 구축할 수 있습니다.
- 단점: 구현이 복잡해질 수 있으며, 데이터베이스 연결 회수가 늘어나면 성능 이슈가 발생할 수 있습니다.
- 추천: 도메인이 복잡하고 명확한 책임 분리가 필요할 때 유용한 방법입니다. 특히 팀이 이 패턴에 대해 숙련된 경우 효과적일 수 있습니다.
- 장점: 도메인 간의 책임을 명확히 할 수 있고, 재사용 가능한 쿼리를 구축할 수 있습니다.
조회에서 느슨한 규칙 적용:
- 장점: 더 유연한 설계가 가능하며, 빠르게 변화하는 비즈니스 요구를 대응하기 용이합니다.
- 단점: 시간이 지나면서 코드 기반이 불안정해질 수 있고, 재사용하기 어려운 코드가 쌓일 수 있습니다.
- 추천: 단기적으로 빠른 결과물을 내야 할 때, 혹은 프로젝트가 아직 초기 단계일 때 유용합니다.
- 장점: 더 유연한 설계가 가능하며, 빠르게 변화하는 비즈니스 요구를 대응하기 용이합니다.
선택 기준 및 트레이드오프 고려
팀의 숙련도: 함께 일하는 팀원이 개념 간의 무게와 격벽을 잘 이해하고 있다면, 첫 번째 접근을 선택할 수 있습니다. 반면, 팀원이 이 부분에 익숙하지 않거나 백엔드 담당이 혼자라면 두 번째 방법이 더 나을 수 있습니다.
프로젝트의 성격: 단기 프로젝트인지, 장기적으로 운영할 프로젝트인지에 따라 선택 전략이 달라져야 합니다. 장기적 관점에서는 격벽을 유지하는 방향이 더 전략적일 수 있습니다.
지속적인 유지보수: 지속적으로 유지보수할 시스템인 경우, 처음에 조금 어렵더라도 격벽을 잘 유지하는 패턴이 장기적으로 유리합니다. 반면, 빠르게 기능을 추가해야 한다면 더 느슨한 접근이 필요할 수 있습니다.
실제로 개념 간 격벽을 침범하는 경우에 대한 비슷한 논의가 이루어진 사례가 있습니다. 이를 통해 구체적인 실천 사례와 토론을 참고하시면 더 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




