'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선
읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.
UI 컴포넌트에 DTO를 전달하지 마세요
언젠가 읽기
2025. 2. 25. PM 1:00:23
DTO란 무엇인가?
DTO(Data Transfer Object)는 소프트웨어 개발에서 애플리케이션의 서브시스템 간 데이터를 전송하기 위해 사용되는 디자인 패턴입니다. RESTful API에서는 주로 전송되고 수신될 데이터의 구조를 정의하는 데 사용되며, 프론트엔드와 백엔드 간의 원활한 통신을 도와줍니다.
문제점
프론트엔드 개발자들은 종종 API나 백엔드 서비스로부터 데이터를 받아 UI(User Interface) 계층, 특히 애플리케이션의 컴포넌트에서 이를 렌더링합니다. 이러한 데이터는 DTO로 명명되며, 컴포넌트의 props
, 매개변수 또는 의존성 주입을 통해 직접 전달될 때 다음과 같은 문제가 발생할 수 있습니다:
- 높은 결합도: 컴포넌트가 백엔드 데이터 계층과 강하게 결합되어 유지보수와 재사용성이 저하됩니다.
- 변경의 어려움: 백엔드 데이터 계약이 변경되면 UI 컴포넌트의 인터페이스를 수정해야 하여 코드의 진화나 리팩토링이 어려워집니다.
- 단일 책임 원칙 위반: 컴포넌트가 데이터 전달과 UI 렌더링이라는 두 가지 책임을 가지게 되어 코드의 응집력이 떨어집니다.
- 최소 권한 원칙 위반: 컴포넌트가 불필요한 데이터에 접근하게 되어 보안과 관리 측면에서 문제가 발생할 수 있습니다.
해결 방안
이러한 문제를 해결하기 위해 소프트웨어 아키텍처를 잘 정의하고 계층 분리를 신중하게 고려하는 것이 중요합니다. 데이터 계층을 명확히 분리하여 DTO와 UI 컴포넌트 간의 중간 단계를 도입함으로써 컴포넌트가 직접 DTO에 의존하지 않도록 설계할 수 있습니다. 이를 통해 컴포넌트의 결합도를 낮추고, 유지보수성과 재사용성을 향상시킬 수 있으며, 코드의 책임을 명확히 분리할 수 있습니다.
함께 읽으면 좋은 참고 자료
- SOLID 원칙
- 클린 아키텍처
- 프론트엔드 아키텍처 패턴