FSD 구조에서 entities 레이어는 비즈니스 개념 중심(User, Post 등) 의 코스를 담당한다.
여기서 말하는 "비즈니스 개념"이란, 단순히 기능이 아니라 "데이터 중심이냐 Vs. 기능 중심이냐" 로 나눠서 이해해야 한다.
entities 폴더에는 데이터 중심 개념이 들어간다.User, Post, Comment, Product, Team, Ranking 등features 폴더에는 기능 중심 개념이 들어간다.login, signup, writeComment, likePost 등현실 세계에 존재하는 개체를 앱 안에서 고유한 데이터 구조로 모델링한 것
User → 데이터 중심 개념 (✅ entities에 들어감){
id: 1,
name: "봄김",
email: "bom@dev.com"
}
signin → 기능 중심 개념 (✅ features에 들어감)POST /login 요청을 보낼 뿐, 이 자체는 데이터로 저장되지 않음 → 따라서 기능 중심 개념| 개념 | 중심 | 예시 | 소속 |
|---|---|---|---|
User, Post, Product | ✅ 데이터 중심 | 고유한 데이터가 있고 다양한 화면에 사용됨 | entities/ |
Login, Signup, Like, WriteComment | ❌ 기능 중심 | 유저의 특정 행위, 시나리오 중심 | features/ |
| 질문 | Yes라면 entities, No라면 features |
|---|---|
| 이건 "무언가"를 설명하는 데이터인가? | ✔️ → User, Post |
| 이건 "무언가를 하는 행위"인가? | ✔️ → signin, commentWrite |
"데이터 중심이라는 건, 화면에 보여지고 저장되는 정보 자체를 중심으로 생각하는 거야.User는 어떤 대상(사람)이지만, signin은 행동이잖아?"
entities 폴더에 signin 같은 기능이 들어가도 될까?entities/,features/에 넣는 것이 가장 이상적이다.features/를 따로 만들지 않고, 작은 기능들을 entities/ 안에 넣는 경우도 많다.entities/signin처럼 구성된 경우도 잘못된 건 아니며, 작은 기능을 "하나의 도메인처럼" 다룬 유연한 구조라고 이해하면 된다.