강의

멘토링

로드맵

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

더기님의 프로필 이미지
더기

작성한 질문수

멀티모듈 구성시에 레이어간 DTO가 생기는 것이 맞는걸까요

작성

·

191

0

저는

api -> domain -> db 로 나눠보려고 하는데
api에서의 요청/응답 dto
domain은 api에서의 요청/응답 dto를 모르니까 새로운 dto를 만들어줘야하는 것 같고
db도 domain 모듈을 모르니까 dto를 만들어주던가 아예 domain모듈에서 entity를 구성해서 넘기던가 해야할 것 같은데 애초에 모듈 구성하는 방법이 잘못된걸까요?

도와주실분.. ㅠㅠ

 

답변 1

0

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

레이어 간의 데이터 전송 객체(DTO) 생성은 소프트웨어 설계에서 흔히 사용되는 방식입니다. 각 레이어(API, 도메인, DB)가 서로의 구현 세부 사항에 의존하지 않도록 하기 위해 DTO를 사용합니다. 따라서, 각 레이어에서 요구하는 데이터 형식에 맞추어 별도의 DTO를 정의하는 것은 일반적인 접근 방식입니다.

api 레이어에서는 외부 사용자의 요청과 응답 형태를 정의하는 DTO가 필요하고, 도메인 레이어에서는 비즈니스 로직의 실행 결과를 담을 DTO가 필요할 수 있습니다. 또한, DB 레이어에서는 데이터베이스와의 통신을 위한 DTO 또는 엔티티 클래스가 필요할 수 있습니다.

각 레이어가 서로를 모르는 상태에서 필요한 데이터만을 전달하기 위한 목적으로 DTO를 사용하는 것이므로, 멀티모듈을 구성하는 방법 자체가 잘못되었다고 보기는 어렵습니다. 오히려, 이런 방식으로 레이어 간의 결합도를 낮추고, 책임을 명확히 분리하는 것은 바람직한 설계 방법 중 하나입니다.

레이어간 커플링을 최소화하고 변경에 유연하게 대응하기 위해 각 레이어에 적합한 DTO를 정의하는 것은 좋은 프랙티스입니다. 따라서, 현재 구조를 유지하시면서 레이어 간의 데이터 전달을 위해 필요한 DTO를 설계하시는 방향으로 진행하시면 됩니다.

더기님의 프로필 이미지
더기

작성한 질문수

질문하기