[핸드북] 프론트엔드 DTO

_dodo_hee·2023년 4월 25일
0

핸드북

목록 보기
2/29

DTO

Data Trasnfer Object 란 계층간 데이터 교환을 위해 사용하는 객체.

DTO는 클라이언트 요청에 포함된 데이터를 담아 서버 측에 전달하고,
서버 측의 응답 데이터를 담아 클라이언트에 전달하는 계층간 전달자 역할을 한다.

MVC, MVVM 패던으로 개발할때
비즈니스 처리 로직(Model)과 UI 영역(View)은 서로의 존재를 인지하지 못하고, Controller가 중간에서 Model과 View의 연결을 담당합니다.

View와 도메인 Model의 데이터를 주고 받을 때 별도의 DTO 를 주로 사용합니다.

datamodel DTO 차이

사실 사전적의미는 동일하다.
하지만 정확하게 회사에서 쓰고있던 프론트엔드 data-model 같은 경우엔,
UI용 DTO라고 이해하면 쉽습니다.
서버에서 내려주는 도메인 모델을 UI 데이터에 맞게 주고 받을 수 있는 DTO 역할입니다.

DTO 사용 이유?

  1. UI에서 사용하지 않을 불필요한 데이터까지 보유하고 있었습니다.
  2. 비즈니스 로직등 민감한 정보들이 외부에 노출 될 수 있습니다.
  3. view 와 model이 강하게 결합되어있으면, 요구사항 변화가 model까지 영향을 끼치기 쉽다.

DTO 사용시 좋은 점?

  1. api 프로퍼티나, 값 바뀔 경우, dto에서 프론트 관련한 정보를 수정하고 관리하기때문에 UI 코드가 변경 될 경우가 적어지게 됩니다.
  2. api 가 나오지 않아도 UI 에서 필요한 데이터 모델을 작성하여 클라이언트 코드를 미리 짜놓을 수 있습니다.
  3. 도메인 정보를 넣어놨을 경우엔 다른 부분까지의 영향도를 신경써야했지만, UI의 데이터모델을 만들어 놓으면 해당 모듈에 관련된 모델을 새로 짜면 되서 사이드이펙트의 영향도가 적다.
  4. 서버로부터 받아온 값을, 뷰 로직과는 독립적인 로직을 모아두어 한 곳에서 관리할 수 있다.
  5. 재활용 하기 쉽다.

DTO 사용시 안좋았 던 점

  • reference data를 만들어줘서 Use Case에 프론트엔드 DTO의 의존성을 부여하지 않게 처리해야하는 불편함.
  • 재활용을 할거면 확장성 있게 설계해야한다는 점

참고자료
참고자료2

profile
무럭무럭 자라나는 도도 개발성장일기

0개의 댓글