폴더 구조 개선 : FSD 아키텍처 적용 검토 #230
Replies: 1 comment 6 replies
-
혹시 위의 동일한 기능명으로 폴더가 반복되는 것은 구체적으로 어떠한 것을 의미하는 걸까요? (현재 폴더내의 상황을 들어주시면 좋을 것 같아요! components, hooks 등의 폴더에 도메인별로 폴더를 하나 더 생성하시는 것을 의미하는걸까요? 만약 그렇다면 도메인별 폴더를 하나 더 생성하는 것의 단점이 경로 탐색 비용 증가인가요?)
현재 src/utils 와 src/constants에는 전역적으로 사용되는 함수 및 상수들이 저장되어 있습니다. 따라서 특정 컴포넌트 내부에서만 사용하는 것과 어떠한 연관성이 있는지 궁금해요. (구체적인 상황도 알려주시면 감사하겠습니다!)
이 부분의 이점에 대해서 잘 이해가 되지 않는 것 같아요! FSD로 바꾸면 디자인 시스템 문서화가 용이하다는게 기능별 폴더안에 ui 폴더를 두고 해당 폴더안에 관련 컴포넌트 파일을 두어 디자인 시스템을 한눈에 보기 편하다는 것을 의미하는 걸까요?
구조를 비교해봤을때, 구현하고자 하는 하나의 기능에 대해 이전에는 components, hooks, apis 등의 여러 폴더에 구현하고자 하는 기능에 해당하는 폴더를 만들어 관련 로직을 넣었다면, 개선이후에는 구현하고자 하는 기능을 features 폴더내에 저장하고 해당 기능의 이름으로 폴더를 만든뒤 그 폴더안에 components, hooks, apis등의 로직을 모아두어 물리적으로 이동하는 범위를 줄였다고 봤는데 이해한게 맞을까요? 만약 위의 이해한 내용이 맞다면 앞서 말씀해주신 또한 개선된 구조를 보아하니 feature폴더에 components, apis, queries, mutations등의 폴더가 모두 있더라구요! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
📌 개요
현재 프로젝트는 레이어드 아키텍처 기반으로 구성되어 있으며, 기능 흐름 파악 및 유지보수 측면에서 다음과 같은 한계가 있습니다. 이를 개선하기 위해 기능 단위 구조(FSD: Feature-Sliced Design) 적용을 제안드립니다.
❗ 문제 인식
components,pages,queries,mutations,types,constants등 여러 위치에 흩어져 있음.utils,constants와 전역영역의 직관적인 구분이 필요함.구조 개선을 통해 명확한 책임 경계 설정, 중복 제거, 탐색 비용 최소화가 필요한 상황입니다.
💡 FSD 적용
기능 단위로 디렉토리를 구성하고, 각 기능 내부에 UI, API, 상태, 타입, 유틸 등 관련 코드를 응집시킵니다.
또한 현재 신규 기능 추가 및 핫픽스 빈도가 낮은 안정적 운영 환경이므로, 구조 전환에 따른 운영 리스크는 매우 낮습니다.
✅ FSD 아키텍처의 이점
shared폴더에 Atomic Design 패턴 적용을 통해 Button, Input 등 공통 UI를 명확히 계층화🛠️ 구조 비교 예시
기존 구조 (레이어 기반)
개선 구조 (FSD 기반)
👉 같은 책임이 명확히 구분되어 있는 상태이므로 FSD 전환 시 진입 장벽이 낮고, 팀원 간 혼란도 적을 것으로 판단됩니다.
🔄 기존 구조 vs 개선 구조(FSD) 비교
pages/onboarding,components/onboarding,state/queries/onboarding,state/mutation/onboarding등 중복 경로features/onboarding내 모든 기능 포함⚠ 4. 예상 Trade-off 및 대응
shared,common등 별도 폴더에서 Atomic 구조 기반 명세화, 재사용성 강화📝 결론
기능 단위 FSD 아키텍처는 현재 프로젝트의 기능 책임 분리 상태와 잘 부합하며, 도입 부담이 낮고 운영 안정성에 위협이 없어 도입부담이 낮고, 복잡한 탐색을 줄여 유지보수 생산성을 높일 수 있습니다.
따라서 FSD 구조로의 일괄 전환을 통해 유지보수성과 탐색성을 동시에 개선하는 방향을 제안드립니다.
@Cllaude99
🚧 적용 방식 제안
현재 코드 리팩토링이 중단된 상태이므로, 점진적 전환보다
✅ 전체적인 구조 정비 후 → 개별 기능 코드 개선 순서로 진행하는 것이 더 적합하다고 생각합니다
참고문서
(번역) 기능 분할 설계 - 최고의 프런트엔드 아키텍처, Feature-Sliced Design 공식문서 FSD를 위한 ESLint 플러그인 개발 일지 Nike Sneaker and Footwear Store Github Search youtube zerocho
Beta Was this translation helpful? Give feedback.
All reactions