๋กœ๊ณ ๋กœ๊ณ 

FSD

2025๋…„ 6์›” 17์ผ

ย 

1. FSD๋ž€

๊ธฐ๋Šฅ ์ค‘์‹ฌ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํด๋” ๊ตฌ์กฐ ์ „๋žต

๊ธฐ๋Šฅ ์ค‘์‹ฌ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ชจ๋“ˆํ™”ํ•˜๊ณ , ๊ฐ ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹

๋Œ€๊ทœ๋ชจ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

FSD ์•„ํ‚คํ…์ฒ˜๋Š” ๊ฐ ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์ธ ๋„๋ฉ”์ธ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ , ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋ฉฐ, ํŒ€ ํ˜‘์—…์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ๋‹ค.

ย 

ย 

FSD ๊ธฐ๋ณธ ๊ฐœ๋…

FSD๋Š” ๊ธฐ๋Šฅ ์ค‘์‹ฌ(Feature-Oriented) ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ ์ง„์ ์œผ๋กœ ์„ฑ์žฅํ•˜๋ฉด์„œ๋„ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ฒŒ ์„ค๊ณ„๋œ๋‹ค. FSD ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ๋ณธ ์›์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๋ถ„ํ• : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๊ธฐ๋Šฅ์€ ์‹œ์Šคํ…œ์—์„œ ํŠน์ •ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ•œ ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•œ๋‹ค.
  2. ๋ ˆ์ด์–ด๋ง: ๊ธฐ๋Šฅ์„ ๋ ˆ์ด์–ด๋กœ ๋‚˜๋ˆ„์–ด ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Presentation, Domain, Data ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์ด๋Š” ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๊ตฌ์ฒดํ™”๋œ๋‹ค.
  3. ํด๋” ๊ตฌ์กฐ: ๊ธฐ๋Šฅ๋ณ„๋กœ ํด๋” ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋ฉฐ, ๊ฐ ํด๋”๋Š” ๊ทธ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค.
  4. ์žฌ์‚ฌ์šฉ์„ฑ: ๊ณตํ†ต ๊ธฐ๋Šฅ์ด๋‚˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก Shared ๋ ˆ์ด์–ด์— ๋ฐฐ์น˜ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ  ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค.

ย 

ย 

์„ธ๋ถ€๊ตฌ์กฐ

  • Layers (๋ ˆ์ด์–ด): ํ”„๋กœ์ ํŠธ์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„์ด๋ฉฐ, ๊ฐ ๋ ˆ์ด์–ด๋Š” ํŠน์ • ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ๋ ˆ์ด์–ด์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.
  • Slices (์Šฌ๋ผ์ด์Šค): ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋‰œ ๋ชจ๋“ˆ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค. ์‚ฌ์ง„์ฒ˜๋Ÿผ, User, Post, Comment๋“ฑ์˜ ์Šฌ๋ผ์ด์Šค๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • Segments (์„ธ๊ทธ๋จผํŠธ): ๊ฐ ์Šฌ๋ผ์ด์Šค ๋‚ด์—์„œ ๊ธฐ๋Šฅ์„ ๋” ์„ธ๋ถ„ํ™”ํ•œ ๋‹จ์œ„์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ UI, Model, API๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

ย 

ย 

๊ธฐ๋ณธ ๊ตฌ์กฐ

  • App: ํ”„๋กœ์ ํŠธ์˜ ์ตœ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ, shared, entities, features, widgets, pages๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ๊ณ„์ธต์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • Processes: ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  • Pages: ๊ฐœ๋ณ„ ํŽ˜์ด์ง€์˜ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋ฉฐ, app ๊ณ„์ธต์— ์˜์กดํ•œ๋‹ค.
  • Widgets: ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, pages, app ๊ณ„์ธต์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  • Features: ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋ฉฐ, widgets, pages ,ย appย ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
  • Entities: ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋ฉฐ, ์ƒ์œ„ ๋ชจ๋“  ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  • Shared: ๋ชจ๋“  ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จํ•œ๋‹ค.

ย 

ย 

FSD๋Š” ์–ธ์ œ ์ ์šฉํ•ด์•ผ ํ• ๊นŒ

์šด์˜๊ธฐ๊ฐ„์ด ์งง๊ฑฐ๋‚˜ ์ž‘์€ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋‚˜ ์ ์ง„์ ์œผ๋กœ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ์˜ˆ์ •์ด๋ผ๋ฉด FSD ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๋Š”๊ฑธ ๊ณ ๋ คํ•ด๋ด์•ผํ•œ๋‹ค.