inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

제미니의 개발실무 - 커머스 백엔드 레거시와 AI 활용편

상품 목록 - 코드 느끼기

ProductController 에서 타협하지 않는다면 어떤 형태가 되나요?

2

조예인

작성한 질문수 3

0

현재 Controller 클래스는 온전히 순수하지 않다(9강 11:51)고 말씀해주셨는데 온전히 순수한 Controller 클래스는 어떤 형태여야 하는지가 궁금합니다.


제가 봤을때는 지금 Controller 가 프레젠테이션 레벨의 productAssembler 를 호출해서 포맷팅만 바꿔서 내려주고 있기 때문에 로직적인 부분이 클래스에 없어서 순수해보이는데요. 혹시 productAssembler 에서 isUnique 를 계산해주고 있어서 순수하지 않다고 표현하신 걸까요?? 어디서 타협을 하셨다는건지 잘 이해가 되지 않아서 설명해주시면 감사하겠습니다!

spring-boot 도메인 dbms/rdbms backend 인공지능(ai)

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 조예인님

질문하신 Controller의 순수성, Assembler에서 계산을 수행해도 되는지, Controller와 Service의 책임 분리와 관련된 기존 답변을 참고해 보시면 좋습니다.

관련 질문

Controller에서 여러 Service를 직접 조합할지, 하나의 상위 Service가 비즈니스 흐름을 담당할지에 대한 논의입니다. 단순한 데이터 전달과 변환을 넘어 주문·쿠폰·포인트 등 업무 흐름을 Controller가 직접 관리하게 되면 Controller의 책임이 커질 수 있으며, 기능이 복잡해질수록 하위 컴포넌트를 응집시키는 방향을 고려할 수 있다고 설명합니다.

Controller는 외부 요청을 받아 내부 개념을 표현하는 표현 영역으로 볼 수 있으며, 여러 응집된 비즈니스를 조합하는 Facade가 반드시 하나의 도메인 개념이 되는 것은 아니라는 내용이 담겨 있습니다. 따라서 Controller가 단순히 요청을 해석하고 적절한 처리 컴포넌트를 호출하는 정도라면, 어느 정도의 조합은 허용될 수 있습니다.

질문하신 productAssembler가 단순히 도메인 객체를 응답 DTO로 변환하거나 표현 형식을 바꾸는 역할이라면 Controller와 함께 프레젠테이션 계층의 책임으로 볼 수 있습니다. 다만 isUnique가 단순한 표시용 값이 아니라 여러 도메인 데이터를 조회·판단하거나 업무 규칙을 적용해 계산하는 값이라면, 해당 계산은 Service나 별도의 응집된 컴포넌트로 이동하는 편이 자연스러울 수 있습니다.

즉, “순수한 Controller”를 기계적으로 로직이 전혀 없는 클래스로 보기보다는, HTTP 요청·응답 처리와 프레젠테이션 형식 변환에 집중하고 도메인 규칙이나 복잡한 비즈니스 흐름은 갖지 않는 Controller로 이해하시면 좋습니다. 어느 지점까지 허용할지는 isUnique의 의미와 변경 이유를 기준으로 판단하는 것이 핵심입니다.

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

클로드 코드 실행 방법 문의

0

8

1

문제와 풀이2 1번문제

0

6

1

gws auth login 에서 액세스 차단됨

0

9

0

안녕하세요 ai툴 질문있습니다.

0

17

2

Python 문의드립니다.

0

10

1

슬랙 연동 방법 및 파일 관련 질문

0

14

2

google cloud 앱게시가 비활성화 되어있어요.

0

11

0

접근 가능한 카트 목록을 조회하는 API는 없는걸까요?

1

74

2

Sequence 관련 질문

1

95

2

Image Only Query

1

74

2

ProductOption을 통한 FindProductOption에 관한 질문

1

84

2

상수에 관련해서 질문있습니다.

1

85

2

null 을 많이 허용하지 않는 이유

1

106

1

JetBrains All Products Pack 3개월 이용권 신청 관련 문의

1

158

2

소스코드 보안

1

294

2

AI 사용 방법에 대하여...

1

153

2

PaymentValidator와 PaymentProcessor에서 주문과 결제를 중복 조회하는 구조에 대한 질문이 있습니다 !

1

106

3

결제 개념 컴포넌트 분리 기준과 네이밍 전략에 대한 질문있습니다 !

1

122

3

AI 를 적용시 브랜치를 다루는 팁 같은게 있을까요?

1

168

2

사용자가 상품을 선택하고 쿠폰을 고를 때 가장 혜택이 큰 쿠폰을 고르는 상황

1

148

2

장바구니 아이템 가격 기준?

1

144

2

인텔리제이에서 legacy 프로젝트 그레이들 인식 불가

1

216

4

예약 변경 시 '과거 정책 기준 재계산' 요구사항에 따른 스냅샷 데이터 구조 설계 고민

1

165

2

선생님

1

202

1