Replies: 1 comment 1 reply
-
|
저는 좋은 것 같습니당 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
기존에는 서버 측 BFF(Backend For Frontend)에서 클라이언트 맞춤형 데이터 포맷으로 응답을 변환할 예정이었지만,
현재 BFF 서버가 제거되면서 서버 DTO를 프론트에서 직접 다루게 됩니다.
이는 다음과 같은 문제점을 발생시킵니다.
• 서버 응답 구조가 변경될 경우, 클라이언트 전역에서 수정 필요
• UI 요구사항에 맞게 데이터를 가공하는 로직이 각 컴포넌트에 분산됨
• 불필요한 중복 코드와 복잡도가 증가
💡 제안 내용
tanstack-query의 select 옵션을 활용하여,
API 호출 시 서버 DTO를 클라이언트 전용 데이터로 변환하는 클라이언트 변환 레이어 (transform layer) 를 도입합니다.
이 방식을 통해 기존 BFF의 역할 일부를 프론트에서 단순화하여 수행합니다.
✅ 기대 효과
• 서버 DTO 변경의 영향 최소화
• UI 중심 데이터 구조 유지 (불필요한 null, undefined 값 정리)
• 컴포넌트 단의 가공 로직 감소로 가독성과 유지보수성 향상
• BFF 제거 이후에도 일관된 데이터 관리 가능
⚙️ 적용 방식 제안
1. 각 useQuery 훅 내부에서 select를 이용해 변환 로직 정의
2. 변환 로직을 /shared/mappers 또는 /shared/transformers 디렉토리로 분리
3. 공통 변환 함수(formatDate, toCamelCase, normalizeNull)는 /shared/utils에 정리
🧩 논의 포인트
• 변환 레이어를 hooks 내부에 둘지, 별도 model 계층으로 분리할지
• 서버 DTO 타입 정의 없이 JS 기반에서 안전하게 구조 유지하는 방법
• 에러 응답 포맷(HTTP, 서버 코드 등)도 함께 변환할지 여부
💬 코멘트 요청
• 클라이언트 단 변환 레이어 도입에 동의하시나요?
• tanstack-query의 select 방식 외에 더 나은 접근이 있을까요?
• 폴더 구조나 네이밍 관련 의견이 있다면 자유롭게 제안해주세요.
Beta Was this translation helpful? Give feedback.
All reactions