<aside> 🔗
</aside>
타입스크립트로 프론트엔드 프로젝트를 구성하다 보면 여러 가지 타입 정의를 하게 된다. 그중에서도 비즈니스 로직과 맞닿아 있는 중요한 것들이 도메인 모델과 API 응답 모델이다.
하지만 나는 도메인이라는 개념을 제대로 이해하지 못한 채, 두 모델을 거의 기계적으로 작성해왔다. 그러다 보니 어느 순간 내가 정의한 타입이 도메인 모델인지, 아니면 단순히 API 응답 모델인지 헷갈릴 때가 많았다.
API 응답 모델이 곧 도메인 모델인 경우도 있지만, 때로는 도메인 모델을 포함기도 하고, 일부분만 채용하기도 한다. 그렇다면 이 둘은 어떤 관계가 있는 것일까?
이번 글에서는 먼저 도메인이라는 개념을 명확히 짚고, 도메인 모델과 API 응답 모델이 어떤 관계를 맺는지 살펴보려 한다. 그리고 내가 프로젝트에서 즐겨 사용하는 FSD(Feature-Sliced Design) 관점에서, 이 관계를 폴더 구조와 코드 구성에 어떻게 녹여낼 수 있을지도 함께 정리해보려 한다.
도메인은 “우리가 해결하려는 영역과 그 영역을 둘러싼 개념, 규칙, 흐름”이다.
도메인을 다룬다는 것은 비즈니스, 백엔드, 프론트엔드 모두가 같은 언어로 소통할 수 있도록 개념을 정의하고, 이를 코드로 모델링하며, 일관성을 유지하는 일이다.
이렇게 정리된 도메인은 기획자부터 개발자까지 모두가 같은 그림을 보게 하고, 데이터베이스, API, 상태관리 같은 기술 요소들을 안정적으로 연결한다. 결국 복잡한 문제를 단순화해 유지보수와 확장을 용이하게 만드는 핵심 기반이 된다.
export type Product = {
id: string
name: string
price: number
stock: number
category: 'clothing' | 'electronics' | 'food'
status: 'draft' | 'onSale' | 'soldOut' | 'discontinued'
}