# [[Feature-Sliced Design (FSD)]] ## ๐Ÿ“Œ Brief Summary Feature-Sliced Design (FSD)์€ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ํŠนํžˆ ๋Œ€๊ทœ๋ชจ React ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ํ˜„๋Œ€์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ, ์ฝ”๋“œ๋ฅผ ๊ธฐ์ˆ ์ ์ธ ์—ญํ• ์ด ์•„๋‹Œ ๋ฒ”์œ„(scope)์™€ ๋น„์ฆˆ๋‹ˆ์Šค ์ฑ…์ž„(responsibility)์— ๋”ฐ๋ผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [1-3]. ์ด ๋ฐฉ๋ฒ•๋ก ์€ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ๊ณผ ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)์˜ ์›์น™์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค [1]. ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ณ„์ธต(Layer)๊ณผ ์Šฌ๋ผ์ด์Šค(Slice)๋กœ ๋‚˜๋ˆ„๊ณ  ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ ๊ทœ์น™๊ณผ ๊ณต๊ฐœ API(Public API) ๊ทœ์น™์„ ๊ฐ•์ œํ•จ์œผ๋กœ์จ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค [2, 4-6]. ## ๐Ÿ“– Core Content * **๊ตฌ์กฐ์  ๋ชจ๋ธ (Layers, Slices, Segments):** FSD๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ `app`(์ „์—ญ ์„ค์ • ๋ฐ ์ดˆ๊ธฐํ™”), `pages`(๋ผ์šฐํŒ… ์ˆ˜์ค€ ์ปดํฌ๋„ŒํŠธ), `widgets`(๊ธฐ๋Šฅ๊ณผ ์—”ํ‹ฐํ‹ฐ๋กœ ๊ตฌ์„ฑ๋œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๋ธ”๋ก), `features`(์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ์›Œํฌํ”Œ๋กœ์šฐ), `entities`(ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ), `shared`(๋„๋ฉ”์ธ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ)์™€ ๊ฐ™์€ ๊ตฌ์ฒด์  ๊ณ„์ธต(Layers)์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค [2, 7, 8]. ๊ฐ ๊ณ„์ธต ๋‚ด์—์„œ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๊ฐœ๋…์  ๊ฒฝ๊ณ„์ธ '์Šฌ๋ผ์ด์Šค(Slice)'์™€ ๋…ผ๋ฆฌ, ์ปดํฌ๋„ŒํŠธ ๋“ฑ์„ ๋” ์„ธ๋ถ„ํ™”ํ•˜๋Š” '์„ธ๊ทธ๋จผํŠธ(Segment)'๋กœ ๋‚˜๋‰˜์–ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค [6, 8]. * **๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ ๊ทœ์น™ (Unidirectional Dependencies):** ์ƒ์œ„ ๊ณ„์ธต์˜ ์ฝ”๋“œ๋Š” ํ•˜์œ„ ๊ณ„์ธต์— ์˜์กดํ•˜๊ณ  ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•˜์œ„ ๊ณ„์ธต์€ ์ƒ์œ„ ๊ณ„์ธต์— ์˜์กดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค [2, 4]. ์ด ๋‹จ์ผ ์ œ์•ฝ ์กฐ๊ฑด์€ ๋ชจ๋“ˆ ๊ฐ„์˜ ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์•„ํ‚คํ…์ฒ˜ ๋‚ด ๊ทœ์œจ์„ ๊ฐ•์ œํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ ์‹œ ํŒŒ๊ธ‰ ํšจ๊ณผ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค [4, 9]. ESLint์™€ ๊ฐ™์€ ๋ฆฐํŒ…(Linting) ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํ•œ ๊ธฐ๋Šฅ(Feature)์ด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [10, 11]. * **๊ณต๊ฐœ API ๋ฐ ์บก์Аํ™” (Public APIs and Encapsulation):** ๊ฐ ์Šฌ๋ผ์ด์Šค๋Š” ๋‹จ์ผ ์ง„์ž…์ (์ฃผ๋กœ `index.ts`)์„ ๋…ธ์ถœํ•˜์—ฌ ์™ธ๋ถ€์™€ ํ†ต์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [5, 12, 13]. ์™ธ๋ถ€์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์€ ์ด ์ง„์ž…์ ์„ ํ†ตํ•ด์„œ๋งŒ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋‚ด๋ถ€ ํŒŒ์ผ(ํŠน์ • UI ์š”์†Œ ๋“ฑ)์ด ์ฒ ์ €ํ•˜๊ฒŒ ์บก์Аํ™”๋˜๋ฉฐ, ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๊ณ  ๋ชจ๋“ˆ ๋‚ด๋ถ€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [12, 13]. * **์ƒํƒœ ๊ด€๋ฆฌ์˜ ์œ„์น˜ ์ง€์ •:** FSD๋Š” ํŠน์ • ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Context, Redux, Zustand ๋“ฑ)์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [14]. ๋Œ€์‹  ์ƒํƒœ๊ฐ€ ์•„ํ‚คํ…์ฒ˜์ ์œผ๋กœ ์–ด๋””์— ์œ„์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€๋งŒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—”ํ‹ฐํ‹ฐ์˜ ์ƒํƒœ๋Š” ์—”ํ‹ฐํ‹ฐ(entities) ๊ณ„์ธต์—, ๊ธฐ๋Šฅ๋ณ„ ์ƒํ˜ธ์ž‘์šฉ ์ƒํƒœ๋Š” ๊ธฐ๋Šฅ(features) ๊ณ„์ธต์—, ์ธํ”„๋ผ์˜ ์ „์—ญ ์ƒํƒœ๋Š” ์•ฑ(app) ๊ณ„์ธต์— ๋ฐฐ์น˜ํ•˜์—ฌ ์ƒํƒœ ์†Œ์œ ๊ถŒ์„ ๋ช…ํ™•ํžˆ ํ•ฉ๋‹ˆ๋‹ค [14]. * **๋„์ž… ์‹œ ํ•™์Šต ๊ณก์„ ๊ณผ ๊ณ ๋ ค์‚ฌํ•ญ:** ํŒŒ์ผ์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ ์œ ํ˜• ์œ„์ฃผ๋กœ ๊ฐœ๋ฐœํ•˜๋˜ ๊ฐœ๋ฐœ์ž๊ฐ€ '๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ' ์œ„์ฃผ์˜ FSD ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ๋Š” ํ•™์Šต ๊ณก์„ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [15]. ํŠนํžˆ ํŠน์ • ์ปดํฌ๋„ŒํŠธ๊ฐ€ '๊ธฐ๋Šฅ(Feature)'์ธ์ง€ '์œ„์ ฏ(Widget)'์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋“ฑ ๊ฒฝ๊ณ„๋ฅผ ์ฐพ๋Š” ์˜๋ฏธ๋ก ์  ๋…ผ์˜์—์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Frontend Folder Structure]], [[Clean Code Principles]], [[Domain-Driven Design (DDD)]], [[Component-Based Architecture]], [[State Management in React]], [[React Refactoring]] - **Projects/Contexts:** [[Scalable React Apps]], [[Enterprise-level Frontend Systems]], [[Monorepo Environments]] - **Contradictions/Notes:** FSD๋Š” ๋ช…ํ™•ํ•œ ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ๋ฅผ ๊ฐ•์กฐํ•˜์ง€๋งŒ, ์‹ค์ œ ๊ฐœ๋ฐœ์ž๋“ค์€ '์ธ์ฆ(Auth)'๊ณผ ๊ฐ™์€ ๊ต์ฐจ ๊ด€์‹ฌ์‚ฌ(Cross-cutting concerns)๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๊ฒฝ๊ณ„๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์–ด๋ ต๋‹ค๊ณ  ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„ ๋‹จ์ผ ๊ธฐ๋Šฅ์œผ๋กœ ๋ณผ ๊ฒƒ์ธ์ง€, ์•„๋‹ˆ๋ฉด ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ชผ๊ฐœ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๊ณ„์ƒ ๋”œ๋ ˆ๋งˆ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [16-18]. ๋”๋ถˆ์–ด ํŒ€์›๋“ค์ด ์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์™„๋ฒฝํžˆ ์ˆ™์ง€ํ•˜์ง€ ์•Š์œผ๋ฉด, ์˜คํžˆ๋ ค ๋ชจํ˜ธํ•œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ `/shared` ํด๋”์— ๋ชฐ์•„๋„ฃ์–ด ๊ฑฐ๋Œ€ํ•œ ์˜์กด์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์œ„ํ—˜์ด ์žˆ๋‹ค๋Š” ์‹ค๋ฌด์ž๋“ค์˜ ๊ฒฝ๊ณ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค [11, 18]. --- *Last updated: 2026-04-26*