Inflearn brand logo image
Inflearn brand logo image
채널톡 아이콘

인프런 커뮤니티 질문&답변

eoyeong님의 프로필 이미지

작성한 질문수 49

Practical Testing: 실용적인 테스트 가이드

Persistence Layer 테스트 (1)

response의 위치에 대한 질문이 있습니다

작성

·

51

0

  • 학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!

  • 먼저 유사한 질문이 있었는지 검색해 보세요.

  • 서로 예의를 지키며 존중하는 문화를 만들어가요.

     

 안녕하세요


현재 프로젝트에서는 service쪽에서 response로 변환을 해주고 있어서, response 객체의 위치가 service쪽에 있는데

 

response 변환을 controller 쪽에서 해주고 response의 위치도 controller쪽으로 옮기는 것에 대해서는 어떻게 생각하시나요??

 

service에서는 domain과 관련된 것들만 있는 게 좋지 않나? ( domain entity와 jpa entity를 구분하지 않고 있기는 하지만요.. ) 라는 생각이 있고, response는 api의 응답이라서 아무래도 controller쪽에 있는 게 좋을 것 같다고 생각을 해서 여쭤보게 됐습니다.

 

답변 2

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, ga 님!

오 좋은 질문이네요! 말씀해주신 내용에 저도 동의합니다 ㅎㅎ
실제로 지금 제가 담당하는 실무 프로젝트에서도 비슷한 형태로 구성하고 있어요.

예시 프로젝트는 다소 크기가 작기 때문에, 굳이 Controller response와 Service 반환 모델을 따로 분리하지 않고, 'Service에서 모든 처리를 끝내고 구성을 완료한 데이터가 그대로 client에게 전달된다'는 관점을 가지고 민들었습니다.
엄밀히 나누면 말씀주신대로 domain Entity와 JPA Entity 를 구분하듯이, API Response 쪽도 경계에 맞게 나누는 것이 맞다고 생각합니다.
(물론 크기가 작을 때부터 억지로 나누는 것은 오버 스펙일 수 있다고도 생각해요 ㅎㅎ)

감사합니다. 🙂

eoyeong님의 프로필 이미지
eoyeong
질문자

답변 감사합니다 :)

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 대영님, 질문 주셔서 감사합니다.

현재 프로젝트 내 Response 객체의 위치에 대해 고민하고 계신데요, 이와 관련하여 기존에 많은 개발자들이 비슷한 고민을 나누었습니다. Response 객체의 위치는 팀의 개발 철학이나 프로젝트의 구조에 따라 조금씩 다르게 설정될 수 있습니다. 의견을 주신 부분에 대해 조금 더 깊이 있는 설명과 함께, 관련된 기존 답변을 소개해드리겠습니다.

일반적으로:

  1. Service 레이어는 주로 비즈니스 로직을 담당하는 곳입니다. 따라서, 이곳에서는 도메인 모델의 변형이나 조합이 이루어지는 것이 맞습니다.

  2. Response 객체의 위치는 보통 Controller 레이어가 적합하다고 보는 시각이 있습니다. 이는 API의 응답을 정의하고, 클라이언트와의 인터페이스를 담당하기 때문입니다.

기존 응답의 변환을 Controller에서 처리하게 되면, Controller는 Service의 결과를 클라이언트에게 맞춘 응답 형식으로 변환하여 비즈니스 로직과 프레젠테이션 로직을 깔끔하게 분리할 수 있습니다. 이는 코드의 가독성과 관리의 용이성을 높여줄 수 있습니다.

이미 관련된 토론이 있었던 유사한 논의 내용도 참조하시면 좋을 것 같습니다:

이와 같은 논의에서는 DTO의 위치와 사용 목적에 대해 다양한 접근이 가능하다는 점도 함께 이해해주시면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.