본문 바로가기
프로그래밍

DTO란? DTO에 대해서 알아보자

by bantomak 2024. 9. 11.
반응형

DTO(Data Transfer Object)

DTO는 개발자 커뮤니티나 개발자 논의에서 항상 나오는 용어이다. 하지만 개발자들끼리도 DTO에 대한 이해가 조금씩 다르다. 이번 기회에 DTO에 대해서 정리해 보도록 하자.

 

DTO의 정의

유명 개발자들의 글에서도 DTO가 같은 의미로 사용된 것인지 아닌지 헷갈릴 때가 있다. 중요한 것은 자신만의 명확한 정의가 있고 이를 설명할 수 있어야 한다는 것이다.

 

아래 글을 꼭 읽어보도록 하자!

 

Data Transfer Object

An object that carries data between processes in order to reduce the number of method calls.

martinfowler.com

An object that carries data betwwen processes in order to reduce the number of method call
프로세스 사이에서 메서드 호출 횟수를 줄이기 위해서 데이터를 운반하는 오브젝트

 

프로세스라 함은 다른 물리 장비에 실행 중인 프로세스라고 생각해도 괜찮다. 위 문장에서, DTO가 프로세스 사이 통신을 위해 serialize 하기 위한 용도가 아니라 메서드 호출 수를 줄이기 위한 용도라는 문장에서 여러 생각이 들었다.

 

... Usually an assembler is used on the server side to transfer data between the DTO and any domain object
보통 assembler는 서버 사이드에서 DTO와 도메인 객체 사이의 데이터를 전달하기 위해서 사용된다.

 

위 문장 및 다이어그램에서 DTO는 도메인 오브젝트로부터 생성 또는 도메인 오브젝트로 변환되는 오브젝트임을 알 수 있다.

 

Many people in the Sum community use the term "Value Object" for this pattern. i use it to mean somting else. 
많은 사람들이 DTO 패턴에 Value Object라는 용어를 사용하는데, 나는 다른 의미로 사용한다.

 

DTO와 Value Object는 다르다! 이에 대해서 의견이 분분한거같긴하다.

 

객체 직렬화(Object Serialization)

 

도메인 오브젝트가 어떻게 serialize 될 것인지 결정하는 것은 DTO가 아닌 Serializer의 역할이라고 할 수 있다.

 

메서드 호출 횟수 감소(Reducing method calls)

when you`re working with a remote interface, such as Remote Facade, each call to it is expensive. As a result you need to reduce the number of calls, and thay means that you need to transfer more data with each call.
Remote Facade와 같은 원격 인터페이스와 통신을 진행할 때, 매번 호출은 매우 비싸다. 그 결과 호출수를 줄여아한다. 이는 각 호출에서 더 많은 데이터를 전송해야 한다는 것을 의미한다.

 

2번 요청하는 경우
1번 요청하는 경우

 

마틴 파울러의 글에서 말하는 것은 위와 같이 DTO를 활용해서 메소드 호출 수를 줄이는 것이다.

(이것이 DTO의 용도!)

DTO를 다른 의미로 사용하는 사람들도 있을 수 있다. 그들이 틀린 것은 아니라고 생각한다.

 

관련 링크들

 

Data Transfer Object, Pattern or Anti-Pattern?

I'm republishing a series of articles I wrote a long time ago on Blogger. This is article #4 The Story: A few weeks ago I was working on a bug.

www.linkedin.com

참고 사이트

 

DTO란? DTO의 정의 (with Martin fowler’s)

DTO: Data Transfer Object는 개발자 커뮤니티나 개발자 논의에서 항상 나오는 용어이다. 개발자들끼리도 DTO에 대한 이해가 조금씩 다르다. 이 포스트에서는 몇몇 웹 문서를 인용하여 DTO의 정의를 정리

medium.com

댓글