Skip to content

Commit dce489e

Browse files
authored
docs: update kr Get Started overview for clarity (#875)
1 parent 0d29c4c commit dce489e

File tree

1 file changed

+85
-65
lines changed
  • i18n/kr/docusaurus-plugin-content-docs/current/get-started

1 file changed

+85
-65
lines changed

โ€Ži18n/kr/docusaurus-plugin-content-docs/current/get-started/overview.mdxโ€Ž

Lines changed: 85 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,75 @@ sidebar_position: 1
44

55
# ๊ฐœ์š”
66

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

10-
FSD๋Š” ๋‹จ์ˆœํ•œ ๊ทœ์น™ ์ง‘ํ•ฉ์ด ์•„๋‹ˆ๋ผ ์‹ค๋ฌด๋ฅผ ์œ„ํ•œ ๋„๊ตฌ ์ฒด๊ณ„๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
11-
- ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” [Linter][ext-steiger]
12-
- CLI ๋ฐ IDE ๊ธฐ๋ฐ˜์˜ [ํด๋” ์ƒ์„ฑ๊ธฐ][ext-tools]
13-
- ๋‹ค์–‘ํ•œ ๊ตฌ์กฐ๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” [์˜ˆ์ œ ๋ชจ์Œ][examples]
11+
FSD๋Š” ๋‹จ์ˆœํ•œ ํด๋” ๊ทœ์น™์ด ์•„๋‹™๋‹ˆ๋‹ค.
12+
์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
13+
14+
- [Steiger][ext-steiger] โ€” ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๊ฐ€ FSD ๊ธฐ์ค€์— ๋งž๋Š”์ง€ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
15+
- [Awesome][ext-tools] โ€” FSD ์˜ˆ์ œ์™€ ๋„๊ตฌ๋ฅผ ๋ชจ์•„๋‘” ์ฐธ๊ณ  ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.
16+
- [์˜ˆ์ œ ๋ชจ์Œ][examples] โ€” ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋œ ํด๋” ๊ตฌ์กฐ ์˜ˆ์‹œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1417

1518
## ๋‚ด ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ• ๊นŒ์š”? {#is-it-right-for-me}
1619

17-
FSD๋Š” ๋‹ค์Œ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋ฉด ๋„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
20+
FSD๋Š” ์›น, ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํ†ฑ ๋“ฑ **ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ์— ์ž˜ ์–ด์šธ๋ฆฝ๋‹ˆ๋‹ค.**
21+
๋‹จ์ˆœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค๋Š” **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
1822

19-
- **ํ”„๋ก ํŠธ์—”๋“œ**(์›น, ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํ†ฑ ๋“ฑ)๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๊ณ 
20-
- **๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ**๊ฐ€ ์•„๋‹Œ **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๋ฉด
23+
๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์–ธ์–ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์— ์ œํ•œ์ด ์—†๊ณ , Monorepo ํ™˜๊ฒฝ์—์„œ๋„ ๋‹จ๊ณ„์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2124

22-
์–ธ์–ด, UI ํ”„๋ ˆ์ž„์›Œํฌ, ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ์— ๋Œ€ํ•œ ์ œ์•ฝ์€ ์—†์Šต๋‹ˆ๋‹ค.
23-
Monorepo ํ™˜๊ฒฝ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๋‚˜๋ˆ  **์ ์ง„์ ์œผ๋กœ ์ ์šฉ**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
25+
> ์ง€๊ธˆ ๊ตฌ์กฐ์— ํŠน๋ณ„ํ•œ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ๊ตณ์ด ๋ฐ”๊ฟ€ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
26+
> ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด๋ผ๋ฉด FSD๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
27+
> - ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด์„œ ๊ตฌ์กฐ๊ฐ€ ์–ฝํžˆ๊ณ , ์œ ์ง€๋ณด์ˆ˜ ์†๋„๊ฐ€ ๋А๋ ค์กŒ์„ ๋•Œ
28+
> - ์ƒˆ๋กœ ํ•ฉ๋ฅ˜ํ•œ ํŒ€์›์ด ํด๋” ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค์–ดํ•  ๋•Œ
2429
25-
> ํ˜„์žฌ ๊ตฌ์กฐ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฐ”๊ฟ€ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
26-
> ๋‹ค๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด๋ผ๋ฉด ๋„์ž…์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”:
27-
>
28-
> - ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด์„œ ๊ตฌ์กฐ๊ฐ€ ์–ฝํžˆ๊ณ , ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋А๋ ค์กŒ์„ ๋•Œ
29-
> - ์ƒˆ๋กœ์šด ํŒ€์›์ด ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ์ƒํ™ฉ์ผ ๋•Œ
30+
๋‹ค๋งŒ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ FSD์— ๊ผญ ๋งž๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
31+
์˜ˆ์‹œ๋กœ ๊ฐ ํŽ˜์ด์ง€๊ฐ€ ๋…๋ฆฝ์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์ง„ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์˜คํžˆ๋ ค ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
32+
๋”ฐ๋ผ์„œ ๋„์ž… ์ „์—๋Š” **ํŒŒ์ผ๋Ÿฟ ํ”„๋กœ์ ํŠธ๋กœ ๋จผ์ € ๊ฒ€์ฆํ•ด๋ณด๋Š” ๊ฒƒ**์„ ์ ๊ทน ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
3033

31-
๊ตฌ์กฐ ์ „ํ™˜์„ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด [Migration ๊ฐ€์ด๋“œ][migration]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
34+
๊ตฌ์กฐ๋ฅผ ์ „ํ™˜ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค๋ฉด [Migration ๊ฐ€์ด๋“œ][migration]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
3235

3336
## ๊ตฌ์กฐ ์˜ˆ์‹œ {#basic-example}
3437

3538
๊ฐ„๋‹จํ•œ FSD ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
3639

37-
- `๐Ÿ“ app`
38-
- `๐Ÿ“ pages`
39-
- `๐Ÿ“ shared`
40-
41-
์ด ์ƒ์œ„ ํด๋”๋“ค์€ ๊ฐ๊ฐ **Layer**์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
42-
43-
- `๐Ÿ“‚ app`
44-
- `๐Ÿ“ routes`
45-
- `๐Ÿ“ analytics`
46-
- `๐Ÿ“‚ pages`
47-
- `๐Ÿ“ home`
48-
- `๐Ÿ“‚ article-reader`
49-
- `๐Ÿ“ ui`
50-
- `๐Ÿ“ api`
51-
- `๐Ÿ“ settings`
52-
- `๐Ÿ“‚ shared`
53-
- `๐Ÿ“ ui`
54-
- `๐Ÿ“ api`
55-
56-
- ๐Ÿ“‚ pages ๋‚ด๋ถ€ ํด๋”๋“ค์€ **Slice**์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฉ”์ธ(์ด ์˜ˆ์‹œ์—์„œ๋Š” ํŽ˜์ด์ง€) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
57-
- `๐Ÿ“‚ app`, `๐Ÿ“‚ shared`, `๐Ÿ“‚ pages/article-reader` ๋‚ด์˜ ํ•˜์œ„ ํด๋”๋“ค์€ **Segment**์ž…๋‹ˆ๋‹ค. Segment๋Š” ํ•ด๋‹น ์ฝ”๋“œ์˜ **๊ธฐ๋Šฅ ๋ชฉ์ **(UI, API ํ†ต์‹  ๋“ฑ)์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.
40+
```bash
41+
- ๐Ÿ“ app
42+
- ๐Ÿ“ pages
43+
- ๐Ÿ“ shared
44+
```
45+
46+
์ด ์ƒ์œ„ ํด๋”๋“ค์ด **Layer**์ž…๋‹ˆ๋‹ค.
47+
Layer๋Š” ํ‘œ์ค€ํ™”๋œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉฐ, ๊ฐ๊ฐ ๋ช…ํ™•ํ•œ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
48+
49+
```bash
50+
- ๐Ÿ“‚ app
51+
- ๐Ÿ“ routes
52+
- ๐Ÿ“ analytics
53+
- ๐Ÿ“‚ pages
54+
- ๐Ÿ“ home
55+
- ๐Ÿ“‚ article-reader
56+
- ๐Ÿ“ ui
57+
- ๐Ÿ“ api
58+
- ๐Ÿ“ settings
59+
- ๐Ÿ“‚ shared
60+
- ๐Ÿ“ ui
61+
- ๐Ÿ“ api
62+
```
63+
64+
๐Ÿ“‚ pages ๋‚ด๋ถ€์˜ *home*, *article-reader*, *settings*๋Š” **Slice**์ž…๋‹ˆ๋‹ค.
65+
Slice๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ(์ด ์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ ํŽ˜์ด์ง€) ๋‹จ์œ„๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
66+
67+
๊ฐ Slice ์•ˆ์—๋Š” ui, api, model ๋“ฑ์˜ **Segment**๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
68+
Segment๋Š” ์ฝ”๋“œ์˜ ์—ญํ• ์ด๋‚˜ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.
69+
70+
- **ui** - UI Components
71+
- **api** - REST/GraphQL Client, Fetchers
72+
- **model** - State, Types, Selectors
73+
74+
์˜ˆ๋ฅผ ๋“ค์–ด UI ๊ตฌ์„ฑ ์š”์†Œ, ์„œ๋ฒ„ ์—ฐ๋™ ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
75+
๋™์ผํ•œ ๊ตฌ์กฐ๋Š” app๊ณผ shared Layer์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
5876

5977
## ๊ฐœ๋… {#concepts}
6078

@@ -65,7 +83,8 @@ FSD๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๋‹จ๊ณ„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:
6583

6684
<figcaption style={{ fontStyle: "italic", fontSize: "0.9em" }}>
6785
<p>
68-
์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์€ FSD์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„ธ ๊ฐœ์˜ ์ˆ˜์ง ๋ธ”๋ก ๊ทธ๋ฃน์€ ๊ฐ๊ฐ <strong>Layer</strong>, <strong>Slice</strong>, <strong>Segment</strong>๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
86+
์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์€ FSD์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.<br/>
87+
์„ธ ๊ฐœ์˜ ์ˆ˜์ง ๋ธ”๋ก ๊ทธ๋ฃน์€ ๊ฐ๊ฐ <strong>Layer</strong>, <strong>Slice</strong>, <strong>Segment</strong>๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
6988
</p>
7089
<p>
7190
์™ผ์ชฝ์˜ Layer ๋ธ”๋ก์—๋Š” <code>app</code>, <code><s>processes</s></code>, <code>pages</code>, <code>widgets</code>,
@@ -76,7 +95,7 @@ FSD๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๋‹จ๊ณ„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:
7695
์˜ˆ์‹œ๋กœ๋Š” <code>user</code>, <code>post</code>, <code>comment</code> ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
7796
</p>
7897
<p>
79-
๊ฐ Slice๋Š” ๋‹ค์‹œ ๊ธฐ๋Šฅ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋‚˜๋‰˜๋Š” Segment๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
98+
Slice๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๋ณ„(user, post, comment)๋กœ ๋‚˜๋‰˜๋ฉฐ, ๊ฐ Slice ์•ˆ์˜ Segment๋“ค์€ ์ฝ”๋“œ์˜ ์—ญํ• (์˜ˆ: UI, ๋ฐ์ดํ„ฐ, ์ƒํƒœ) ์— ๋”ฐ๋ผ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.<br/>
8099
์˜ˆ์‹œ๋กœ <code>post</code> Slice์—๋Š” <code>ui</code>, <code>model</code>, <code>api</code> Segment๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
81100
</p>
82101
</figcaption>
@@ -86,64 +105,65 @@ FSD๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๋‹จ๊ณ„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:
86105

87106
Layer๋Š” ๋ชจ๋“  FSD ํ”„๋กœ์ ํŠธ์˜ ํ‘œ์ค€ ์ตœ์ƒ์œ„ ํด๋”์ž…๋‹ˆ๋‹ค.
88107

89-
1. **App\*** - Routing, Entrypoint, Globalย Styles, Provider ๋“ฑ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ
90-
2. **Processes**(๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ) - ํŽ˜์ด์ง€ ๊ฐ„ ๋ณตํ•ฉย ์‹œ๋‚˜๋ฆฌ์˜ค
91-
3. **Pages** - ์ „์ฒด page ๋˜๋Š” ์ค‘์ฒฉย Routing์˜ ํ•ต์‹ฌย ์˜์—ญ
92-
4. **Widgets** - ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Œ€ํ˜•โ€ฏUIยท๊ธฐ๋Šฅย ๋ธ”๋ก
93-
5. **Features** - ์ œํ’ˆ ์ „๋ฐ˜์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šคย ๊ธฐ๋Šฅ
94-
6. **Entities** - user,ย product ๊ฐ™์€ ํ•ต์‹ฌย ๋„๋ฉ”์ธย Entity
95-
7. **Shared*** - ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ์ผ๋ฐ˜ย ์œ ํ‹ธ๋ฆฌํ‹ฐ
96-
97-
98-
_\* - **AppยทShared** Layer๋Š” Slice ์—†์ด ๊ณง๋ฐ”๋กœ Segment๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค._
99-
100-
์ƒ์œ„ Layer์˜ ๋ชจ๋“ˆ์€ ์ž์‹ ๋ณด๋‹ค ํ•˜์œ„ Layer๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
108+
1. **App** - Routing, Entrypoint, Globalย Styles, Provider ๋“ฑ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ
109+
2. **Processes** - ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ
110+
3. **Pages** - Route ๊ธฐ์ค€์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ฃผ์š” ํ™”๋ฉด ๋‹จ์œ„
111+
4. **Widgets** - ํฌ๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” UI ๊ตฌ์„ฑ ๋‹จ์œ„, ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์™„๊ฒฐ๋œ ํ™”๋ฉด ๊ธฐ๋Šฅ(use case)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
112+
5. **Features** - ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ์•ก์…˜์„ ๊ตฌํ˜„ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ œํ’ˆ ๊ธฐ๋Šฅ ๋‹จ์œ„
113+
6. **Entities** - ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹ค๋ฃจ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค Entity
114+
7. **Shared** - ๋ชจ๋“  Layer์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋“ฑ)
101115

116+
**App/Shared** Layer๋Š” Slice ์—†์ด Segment๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
117+
์ƒ์œ„ Layer๋Š” ์ž์‹ ๋ณด๋‹ค ํ•˜์œ„ Layer๋ฅผ ์ฐธ์กฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•˜์œ„ Layer๊ฐ€ ์ƒ์œ„ Layer๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
118+
์˜ˆ๋ฅผ ๋“ค์–ด pages๋Š” features๋‚˜ entities์˜ ๋ชจ๋“ˆ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, features๊ฐ€ pages๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.
102119

103120
### Sliceย  {#slices}
104121

105-
Slice๋Š” Layer ๋‚ด๋ถ€๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
106-
์ด๋ฆ„ยท๊ฐœ์ˆ˜์— ์ œํ•œ์ด ์—†์œผ๋ฉฐ, ๊ฐ™์€ Layer ๋‚ด ๋‹ค๋ฅธ Slice๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
122+
Slice๋Š” Layer ๋‚ด๋ถ€๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
123+
์ด๋ฆ„/๊ฐœ์ˆ˜์— ์ œํ•œ์ด ์—†์œผ๋ฉฐ, ๊ฐ™์€ Layer ๋‚ด ๋‹ค๋ฅธ Slice๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
107124
์ด ๊ทœ์น™์ด ๋†’์€โ€ฏ์‘์ง‘๋„์™€ ๋‚ฎ์€โ€ฏ๊ฒฐํ•ฉ๋„๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
108125

109126
### Segment {#segments}
110127

111-
Slice์™€ AppยทShared Layer๋Š” Segment๋กœ ์„ธ๋ถ„ํ™”๋˜์–ด, ๊ธฐ์ˆ ์  ๋ชฉ์ ์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ Segment๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
128+
Slice์™€ App/Shared Layer๋Š” Segment๋กœ ์„ธ๋ถ„ํ™”๋˜์–ด, ์ฝ”๋“œ์˜ ์—ญํ• (์˜ˆ: UI, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ƒํƒœ ๊ด€๋ฆฌ ๋“ฑ)์— ๋”ฐ๋ผ ์ฝ”๋“œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.
129+
์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ Segment๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
112130

113131
- `ui` - UIโ€ฏcomponents, dateโ€ฏformatter, styles ๋“ฑ UIย ํ‘œํ˜„๊ณผ ์ง์ ‘ ๊ด€๋ จ๋œ ์ฝ”๋“œ
114132
- `api` - requestโ€ฏfunctions, dataโ€ฏtypes, mappers ๋“ฑ ๋ฐฑ์—”๋“œ ํ†ต์‹  ๋ฐ ๋ฐ์ดํ„ฐ ๋กœ์ง
115133
- `model` - schema, interfaces, store, businessโ€ฏlogic ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋„๋ฉ”์ธ ๋ชจ๋ธ
116134
- `lib` - ํ•ด๋‹น Slice์—์„œ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ณตํ†ต libraryย code
117-
- `config` - configurationโ€ฏfiles, featureโ€ฏflags ๋“ฑ ํ™˜๊ฒฝยท๊ธฐ๋Šฅ ์„ค์ •
135+
- `config` - configurationโ€ฏfiles, featureโ€ฏflags ๋“ฑ ํ™˜๊ฒฝ/๊ธฐ๋Šฅ ์„ค์ •
118136

119-
๋Œ€๋ถ€๋ถ„์˜ Layer์—์„œ๋Š” ์œ„ ๋‹ค์„ฏ Segment๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋‹ค๋ฉด App ๋˜๋Š” Shared Layer์—์„œ๋งŒ ์ถ”๊ฐ€โ€ฏSegment๋ฅผ ์ •์˜ํ•˜์„ธ์š”. (ํ•„์ˆ˜ ๊ทœ์น™์€ ์•„๋‹™๋‹ˆ๋‹ค.)
137+
๋Œ€๋ถ€๋ถ„์˜ Layer์—์„œ๋Š” ์œ„ ๋‹ค์„ฏ Segment๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
138+
ํ•„์š”ํ•˜๋‹ค๋ฉด App ๋˜๋Š” Shared Layer์—์„œ๋งŒ ์ถ”๊ฐ€ Segment๋ฅผ ์ •์˜ํ•˜์„ธ์š”.
120139

121140
## ์žฅ์  {#advantages}
122141

123142
FSD ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
124143

125-
- **์ผ๊ด€์„ฑ**
144+
**์ผ๊ด€์„ฑ**
126145
๊ตฌ์กฐ๊ฐ€ ํ‘œ์ค€ํ™”๋˜์–ด ํŒ€ ๊ฐ„ ํ˜‘์—…๊ณผ ์‹ ๊ทœ ๋ฉค๋ฒ„ ์˜จ๋ณด๋”ฉ์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
127146

128-
- **๊ฒฉ๋ฆฌ์„ฑ**
147+
**๊ฒฉ๋ฆฌ์„ฑ**
129148
Layer์™€ Slice ๊ฐ„ ์˜์กด์„ฑ์„ ์ œํ•œํ•˜์—ฌ, ํŠน์ • ๋ชจ๋“ˆ๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
130149

131-
- **์žฌ์‚ฌ์šฉ ๋ฒ”์œ„ ์ œ์–ด**
150+
**์žฌ์‚ฌ์šฉ ๋ฒ”์œ„ ์ œ์–ด**
132151
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ํ•„์š”ํ•œ ๋ฒ”์œ„์—์„œ๋งŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด, **DRY** ์›์น™๊ณผ ์‹ค์šฉ์„ฑ์„ ๊ท ํ˜• ์žˆ๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
133152

134-
- **๋„๋ฉ”์ธ ์ค‘์‹ฌ ๊ตฌ์กฐ**
153+
**๋„๋ฉ”์ธ ์ค‘์‹ฌ ๊ตฌ์กฐ**
135154
๋น„์ฆˆ๋‹ˆ์Šค ์šฉ์–ด ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์–ด, ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋ชฐ๋ผ๋„ ํŠน์ • ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
136155

137156
## ์ ์ง„์  ๋„์ž… {#incremental-adoption}
138157

139158
๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— FSD๋ฅผ ๋„์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•:
140159

141160
1. `app`, `shared` Layer๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•˜๋ฉฐ ๊ธฐ๋ฐ˜์„ ๋‹ค์ง‘๋‹ˆ๋‹ค.
142-
2. ๊ธฐ์กด UI๋ฅผ `widgets`, `pages` Layer๋กœ ๋Œ€๋žต ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
143-
์ด ๊ณผ์ •์—์„œ FSD ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
144-
3. Import ์œ„๋ฐ˜์„ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•˜๋ฉด์„œ, `entities`, `features`๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
161+
2. ๊ธฐ์กด UI๋ฅผ `widgets`, `pages` Layer๋กœ ๋ถ„๋ฐฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ FSD ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
162+
3. Import ์œ„๋ฐ˜์„ ํ•˜๋‚˜์”ฉ ํ•ด๊ฒฐํ•˜๋ฉด์„œ, ์ฝ”๋“œ์—์„œ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•ด `entities`์™€ `features`๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.
145163

146-
> ๋ฆฌํŒฉํ† ๋ง ์ค‘์—๋Š” ์ƒˆ๋กœ์šด ๋Œ€๊ทœ๋ชจ Entity ์ถ”๊ฐ€๋ฅผ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
164+
> ๋„์ž… ๋‹จ๊ณ„์—์„œ๋Š” ์ƒˆ๋กœ์šด ๋Œ€๊ทœ๋ชจ Entity๋‚˜ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
165+
> ๊ตฌ์กฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ ์ž…๋‹ˆ๋‹ค.
166+
> ์ž์„ธํ•œ ์ ˆ์ฐจ๋Š” [Migration ๊ฐ€์ด๋“œ][migration]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
147167
148168
## ๋‹ค์Œ ๋‹จ๊ณ„ {#next-steps}
149169

0 commit comments

Comments
ย (0)