Skip to main content

๋‘˜๋Ÿฌ๋ณด๊ธฐ

Feature-Sliced Design (FSD)๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ๋ฅผ ์žก๋Š” ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด, ์ฝ”๋“œ ๊ตฌ์„ฑ์— ๊ด€ํ•œ ๊ทœ์น™๊ณผ ๊ด€๋ก€๋ฅผ ๋ชจ์•„๋†“์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•๋ก ์˜ ์ฃผ์š” ๋ชฉ์ ์€ ๊ณ„์† ๋ณ€ํ™”ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ์ง๋ฉดํ–ˆ์„ ๋•Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

FSD๋Š” ๊ทœ์น™์„ ์ œ์‹œํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์‹ค์ œ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๋•๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋“ค์„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฆฐํ„ฐ, CLI๋‚˜ IDE๋ฅผ ํ†ตํ•œ ํด๋” ์ƒ์„ฑ๊ธฐ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ์˜ˆ์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ• ๊นŒ?โ€‹

FSD๋Š” ๊ทœ๋ชจ์— ๊ด€๊ณ„ ์—†์ด ๋ชจ๋“  ํŒ€๊ณผ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค:

  • ์—ฌ๋Ÿฌ๋ถ„์ด ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๋ฉด (์›น, ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํ†ฑ ๋“ฑ์˜ UI)
  • ์—ฌ๋Ÿฌ๋ถ„์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๋ฉด

๊ทธ๊ฒŒ ๋‹ค์˜ˆ์š”! ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, UI ํ”„๋ ˆ์ž„์›Œํฌ, ์ƒํƒœ ๊ด€๋ฆฌ์˜ ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. FSD๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ชจ๋…ธ๋ ˆํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์•ฑ์„ ํŒจํ‚ค์ง€๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๊ฐ๊ฐ์— FSD๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ ํฐ ๊ทœ๋ชจ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๊ณ  FSD๋กœ์˜ ์ „ํ™˜์„ ๊ณ ๋ ค ์ค‘์ด๋ผ๋ฉด, ํ˜„์žฌ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๊ณ  ์ƒํ˜ธ ์—ฐ๊ฒฐ๋˜์–ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์›Œ์กŒ๊ฑฐ๋‚˜, ๋งŽ์€ ์‚ฌ๋žŒ์ด ์ƒˆ๋กญ๊ฒŒ ํŒ€์— ํ•ฉ๋ฅ˜ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋ฉด ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œโ€‹

๋‹ค์Œ์€ FSD๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค:

  • ๐Ÿ“ app
  • ๐Ÿ“ pages
  • ๐Ÿ“ shared

์ด ์ตœ์ƒ์œ„ ํด๋”๋“ค์„ ๋ ˆ์ด์–ด(layers)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค:

  • ๐Ÿ“‚ app
    • ๐Ÿ“ routes
    • ๐Ÿ“ analytics
  • ๐Ÿ“‚ pages
    • ๐Ÿ“ home
    • ๐Ÿ“‚ article-reader
      • ๐Ÿ“ ui
      • ๐Ÿ“ api
    • ๐Ÿ“ settings
  • ๐Ÿ“‚ shared
    • ๐Ÿ“ ui
    • ๐Ÿ“ api

๐Ÿ“‚ pages ๋‚ด๋ถ€์˜ ํด๋”๋“ค์„ ์Šฌ๋ผ์ด์Šค(slices)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด์Šค๋Š” ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ๋ ˆ์ด์–ด๋ฅผ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.(์ด ๊ฒฝ์šฐ์—๋Š” ํŽ˜์ด์ง€๋ณ„๋กœ)

๐Ÿ“‚ app, ๐Ÿ“‚ shared, ๊ทธ๋ฆฌ๊ณ  ๐Ÿ“‚ pages/article-reader ๋‚ด๋ถ€์˜ ํด๋”๋“ค์„ ์„ธ๊ทธ๋จผํŠธ(segments)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์„ธ๊ทธ๋จผํŠธ๋Š” ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ์  ๋ชฉ์ , ๋‹ค์‹œ๋งํ•ด ์ฝ”๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ•  ๋”ฐ๋ผ ์Šฌ๋ผ์ด์Šค(๋˜๋Š” ๋ ˆ์ด์–ด)๋ฅผ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

๊ฐœ๋…โ€‹

๋ ˆ์ด์–ด, ์Šฌ๋ผ์ด์Šค, ์„ธ๊ทธ๋จผํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค:

์•„๋ž˜์— ์„ค๋ช…๋œ FSD ๊ฐœ๋…์˜ ๊ณ„์ธต ๊ตฌ์กฐ

์œ„ ๊ทธ๋ฆผ: ์„ธ ๊ฐœ์˜ ์ˆ˜์ง ๊ตฌ์กฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ๊ฐ "๋ ˆ์ด์–ด", "์Šฌ๋ผ์ด์Šค", "์„ธ๊ทธ๋จผํŠธ"๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ ˆ์ด์–ด"์—๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ 7๊ฐœ์˜ ๊ตฌ๋ถ„์ด ์žˆ์œผ๋ฉฐ, "app", "processes", "pages", "widgets", "features", "entities", "shared"๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. "processes" ๊ตฌ๋ถ„์€ ์ทจ์†Œ์„ ์ด ๊ทธ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. "entities" ๊ตฌ๋ถ„์€ ๋‘ ๋ฒˆ์งธ ๊ธฐ๋‘ฅ์ธ "์Šฌ๋ผ์ด์Šค"์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด, ๋‘ ๋ฒˆ์งธ ๊ธฐ๋‘ฅ์ด "entities"์˜ ๋‚ด์šฉ์ด๋ผ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

"์Šฌ๋ผ์ด์Šค"์—๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ 3๊ฐœ์˜ ๊ตฌ๋ถ„์ด ์žˆ์œผ๋ฉฐ, "user", "post", "comment"๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. "post" ๊ตฌ๋ถ„์€ ์„ธ ๋ฒˆ์งธ ๊ธฐ๋‘ฅ์ธ "์„ธ๊ทธ๋จผํŠธ"์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด, ์„ธ ๋ฒˆ์งธ ๊ธฐ๋‘ฅ์ด "post"์˜ ๋‚ด์šฉ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

"์„ธ๊ทธ๋จผํŠธ"์—๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ 3๊ฐœ์˜ ๊ตฌ๋ถ„์ด ์žˆ์œผ๋ฉฐ, "ui", "model", "api"๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ด์–ดโ€‹

๋ ˆ์ด์–ด๋Š” ๋ชจ๋“  FSD ํ”„๋กœ์ ํŠธ์—์„œ ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ, ์ด๋ฆ„์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ(์œ„์—์„œ ์•„๋ž˜๋กœ) 7๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

  1. App* - ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ - ๋ผ์šฐํŒ…, ์ง„์ž…์ , ์ „์—ญ ์Šคํƒ€์ผ, ํ”„๋กœ๋ฐ”์ด๋”.
  2. Processes(๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ) - ํŽ˜์ด์ง€ ๊ฐ„ ๋ณต์žกํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค.
  3. Pages - ์ „์ฒด ํŽ˜์ด์ง€ ๋˜๋Š” ์ค‘์ฒฉ ๋ผ์šฐํŒ…์—์„œ ํŽ˜์ด์ง€์˜ ์ฃผ์š” ๋ถ€๋ถ„.
  4. Widgets - ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๊ธฐ๋Šฅ ๋˜๋Š” UI ์ปดํฌ๋„ŒํŠธ, ๋ณดํ†ต ํ•˜๋‚˜์˜ ์™„์ „ํ•œ ๊ธฐ๋Šฅ.
  5. Features - ์ œํ’ˆ ์ „๋ฐ˜์— ๊ฑธ์ณ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์ฒด๋กœ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์งˆ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋™์ž‘.
  6. Entities - ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹ค๋ฃจ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ, ์˜ˆ๋ฅผ ๋“ค์–ด user ๋˜๋Š” product.
  7. Shared* - ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ, ํŠนํžˆ ํ”„๋กœ์ ํŠธ/๋น„์ฆˆ๋‹ˆ์Šค์˜ ํŠน์„ฑ๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์„ ๋•Œ (๋ฐ˜๋“œ์‹œ ๊ทธ๋Ÿด ํ•„์š”๋Š” ์—†์Œ).

* - App๊ณผ Shared๋Š” ๋‹ค๋ฅธ ๋ ˆ์ด์–ด๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์Šฌ๋ผ์ด์Šค๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฉฐ, ์ง์ ‘ ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ ˆ์ด์–ด๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์˜ ์ค‘์š”ํ•œ ์ ์€ ํ•œ ๋ ˆ์ด์–ด์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฐ˜๋“œ์‹œ ์•„๋ž˜์— ์žˆ๋Š” ๋ ˆ์ด์–ด์˜ ๊ตฌ์„ฑ ์š”์†Œ๋งŒ ์•Œ์ˆ˜์žˆ๊ณ  ์ž„ํฌํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด์Šคโ€‹

๋‹ค์Œ์€ ์Šฌ๋ผ์ด์Šค์ž…๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด์Šค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ์ž์œ ๋กญ๊ฒŒ ์ด๋ฆ„์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , ์›ํ•˜๋Š” ๋งŒํผ ๋งŽ์ด ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด์Šค๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ด€๋ จ๋œ ๋ชจ๋“ˆ๋“ค์„ ๊ฐ€๊นŒ์ด ์œ ์ง€ํ•จ์œผ๋กœ์จ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋” ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด์Šค๋Š” ๊ฐ™์€ ๋ ˆ์ด์–ด ์•ˆ์—์„œ ๋‹ค๋ฅธ ์Šฌ๋ผ์ด์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ด ๊ทœ์น™์€ ๋†’์€ ์‘์ง‘๋„์™€ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์„ธ๊ทธ๋จผํŠธโ€‹

์Šฌ๋ผ์ด์Šค์™€ App, Shared ๋ ˆ์ด์–ด๋Š” ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ชฉ์ ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ์„ธ๊ทธ๋จผํŠธ ์ด๋ฆ„์€ ํ‘œ์ค€์— ์˜ํ•ด ์ œํ•œ๋˜์ง€ ์•Š์ง€๋งŒ, ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ชฉ์ ์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ด€๋ก€์ ์ธ ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.:

  • ui - UI์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ: UI ์ปดํฌ๋„ŒํŠธ, ๋‚ ์งœ ํฌ๋งทํ„ฐ, ์Šคํƒ€์ผ ๋“ฑ.
  • api - ๋ฐฑ์—”๋“œ ์ƒํ˜ธ์ž‘์šฉ: request ํ•จ์ˆ˜, ๋ฐ์ดํ„ฐ ํƒ€์ž…, mapper ๋“ฑ.
  • model - ๋ฐ์ดํ„ฐ ๋ชจ๋ธ: ์Šคํ‚ค๋งˆ, ์ธํ„ฐํŽ˜์ด์Šค, ์Šคํ† ์–ด, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง.
  • lib - ์Šฌ๋ผ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฝ”๋“œ.
  • config - ์„ค์ • ํŒŒ์ผ๊ณผ ๊ธฐ๋Šฅ ํ”Œ๋ž˜๊ทธ.

๋Œ€๋ถ€๋ถ„์˜ ๋ ˆ์ด์–ด์—์„œ๋Š” ์ด ์„ธ๊ทธ๋จผํŠธ๋“ค๋กœ ์ถฉ๋ถ„ํ•˜๋ฉฐ, Shared๋‚˜ App์—์„œ๋งŒ ์ž์‹ ๋งŒ์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฑด ๊ผญ ์ง€์ผœ์•ผํ•˜๋Š” ๊ทœ์น™์€ ์•„๋‹™๋‹ˆ๋‹ค.

์žฅ์ โ€‹

  • ๊ท ์ผ์„ฑ
    ๊ตฌ์กฐ๊ฐ€ ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์–ด, ํ”„๋กœ์ ํŠธ๊ฐ€ ๋” ๊ท ์ผํ•ด์ง€๋ฉฐ, ์ด๋Š” ์ƒˆ๋กœ์šด ๋ฉค๋ฒ„๊ฐ€ ํŒ€์— ์ ์‘ํ•˜๋Š” ๊ฒƒ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ๋ณ€๊ฒฝ๊ณผ ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•œ ์•ˆ์ •์„ฑ
    ํ•œ ๋ ˆ์ด์–ด์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ฐ™์€ ๋ ˆ์ด์–ด๋‚˜ ์ƒ์œ„ ๋ ˆ์ด์–ด์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์•ฑ์˜ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ ์—†์ด ๊ฒฉ๋ฆฌ๋œ ์ˆ˜์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋กœ์ง ์žฌ์‚ฌ์šฉ์„ ํ†ต์ œ
    ๋ ˆ์ด์–ด์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๋งค์šฐ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๋Š” ๋งค์šฐ ์ง€์—ญ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” DRY ์›์น™๊ณผ ์‹ค์šฉ์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„์ฆˆ๋‹ˆ์Šค์™€ ์‚ฌ์šฉ์ž ์š”๊ตฌ์— ๋Œ€ํ•œ ์ง€ํ–ฅ์„ฑ
    ์•ฑ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์œผ๋กœ ๋ถ„ํ• ๋˜๋ฉฐ, ์ด๋ฆ„์„ ์ง€์„ ๋•Œ ๋น„์ฆˆ๋‹ˆ์Šค ์–ธ์–ด ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”„๋กœ์ ํŠธ์™€ ๋ฌด๊ด€ํ•œ ๋ถ€๋ถ„์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ์•Š๊ณ ๋„ ์œ ์šฉํ•œ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์ง„์  ๋„์ž…โ€‹

FSD๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ „๋žต์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝํ—˜์—์„œ ์œ ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  1. App๊ณผ Shared ๋ ˆ์ด์–ด๋ฅผ ๋ชจ๋“ˆ๋ณ„๋กœ ์ฒœ์ฒœํžˆ ๊ตฌ์„ฑํ•˜์—ฌ ๊ธฐ๋ฐ˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”.

  2. ๊ธฐ์กด์˜ ๋ชจ๋“  UI๋ฅผ Widgets์™€ Pages์— ํฐ ํ‹€์—์„œ ๋ถ„๋ฐฐํ•˜์„ธ์š”. FSD ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜๋Š” ์˜์กด์„ฑ์ด ์žˆ๋”๋ผ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

  3. ์ ์ง„์ ์œผ๋กœ ์ž„ํฌํŠธ ์œ„๋ฐ˜์„ ํ•ด๊ฒฐํ•˜๊ณ , Entities์™€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Features๋„ ์ถ”์ถœํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์„ธ์š”.

๋ฆฌํŒฉํ† ๋ง ์ค‘์ด๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ๋Š” ์ƒˆ๋กœ์šด ๋Œ€๊ทœ๋ชจ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„โ€‹

  • FSD๋กœ ์‚ฌ๊ณ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ํŠœํ† ๋ฆฌ์–ผ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”.
  • ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์‹œ๋‚˜์š”? ์˜ˆ์ œ ์„น์…˜์— ๋งŽ์€ ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์งˆ๋ฌธ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์šฐ๋ฆฌ์˜ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„ํŒ…๋ฐฉ์— ๋“ค๋Ÿฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋„์›€์„ ๋ฐ›์œผ์„ธ์š”.