FSD 아키텍처로 확장 가능한 프론트엔드 구축하기
Feature-Sliced Design 아키텍처의 핵심 개념과 실전 적용 방법을 설명합니다.
DevNest
320 views
ArchitectureFSDFrontend

Feature-Sliced Design이란?

FSD는 프론트엔드 프로젝트의 구조를 체계적으로 관리할 수 있게 해줍니다.

핵심 원칙

1. 레이어 구조

src/
├── app/        # 앱 초기화, 라우팅
├── pages/      # 페이지 컴포넌트
├── widgets/    # 독립적인 UI 블록
├── features/   # 사용자 시나리오
├── entities/   # 비즈니스 엔티티
└── shared/     # 공유 코드

2. Public API

각 슬라이스는 `index.ts`를 통해 공개 API를 제공합니다.

// src/entities/post/index.ts
export { PostCard } from './ui/PostCard';
export { getPosts } from './api/postsActions';
export type { Post } from './model/types';

실전 예제

엔티티 구조

src/entities/post/
├── api/           # Server Actions
├── model/         # 타입, 상수
├── ui/            # UI 컴포넌트
└── index.ts       # Public API

의존성 규칙

상위 레이어는 하위 레이어만 import 가능합니다:

// ✅ 가능
import { Post } from '@/entities/post';

// ❌ 불가능
import { SomePage } from '@/pages/home';

장점

  • 확장성: 새로운 기능 추가가 쉬움
  • 유지보수성: 명확한 구조로 코드 이해도 향상
  • 팀 협업: 역할 분담이 명확함

결론

FSD는 처음엔 복잡해 보이지만, 프로젝트가 커질수록 그 진가를 발휘합니다. 중대형 프로젝트라면 꼭 고려해보세요!