๐Ÿ› ๏ธ ๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„(FSD) - ๊ณผ์—ฐ ์ด๊ฒŒ ์ตœ์ ์˜ ์•„ํ‚คํ…์ฒ˜์ผ๊นŒ?

์‹ ํƒœ์ผยท2024๋…„ 10์›” 17์ผ
post-thumbnail

๊ธฐ์กด์˜ ํด๋ก ์ฝ”๋”ฉ - ํ† ์ด ํ”„๋กœ์ ํŠธ, ์™ธ๋ถ€ ํ”„๋กœ์ ํŠธ์—์„œ์˜ ํด๋”๊ตฌ์กฐ๋Š” ๋ฏธ์„ธํ•˜๊ฒŒ ๋‹ค๋ฅธ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฌผ๋ก  ๋ชจ๋‘ ๋ฆฌ์•กํŠธ cra ์„ธํŒ…์— ๋งž์ถฐ์„œ ํ–ˆ๋‹ค.

React 18๋ฒ„์ „๋ถ€ํ„ฐ ๋‚˜์˜ค๋Š” ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฌธ์„œ๋กœ ํ†ตํ•ด ์ ‘ํ•˜๋ฉด์„œ Next.js 13 App ๋ผ์šฐํ„ฐ ๋ฐฉ์‹์œผ๋กœ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ ๋Š” ์‹ถ์€๋ฐ ํด๋” ์„ธํŒ…์— ๊ด€ํ•˜์—ฌ โ€˜์ •์„โ€™ ์ด๋ผ๋Š” ๋А๋‚Œ์€ ๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค. Korean FE Article ์„ ํ˜๊นƒ ๋ณด๋ฉด์„œ FSD (Feature-Sliced Design, FSD) ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์•Œ๊ฒŒ๋˜์—ˆ๊ณ  ๋‚˜๋งŒ์˜ ๋ฐฉ์‹๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

(๋ฒˆ์—ญ) ๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„ - ์ตœ๊ณ ์˜ ํ”„๋ŸฐํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜


์„œ๋ก 

๋‚˜(?)๋ฅผ ๋น„๋กฏํ•œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ์ข…์ข… ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•œ๋ฒˆ์ฏค์€ ์ƒ๊ฐํ•ด๋ณด๊ฒŒ ๋œ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋ชจ๋“ˆ ๊ฐ„์˜ ๋А์Šจํ•œ ๊ฒฐํ•ฉ๊ณผ ๋†’์€ ์‘์ง‘๋ ฅ์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋ฉฐ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ณ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. ์œ„ ๋ถ๋งˆํฌ๋ฅผ ์‹ค์ œ๋กœ ์ ์€ ์‚ฌ๋žŒ์— ์˜ํ•˜๋ฉด FSD ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜ ์ค‘ ์ตœ๊ณ ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๊ณ  ํ•œ๋‹ค !

์ฐจ๋ก€๋Œ€๋กœ FSD์˜ ๊ฐœ๋…๊ณผ ์ด ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๊ณ , FSD๋ฅผ ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜์™€ ๋น„๊ตํ•œ ๋’ค ์žฅ๋‹จ์ ๊นŒ์ง€ ์•Œ์•„๋ณด์ž.

๋จผ์ € ๋ ˆ์ด์–ด(layer), ์Šฌ๋ผ์ด์Šค(slice), ์„ธ๊ทธ๋จผํŠธ(segment)์˜ ์„ธ ๊ฐ€์ง€ ๊ฐœ๋…์„ ๊ตฌ๋ถ„ํ•ด๋ณด์ž.

FSD ์„ธ ๊ฐ€์ง€ ๊ณ„์ธต๋ถ„๋ฆฌ

1. ๋ ˆ์ด์–ด

๋ ˆ์ด์–ด๋Š” ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์ด์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„ํ•ด์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ด๋‹ค. ๋ ˆ์ด์–ด์˜ ์ˆ˜๋Š” ์ตœ๋Œ€ 7๊ฐœ๋กœ ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ผ๋ถ€๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ๋‹ค. ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ ˆ์ด์–ด๊ฐ€ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค.

๊ฐ ๋ ˆ์ด์–ด์—๋Š” ๊ณ ์œ ํ•œ ์ฑ…์ž„ ์˜์—ญ์ด ์žˆ์œผ๋ฉฐ ์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์ง€ํ–ฅ์ ์ด๋‹ค.


  • app: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด ์ดˆ๊ธฐํ™”๋˜๋Š” ๊ณณ์ด๋‹ค. ํ”„๋กœ๋ฐ”์ด๋”, ๋ผ์šฐํ„ฐ, ์ „์—ญ ์Šคํƒ€์ผ, ์ „์—ญ ํƒ€์ž… ์„ ์–ธ ๋“ฑ์ด ์—ฌ๊ธฐ์—์„œ ์ •์˜๋œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง„์ž…์  ์—ญํ• ์„ ํ•œ๋‹ค.

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

  • pages: ์ด ๋ ˆ์ด์–ด์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŽ˜์ด์ง€๊ฐ€ ํฌํ•จ๋œ๋‹ค.

  • widgets: ํŽ˜์ด์ง€์— ์‚ฌ์šฉ๋˜๋Š” ๋…๋ฆฝ์ ์ธ UI ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.

  • features: ์ด ๋ ˆ์ด์–ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์‚ฌ์šฉ์ž ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃฌ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ข‹์•„์š”, ๋ฆฌ๋ทฐ ์ž‘์„ฑ, ์ œํ’ˆ ํ‰๊ฐ€ ๋“ฑ์ด ์žˆ๋‹ค. ์ด ๋˜ํ•œ ์„ ํƒ์  ๋ ˆ์ด์–ด์ด๋‹ค.

  • entities: ์ด ๋ ˆ์ด์–ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋Ÿฌํ•œ ์—”ํ‹ฐํ‹ฐ์—๋Š” ์‚ฌ์šฉ์ž, ๋ฆฌ๋ทฐ, ๋Œ“๊ธ€ ๋“ฑ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ์„ ํƒ์  ๋ ˆ์ด์–ด์ด๋‹ค.

  • shared: ์ด ๋ ˆ์ด์–ด์—๋Š” ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ข…์†๋˜์ง€ ์•Š์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ์™€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” UI ํ‚คํŠธ, axios ์„ค์ •, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ฌถ์ด์ง€ ์•Š์€ ํ—ฌํผ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ ˆ์ด์–ด๋“ค์€ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์กฐ์งํ™”ํ•˜๊ณ , ๋ชจ๋“ˆํ™”๋˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ดํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ด‰์ง„ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.

๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„์˜ ์ฃผ์š” ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ๊ณ„์ธต ๊ตฌ์กฐ์ด๋‹ค. ์ด ๊ตฌ์กฐ์—์„œ features ๋ ˆ์ด์–ด๊ฐ€ entities ๋ ˆ์ด์–ด๋ณด๋‹ค ๋” ์œ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— entities ๋ ˆ์ด์–ด๋Š” features ๋ ˆ์ด์–ด์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ features ๋ ˆ์ด์–ด๋Š” widgets ๋ ˆ์ด์–ด๋‚˜ processes ๋ ˆ์ด์–ด์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์œ„ ๋ ˆ์ด์–ด๋Š” ์•„๋ž˜ ๋ ˆ์ด์–ด๋งŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ–ฅํ•˜๋Š” ์„ ํ˜•์ ์ธ ํ๋ฆ„์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๋ ˆ์ด์–ด์˜ ์œ„์น˜๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์ฝ”๋“œ์˜ ๋” ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์—, ๋ ˆ์ด์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ„ํ—˜ํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด shared ๋ ˆ์ด์–ด์˜ UI ํ‚คํŠธ๋Š” features, widgets, ์‹ฌ์ง€์–ด pages ๋ ˆ์ด์–ด์—์„œ๋„ ์‚ฌ์šฉ๋œ๋‹ค.

2. ์Šฌ๋ผ์ด์Šค

๊ฐ ๋ ˆ์ด์–ด์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„ํ•ด์˜ ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€์ธ ์Šฌ๋ผ์ด์Šค๋ผ๋Š” ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์Šฌ๋ผ์ด์Šค์—์„œ ์—ฐ๊ฒฐ์€ ์ถ”์ƒ์ ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠน์ • ๋น„์Šค๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค. ์Šฌ๋ผ์ด์Šค์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ’๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์Šฌ๋ผ์ด์Šค ์ด๋ฆ„์€ ํ”„๋กœ์ ํŠธ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์— ๋”ฐ๋ผ ์ง์ ‘ ๊ฒฐ์ •๋˜๋ฏ€๋กœ ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„ ๊ฐค๋Ÿฌ๋ฆฌ์—๋Š” ์‚ฌ์ง„, ์•จ๋ฒ”, ๊ฐค๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์€ ์„น์…˜์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์†Œ์…œ ๋„คํŠธ์›Œํฌ์—๋Š” ๊ฒŒ์‹œ๋ฌผ, ์‚ฌ์šฉ์ž, ๋‰ด์Šคํ”ผ๋“œ์™€ ๊ฐ™์€ ์Šฌ๋ผ์ด์Šค๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋œ ์กฐ๊ฐ๋“ค์€ ๊ตฌ์กฐ์ ์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์— ๊ทธ๋ฃน์ง€์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์Šฌ๋ผ์ด์Šค์™€ ๋™์ผํ•œ ๊ฒฉ๋ฆฌ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ์ฝ”๋“œ๋Š” ์ง์ ‘์ ์œผ๋กœ ๊ณต์œ ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

3. ์„ธ๊ทธ๋จผํŠธ

๊ฐ ์Šฌ๋ผ์ด์Šค๋Š” ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ชฉ์ ์— ๋”ฐ๋ผ ์Šฌ๋ผ์ด์Šค ๋‚ด์˜ ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ํŒ€์˜ ํ•ฉ์˜์— ๋”ฐ๋ผ ์„ธ๊ทธ๋จผํŠธ์˜ ๊ตฌ์„ฑ๊ณผ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • api: ํ•„์š”ํ•œ ์„œ๋ฒ„ ์š”์ฒญ

  • ui: ์Šฌ๋ผ์ด์Šค์˜ UI ์ปดํฌ๋„ŒํŠธ

  • model: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์ฆ‰ ์ƒํƒœ์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ. actions ๋ฐ selectors๊ฐ€ ์ด์— ํ•ด๋‹นํ•จ

  • lib: ์Šฌ๋ผ์ด์Šค ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณด์กฐ ๊ธฐ๋Šฅ

  • config: ์Šฌ๋ผ์ด์Šค์— ํ•„์š”ํ•œ ๊ตฌ์„ฑ๊ฐ’์ด์ง€๋งŒ ๊ตฌ์„ฑ ์„ธ๊ทธ๋จผํŠธ๋Š” ๊ฑฐ์˜ ํ•„์š”ํ•˜์ง€ ์•Š์Œ.

  • consts: ํ•„์š”ํ•œ ์ƒ์ˆ˜


๊ณต๊ฐœ API

๊ฐ ์Šฌ๋ผ์ด์Šค์™€ ์„ธ๊ทธ๋จผํŠธ์—๋Š” ๊ณต๊ฐœ API๊ฐ€ ์žˆ๋‹ค. ๊ณต๊ฐœ API๋Š” index.js ๋˜๋Š” index.ts ํŒŒ์ผ์ด๋ฉฐ, ์ด ํŒŒ์ผ์„ ํ†ตํ•ด ์Šฌ๋ผ์ด์Šค ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ์—์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์™ธ๋ถ€๋กœ ์ถ”์ถœํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ์€ ๊ฒฉ๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ฑ์Šค ํŒŒ์ผ์€ ์ง„์ž…์  ์—ญํ• ์„ ํ•œ๋‹ค.

๊ณต๊ฐœ API์— ๋Œ€ํ•œ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šฌ๋ผ์ด์Šค์™€ ์„ธ๊ทธ๋จผํŠธ๋Š” ๊ณต๊ฐœ API ์ธ๋ฑ์Šค ํŒŒ์ผ์— ์ •์˜๋œ ์Šฌ๋ผ์ด์Šค์˜ ๊ธฐ๋Šฅ๊ณผ ์ปดํฌ๋„ŒํŠธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ณต๊ฐœ API์— ์ •์˜๋˜์ง€ ์•Š์€ ์Šฌ๋ผ์ด์Šค ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ์˜ ๋‚ด๋ถ€ ๋ถ€๋ถ„์€ ๊ฒฉ๋ฆฌ๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ ์Šฌ๋ผ์ด์Šค ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณต๊ฐœ API๋Š” import ๋ฐ export๋กœ ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์ฝ”๋“œ์˜ ๋ชจ๋“  ๊ณณ์—์„œ import๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.


์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

์ถ”์ƒํ™” ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

๊ณ„์ธต์ด ๋†’์€ ๋ ˆ์ด์–ด์ผ์ˆ˜๋ก ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋…ธ๋“œ์— ๋” ๋งŽ์ด ์ข…์†๋˜๊ณ  ๋” ๋งŽ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํฌํ•จ๋œ๋‹ค. ๊ณ„์ธต์ด ๋‚ฎ์€ ๋ ˆ์ด์–ด์ผ์ˆ˜๋ก ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’๊ณ  ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์œผ๋ฉฐ ๋ ˆ์ด์–ด ์ž์ฒด์˜ ์ž์œจ์„ฑ์ด ์ ๋‹ค.

FSD๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹

๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„์˜ ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ๊ฒฐํ•ฉ์„ ๋А์Šจํ•˜๊ฒŒ ํ•˜๊ณ  ์‘์ง‘๋ ฅ์„ ๋†’์ด๋Š” ๊ฒƒ์ด๋‹ค. FSD๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ฌ์„ฑํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค.

OOP์—์„œ๋Š” ๋‹คํ˜•์„ฑ(polymorphism), ์บก์Аํ™”(encapsulation), ์ƒ์†(inheritance) ๋ฐ ์ถ”์ƒํ™”(abstraction) ์™€ ๊ฐ™์€ ๊ฐœ๋…์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ํ•ด๊ฒฐํ•ด ์™”๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ๋…๋“ค์€ ์ฝ”๋“œ์˜ ๊ฒฉ๋ฆฌ, ์žฌ์‚ฌ์šฉ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•œ๋‹ค. ์ด๋Š” ์ปดํฌ๋„ŒํŠธ๋‚˜ ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋А๋ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„๋Š” ์ด๋Ÿฌํ•œ ์›์น™๋“ค์„ ํ”„๋ก ํŠธ์—”๋“œ์— ์ ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.

์ถ”์ƒํ™”์™€ ๋‹คํ˜•์„ฑ์€ ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑ๋œ๋‹ค. ๋‚ฎ์€ ๋ ˆ์ด์–ด๋Š” ๋” ์ถ”์ƒํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋†’์€ ๋ ˆ์ด์–ด์—์„œ ์žฌ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠน์ •ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ์†์„ฑ์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋‚˜ ๊ธฐ๋Šฅ์ด ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

์บก์Аํ™”๋Š” ์Šฌ๋ผ์ด์Šค์™€ ์„ธ๊ทธ๋จผํŠธ ์™ธ๋ถ€์—์„œ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ๊ฒฉ๋ฆฌ์‹œํ‚ค๋Š” ๊ณต๊ฐœ API๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑ๋œ๋‹ค. ์Šฌ๋ผ์ด์Šค์˜ ๋‚ด๋ถ€ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ ์ œํ•œ๋˜๋ฉฐ, ๊ณต๊ฐœ API๋Š” ์Šฌ๋ผ์ด์Šค ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ์˜ ๊ธฐ๋Šฅ ๋ฐ ์ปดํฌ๋„ŒํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

์ƒ์† ๋˜ํ•œ ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑ๋œ๋‹ค. ๋” ๋†’์€ ๋ ˆ์ด์–ด๋Š” ๋‚ฎ์€ ๋ ˆ์ด์–ด๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ ์ „์ ์ธ ์•„ํ‚คํ…์ฒ˜์™€์˜ ๋น„๊ต

์–ด์ฉŒ๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์ตœ๊ทผ์— ํ–ˆ๋˜ ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—๋„ ๊ณ ์ „์ ์ธ ์•„ํ‚คํ…์ฒ˜์ด์ง€ ์•Š์•˜๋‚˜ ์‹ถ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์ด ๊ณ ์ „์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ ์นญํ•ด์ง„๋‹ค.

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

๋ฌผ๋ก  ๊ณ ์ „์ ์ธ ์•„ํ‚คํ…์ณ๋Š” ์ง€์†์ ์ธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์—†๋Š” ์ž‘์€ ํ”„๋กœ์ ํŠธ๋‚˜ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—๋Š” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„๋Š” ๊ธฐ ๊ฐœ๋…๊ณผ ํ‘œ์ค€ ๋•๋ถ„์— ๊ณ ์ „์ ์ธ ์•„ํ‚คํ…์ฒ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ FSD๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ณ ์ „์ ์ธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋ณด๋‹ค ๋” ๋†’์€ ์ดํ•ด๋„์™€ ๊ธฐ์ˆ  ์ˆ˜์ค€์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ 2๋…„ ๋ฏธ๋งŒ์˜ ๊ฒฝ๋ ฅ์„ ๊ฐ€์ง„ (๋‚˜๋ฅผ ํฌํ•จํ•œ) ๊ฐœ๋ฐœ์ž๋“ค์€ FSD์— ๋Œ€ํ•ด ๋“ค์–ด๋ณด์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฌธ์ œ๋ฅผ โ€œ๋‚˜์ค‘โ€ ์ด ์•„๋‹Œ โ€œ์ง€๊ธˆโ€ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ๊ณผ ๊ฐœ๋…์—์„œ ๋ฒ—์–ด๋‚œ ๋ถ€๋ถ„๋“ค์ด ์ฆ‰์‹œ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

๋‹จ์ˆœํ•œ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜์™€์˜ ๋น„๊ต

๋‹จ์ˆœํ•œ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ๋‹ค.

  • ๊ธฐ๋Šฅ์„ ์–ด๋–ค ๋ชจ๋“ˆ์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ์— ๋„ฃ์„์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋‚ด์—์„œ ๋ชจ๋“ˆ ์‚ฌ์šฉ์— ์–ด๋ ค์›€์ด ์žˆ๋‹ค.
  • ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
  • ๊ธ€๋กœ๋ฒŒ ํ•จ์ˆ˜์˜ ์•”์‹œ์  ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค.

๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ ๋‹นํžˆ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ, ๋‹จ์ˆœํ•œ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๋ณด๋‹ค๋Š” ๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„๋ฅผ ์„ ํ˜ธํ•ด์•ผ ํ•œ๋‹ค. FSD๋Š” ๋งŽ์€ ๊ทผ๋ณธ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ ๋‹จ์ ๋„ ๊ฑฐ์˜ ์—†๋‹ค.

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

Next.js์™€ FSD์˜ ์ถฉ๋Œ

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

Pages

Next.js์—์„œ๋Š” pages ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํŒŒ์ผ ๋ผ์šฐํŒ…์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ๊ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ๋ผ์šฐํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. FSD์—์„œ๋Š” pages๋Š” ํŽ˜์ด์ง€๋“ค์˜ ํ‰๋ฉด ๋ชฉ๋ก์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ ˆ์ด์–ด๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด Next.js ํŽ˜์ด์ง€์™€ FSD ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉํ• ์ง€์— ๋Œ€ํ•œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค.

Next.js์™€ FSD๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ, [root]/pages/ ์™€ ๊ฐ™์ด Next.js ํŽ˜์ด์ง€๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฃจํŠธ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  FSD ํŽ˜์ด์ง€๋Š” [root]/src/pages/ ์™€ ๊ฐ™์ด src ํด๋” ๋‚ด์— ์ €์žฅํ•œ๋‹ค.

๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‘ ๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. FSD์˜ ํŽ˜์ด์ง€๋“ค์˜ ํ‰๋ฉด ๋ชฉ๋ก์„ ๋‹ค์‹œ ์ด๋ฆ„ ์ง€์€ pages-flat๊ณผ Next.js์˜ ์ค‘์ฒฉ๋œ ๋ผ์šฐํŠธ๋ฅผ ์œ„ํ•œ pages์ด๋‹ค. ์‹ค์ œ ํŽ˜์ด์ง€ ์ฝ”๋“œ๋Š” pages-flat์— ์ €์žฅ๋˜๊ณ , ๊ทธ ํ›„์— pages๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

ํ—ˆ๋‚˜ ๋‚˜๋Š” Next.js 12๋ฒ„์ „ ์ดํ•˜๋กœ๋Š” ํ•™์Šต์„ ํ•œ ์ ์ด ์—†๊ธฐ์— ์ด ๋ฐฉ๋ฒ•์€ ๊ณ ๋ ค์•ˆํ• ๊ฒƒ ๊ฐ™๋‹ค.

App

app ๋ ˆ์ด์–ด์˜ ๋ชจ๋“  ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ Next.js์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŽ˜์ด์ง€์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ ˆ์ด์•„์›ƒ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

app ๋ผ์šฐํ„ฐ๋ฅผ ์ด์šฉํ•œ Next.js์—์„œ์˜ ํŒจํ„ด์€ https://feature-sliced.design/docs/guides/tech/with-nextjs๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„์˜ ์ž ์žฌ๋ ฅ

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

์ด ์•„ํ‚คํ…์ฒ˜์˜ ์ž ์žฌ๋ ฅ์€ ๋งค์šฐ ๋†’๊ฒŒ ํ‰๊ฐ€๋˜๋ฉฐ, ์ „ ์„ธ๊ป˜์˜ ๋‹ค์–‘ํ•œ ๋Œ€ํ˜• ๊ธฐ์—…๋“ค ์‚ฌ์ด์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์ ์ ˆํ•œ ๋„์ž…์ด ์ด๋ฃจ์–ด์ง„๋‹ค๋ฉด, FSD๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๋ถ„์•ผ์—์„œ ์ฃผ๋„์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์†”๋ฃจ์…˜์œผ๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

์žฅ์ 

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

๋‹จ์ 

  • ๋‹ค๋ฅธ ๋งŽ์€ ์•„ํ‚คํ…์ฒ˜ ์†”๋ฃจ์…˜๋“ค์— ๋น„ํ•ด ๋†’์€ ์ง„์ž… ์žฅ๋ฒฝ์ด ์žˆ๋‹ค.
  • ์ธ์‹, ํŒ€ ๋ฌธํ™” ๋ฐ ๊ฐœ๋… ์ค€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ๋„์ „ ๊ณผ์ œ์™€ ๋ฌธ์ œ๋ฅผ ๋‚˜์ค‘์ด ์•„๋‹Œ ์ฆ‰์‹œ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ์ฝ”๋“œ ๋ฌธ์ œ์™€ ๊ฐœ๋…์—์„œ ๋ฒ—์–ด๋‚œ ๋ถ€๋ถ„์„ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์žฅ์ ์œผ๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๋ก 


๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„(FSD)๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฅ๋ฏธ๋กญ๊ณ  ๊ฐ€์น˜ ์žˆ๋Š” ๋ฐœ๊ฒฌ์ด๋‹ค. FSD๋Š” ํŒ€์— ์œ ์—ฐํ•˜๊ณ  ํ‘œ์ค€ํ™”๋˜๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐœ๋ฐœ ๋ฌธํ™”๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋ก ์˜ ๊ธ์ •์ ์ธ ์ธก๋ฉด์„ ํ™œ์šฉํ•˜๋ ค๋ฉด ํŒ€ ๋‚ด์—์„œ ์ง€์‹, ์ธ์‹ ๋ฐ ๊ทœ์น™์ด ํ•„์š”ํ•˜๋‹ค.

FSD๋Š” ๋ช…ํ™•ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์ง€ํ–ฅ์„ฑ, ์—”ํ‹ฐํ‹ฐ ์ •์˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ ๋ฐ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ๊ณผ ๊ฐ™์€ ํŠน์ง•๋“ค๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜๋“ค ์‚ฌ์ด์—์„œ ๋‹๋ณด์ธ๋‹ค.

๋˜ํ•œ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์—์„œ FSD๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ๋ก€์™€, ๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ž˜ ์‚ดํŽด๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค.

๊ณต์‹๋ฌธ์„œ

์˜ˆ์ œ. Github Client

์˜ˆ์ œ. Nike Sneaker and Footwear Store

์˜ˆ์ œ. Sudoku

profile
๋…ธ์›๊ฑฐ์ธ

0๊ฐœ์˜ ๋Œ“๊ธ€