Skip to content

Commit 5b7faaf

Browse files
authored
docs: Improve from-v1, v2 readability in kr documentation (#878)
* docs: Improve from-v1 readability in kr documentation * docs: Improve from-v2 readability in kr documentation
1 parent a5a53e8 commit 5b7faaf

File tree

2 files changed

+97
-99
lines changed

2 files changed

+97
-99
lines changed

โ€Ži18n/kr/docusaurus-plugin-content-docs/current/guides/migration/from-v1.mdโ€Ž

Lines changed: 55 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -6,137 +6,131 @@ sidebar_position: 4
66

77
## v2 ๋„์ž… ๋ฐฐ๊ฒฝ
88

9-
**feature-slices** ๊ฐœ๋…์€ 2018๋…„ [์ฒซ ๋ฐœํ‘œ][ext-tg-spb]๋œ ์ดํ›„, ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ๊ฑฐ์น˜๋ฉฐ ๋ฐœ์ „ํ•ด ์™”์Šต๋‹ˆ๋‹ค.
10-
๋™์‹œ์— **[๊ธฐ๋ณธ ์›์น™][ext-v1]**(ํ‘œ์ค€ํ™”๋œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์šฐ์„  ๋ถ„๋ฆฌ, isolated features, Public API)์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
9+
**feature-slices** ๊ฐœ๋…์€ 2018๋…„ [์ฒซ ๋ฐœํ‘œ][ext-tg-spb]๋œ ์ดํ›„ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•ด ์™”์Šต๋‹ˆ๋‹ค.
10+
๊ทธ ๊ณผ์ •์—์„œ๋„ **[๊ธฐ๋ณธ ์›์น™][ext-v1]**-ํ‘œ์ค€ํ™”๋œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ, isolated features, Public APIโ€”๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
1111

12-
ํ•˜์ง€๋งŒ v1์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค:
12+
๊ทธ๋Ÿฌ๋‚˜ v1์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค:
1313

14-
- ๊ณผ๋„ํ•œ **boilerplate** ๋ฐœ์ƒ
15-
- ์ถ”์ƒํ™” ๊ทœ์น™์ด ๋ชจํ˜ธํ•ด **์ฝ”๋“œ๋ฒ ์ด์Šค ๋ณต์žก๋„** ์ƒ์Šน
16-
- ์•”๋ฌต์  ์„ค๊ณ„๋กœ **ํ™•์žฅยท์˜จ๋ณด๋”ฉ ์–ด๋ ค์›€**
14+
- ๊ณผ๋„ํ•œ **boilerplate** ๋ฐœ์ƒ
15+
- ์ถ”์ƒํ™” ๊ทœ์น™์ด ๋ชจํ˜ธํ•ด **์ฝ”๋“œ๋ฒ ์ด์Šค ๋ณต์žก๋„** ์ƒ์Šน
16+
- ์•”๋ฌต์  ์„ค๊ณ„๋กœ **ํ™•์žฅ/์˜จ๋ณด๋”ฉ ์–ด๋ ค์›€**
1717

18-
์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ([`v2`][ext-v2])๋Š” ๊ธฐ์กด ์žฅ์ ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์œ„ ๊ณผ์ œ๋“ค์„ ๋ณด์™„ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
19-
๋˜ํ•œ [Oleg Isonen][ext-kof]์ด ๋ฐœํ‘œํ•œ [**feature-driven**][ext-fdd] ๋“ฑ ์œ ์‚ฌ ๋ฐฉ๋ฒ•๋ก ๊ณผ ์•„์ด๋””์–ด๋ฅผ ์œตํ•ฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ๋ฅผ ํ•œ์ธต ๋” **์œ ์—ฐ**, **๋ช…ํ™•**, **ํšจ์œจ์ **์œผ๋กœ ๋‹ค๋“ฌ์—ˆ์Šต๋‹ˆ๋‹ค.
20-
21-
> ์ด ๊ณผ์ •์—์„œ ๋ฐฉ๋ฒ•๋ก ์˜ ๊ณต์‹ ๋ช…์นญ์€ *feature-slice*์—์„œ **feature-sliced**๋กœ ์ •์‹ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
18+
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด **[v2][ext-v2]** ์ž…๋‹ˆ๋‹ค.
19+
v2๋Š” ๊ธฐ์กด ์žฅ์ ์„ ์œ ์ง€ํ•˜๋Š” ๋™์‹œ์— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ๋ณด์™„ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
20+
๋˜ํ•œ [Oleg Isonen][ext-kof]์ด ๋ฐœํ‘œํ•œ [feature-driven][ext-fdd] ๋“ฑ ์œ ์‚ฌ ๋ฐฉ๋ฒ•๋ก ์˜ ์žฅ์ ์„ ๋ฐ˜์˜ํ•ด ๋” **์œ ์—ฐํ•˜๊ณ **, **๋ช…ํ™•ํ•˜๋ฉฐ**, **ํšจ์œจ์ ์ธ** ๊ตฌ์กฐ๋กœ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค.
2221

22+
> ์ด ๊ณผ์ •์—์„œ ๋ฐฉ๋ฒ•๋ก ์˜ ๊ณต์‹ ๋ช…์นญ์€ feature-slice์—์„œ **feature-sliced**๋กœ ์ •์‹ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
2323
2424
## v2 ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ด์œ 
2525

26-
> `WIP:` ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ด๋ฉฐ, ์ผ๋ถ€ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
26+
> `WIP:` ๋ฌธ์„œ๋Š” ๊ณ„์† ์—…๋ฐ์ดํŠธ ์ค‘์ด๋ฉฐ, ์ผ๋ถ€ ๋‚ด์šฉ์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
2727
2828
### ์ง๊ด€์  ๊ตฌ์กฐ ์ œ๊ณต
2929

30-
v2๋Š” **layer โ†’ slice โ†’ segment** 3๋‹จ๊ณ„๋งŒ ์•Œ๋ฉด ๋Œ€๋ถ€๋ถ„ ๊ตฌ์กฐ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br/>
31-
๋•๋ถ„์— ์ƒˆ๋กœ์šด ํŒ€์›์ด **์–ด๋””์— ๋ฌด์—‡์„ ๋‘ฌ์•ผ ํ•˜๋‚˜** ๋ถ€ํ„ฐ ๊ณ ๋ฏผํ•˜์ง€ ์•Š์•„ ์˜จ๋ณด๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.
30+
v2๋Š” **layer โ†’ slice โ†’ segment** ๋ผ๋Š” ์„ธ ๊ฐ€์ง€ ๊ฐœ๋…๋งŒ ์ดํ•ดํ•˜๋ฉด ๊ตฌ์กฐ์  ๊ฒฐ์ •์„ ์‰ฝ๊ฒŒ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
31+
๋•๋ถ„์— ์‹ ๊ทœ ํŒ€์›์ด **์–ด๋””์— ์–ด๋””์— ๋‘˜์ง€** ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์ค„์–ด๋“ค์–ด ์˜จ๋ณด๋”ฉ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
3232

3333
### ์œ ์—ฐํ•œ ๋ชจ๋“ˆํ™”
3434

3535
- **๋…๋ฆฝ ์˜์—ญ**์€ slice ๋‹จ์œ„๋กœ, **์ „์—ญ ํ๋ฆ„**์€ Processes layer๋กœ ๋ถ„๋ฆฌํ•ด ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.
36-
- ์ƒˆ module์„ ์ถ”๊ฐ€ํ•  ๋•Œ *(layer โ†’ slice โ†’ segment)* ๊ทœ์น™๋งŒ ๋”ฐ๋ฅด๋ฉด ํด๋” ์žฌ๋ฐฐ์น˜์™€ ๋ฆฌํŒฉํ„ฐ๋ง ์ž‘์—… ๋ถ€๋‹ด์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
37-
38-
#### ์ปค๋ฎค๋‹ˆํ‹ฐยท๋„๊ตฌ ์ง€์› ํ™•๋Œ€
36+
- ์ƒˆ๋กœ์šด module์„ ์ถ”๊ฐ€ํ•  ๋•Œ _(layer โ†’ slice โ†’ segment)_ ๊ทœ์น™๋งŒ ๋”ฐ๋ฅด๋ฉด ํด๋” ์žฌ๋ฐฐ์น˜๋‚˜ ๋ฆฌํŒฉํ„ฐ๋ง ๋ถ€๋‹ด์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
3937

40-
v2 ๊ฐœ๋ฐœ์€ **์ฝ”์–ด ํŒ€**๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ์ž๋“ค์ด ํ•จ๊ป˜ ์ด๋Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
38+
#### ์ปค๋ฎค๋‹ˆํ‹ฐ/๋„๊ตฌ ์ง€์› ํ™•๋Œ€
4139

40+
v2๋Š” **์ฝ”์–ด ํŒ€** ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ•จ๊ป˜ ๋ฐœ์ „์‹œํ‚ค๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
4241
๋‹ค์Œ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•ด ๋ณด์„ธ์š”:
4342

44-
- **์‹ค์ œ ์‚ฌ๋ก€ ๊ณต์œ **: ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์‚ฌ๋ก€
43+
- **์‹ค์ œ ์‚ฌ๋ก€ ๊ณต์œ **: ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์‚ฌ๋ก€
4544
- **๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ**: ์„ค์ •ยท๊ตฌ์„ฑยท์šด์˜ ์ „ ๊ณผ์ •์„ ๋‹ด์€ ํŠœํ† ๋ฆฌ์–ผ
46-
- **์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ & ์˜ˆ์ œ**: ์‹œ์ž‘๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ „ ์ฝ”๋“œ
47-
- **์˜จ๋ณด๋”ฉ ๋ฌธ์„œ**: ์‹ ๊ทœ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฐœ๋… ์š”์•ฝ ๋ฐ ํ•™์Šต ์ž๋ฃŒ
48-
- **๊ฒ€์ฆ ํˆดํ‚ท**: steiger CLI ๋“ฑ ์ •์ฑ… ์ค€์ˆ˜ยทlint๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ
45+
- **์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ & ์˜ˆ์ œ**: ์‹œ์ž‘๋ถ€ํ„ฐ ๋ฐฐํฌ๊นŒ์ง€ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ „ ์ฝ”๋“œ
46+
- **์˜จ๋ณด๋”ฉ ๋ฌธ์„œ**: ์‹ ๊ทœ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฐœ๋… ์š”์•ฝ ๋ฐ ํ•™์Šต ์ž๋ฃŒ
47+
- **๊ฒ€์ฆ ํˆดํ‚ท**: steiger CLI ๋“ฑ ์ •์ฑ… ์ค€์ˆ˜/lint๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ
4948

50-
> v1 ์ง€์›์€ ๊ณ„์† ์œ ์ง€๋˜์ง€๋งŒ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅยท๊ฐœ์„  ์‚ฌํ•ญ์€ **v2**์— ์šฐ์„  ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.
51-
> ์ฃผ์š” ์—…๋ฐ์ดํŠธ ์‹œ์—๋„ **์•ˆ์ •์  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ**๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
49+
> v1๋„ ๊ณ„์† ์ง€์›๋˜์ง€๋งŒ, ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„ ์€ **v2**์— ์šฐ์„  ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
50+
> ์ฃผ์š” ์—…๋ฐ์ดํŠธ ์‹œ **์•ˆ์ •์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ**๋„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
5251
5352
## ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ
5453

5554
### Layer ๊ตฌ์กฐ ๋ช…ํ™•ํ™”
5655

57-
v2์—์„œ๋Š” layer๋ฅผ ์ตœ์ƒ์œ„๋ถ€ํ„ฐ ์ตœํ•˜์œ„๊นŒ์ง€ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค:
56+
v2๋Š” layer๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค:
5857

59-
- `/app` > `/processes` > **`/pages`** > **`/features`** > `/entities` > `/shared`
60-
61-
- ๋ชจ๋“  ๋ชจ๋“ˆ์ด `pages`/`features` layer์—๋งŒ ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
62-
- ์ด ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด [layer๋ณ„ ์˜์กด ๊ทœ์น™][ext-tg-v2-draft]์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
63-
- **์ƒ์œ„ layer**๋Š” ๋” ๋„“์€ **Context**๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
64-
- ์ƒ์œ„ layer ๋ชจ๋“ˆ์€ **ํ•˜์œ„ layer** ๋ชจ๋“ˆ๋งŒ importํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
65-
- **ํ•˜์œ„ layer**๋Š” **๋ณ€๊ฒฝ ๋ฆฌ์Šคํฌ(Risk)์™€ ์ฑ…์ž„(Responsibility)** ์ด ๋” ํฝ๋‹ˆ๋‹ค.
66-
- ์žฌ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์•„, ์ˆ˜์ • ์‹œ ์˜ํ–ฅ ๋ฒ”์œ„๊ฐ€ ๋„“์Šต๋‹ˆ๋‹ค.
58+
`/app` > `/processes` > **`/pages`** > **`/features`** > `/entities` > `/shared`
6759

60+
๋ชจ๋“  ๋ชจ๋“ˆ์ด `pages, features`์—๋งŒ ์†ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
61+
์ด ๊ตฌ์กฐ๋Š” [layer ์˜์กด ๊ทœ์น™][ext-tg-v2-draft]์„ ๋ช…ํ™•ํžˆ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
62+
**์ƒ์œ„ layer**๋Š” ๋” ๋„“์€ **context**๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, **ํ•˜์œ„ layer**๋Š” ๋” ๋‚ฎ์€ **๋ณ€๊ฒฝ ๋ฆฌ์Šคํฌ์™€ ๋†’์€ ์žฌ์‚ฌ์šฉ์„ฑ**์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.
6863

6964
### Shared ํ†ตํ•ฉ
7065

71-
ํ”„๋กœ์ ํŠธ `src` ๋ฃจํŠธ์— ํฉ์–ด์ ธ ์žˆ๋˜ UI, lib, API ์ธํ”„๋ผ ์ถ”์ƒํ™”๋ฅผ `/src/shared` ํด๋”๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.
66+
`src` ๋ฃจํŠธ์— ํฉ์–ด์ ธ ์žˆ๋˜ UI, lib, API ์ธํ”„๋ผ ์ถ”์ƒํ™”๋ฅผ `/src/shared`๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.
7267

7368
- `shared/ui` - ๊ณตํ†ต UI components(์„ ํƒ ์‚ฌํ•ญ)
74-
- *๊ธฐ์กด `Atomic Design` ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.*
75-
- `shared/lib` - ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ helper libraries
76-
- *๋ฌด๋ถ„๋ณ„ํ•œ helper dump ์ง€์–‘*
77-
- `shared/api` - API entry points
78-
- *๊ฐ feature/page ๋‚ด local ์ •์˜ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ „์—ญ entry point ์ง‘์ค‘์„ ๊ถŒ์žฅ*
79-
- `shared` ํด๋”์—๋Š” **business logic** ์˜์กด์„ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค
80-
- *๋ถˆ๊ฐ€ํ”ผํ•  ๊ฒฝ์šฐ `entities` layer ์ด์ƒ์œผ๋กœ ๋กœ์ง์„ ์˜ฎ๊ธฐ์„ธ์š”.*
69+
- _๊ธฐ์กด `Atomic Design` ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค._
70+
- `shared/lib` - ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ helper libraries
71+
- _๋ฌด๋ถ„๋ณ„ํ•œ helper dump ์ง€์–‘_
72+
- `shared/api` - API entry points
73+
- _๊ฐ feature/page ๋‚ด local ์ •์˜ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ „์—ญ entry point ์ง‘์ค‘์„ ๊ถŒ์žฅ_
74+
- `shared` ํด๋”์—๋Š” **business logic** ์˜์กด์„ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค
75+
- _๋ถˆ๊ฐ€ํ”ผํ•  ๊ฒฝ์šฐ `entities` layer ์ด์ƒ์œผ๋กœ ๋กœ์ง์„ ์˜ฎ๊ธฐ์„ธ์š”._
8176

8277
### Entities / Processes Layer ์ถ”๊ฐ€
8378

8479
v2์—์„œ๋Š” ๋กœ์ง ๋ณต์žก์„ฑ๊ณผ ๋†’์€ ๊ฒฐํ•ฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ **์ƒˆ๋กœ์šด ์ถ”์ƒํ™”**๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
8580

8681
- **`/entities`**
87-
ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” **business entities**(์˜ˆ: `user`, `order`, `i18n`, `blog`)๋ฅผ ๋‹ด๋‹นํ•˜๋Š” layer์ž…๋‹ˆ๋‹ค.
82+
ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” **business entities**(์˜ˆ: `user`, `order`, `i18n`, `blog`)๋ฅผ ๋‹ด๋‹นํ•˜๋Š” layer์ž…๋‹ˆ๋‹ค.
8883
- **`/processes`**
8984
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๋ฐ˜์— ๊ฑธ์นœ **๋น„์ฆˆ๋‹ˆ์Šค process**(์˜ˆ: `payment`, `auth`, `quick-tour`)๋ฅผ ์บก์Аํ™”ํ•˜๋Š” ์„ ํƒ์  layer์ž…๋‹ˆ๋‹ค.
90-
process *๋กœ์ง์ด ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์— ๋ถ„์‚ฐ๋  ๋•Œ* ๋„์ž…์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
91-
85+
process _๋กœ์ง์ด ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์— ๋ถ„์‚ฐ๋  ๋•Œ_ ๋„์ž…์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
9286

93-
### ์ถ”์ƒํ™”ยท๋„ค์ด๋ฐ ๊ฐ€์ด๋“œ
87+
### ์ถ”์ƒํ™”/๋„ค์ด๋ฐ ๊ฐ€์ด๋“œ
9488

95-
์•„๋ž˜์—์„œ๋Š” v2 ๊ถŒ์žฅ layerยทsegment ๋ช…์นญ์„ ์ด์ „ ๋ช…์นญ๊ณผ ๋Œ€์‘ํ•˜์—ฌ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.<br/>
96-
์ถ”์ƒํ™”ยท๋„ค์ด๋ฐ ๊ด€๋ จ ์ƒ์„ธ ๊ฐ€์ด๋“œ๋Š” [๋ช…ํ™•ํ•œ ๋„ค์ด๋ฐ ๊ถŒ์žฅ์‚ฌํ•ญ][refs-adaptability]์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
89+
์•„๋ž˜๋Š” v2 ๊ถŒ์žฅ ๋„ค์ด๋ฐ๊ณผ ์ด์ „ ๋ช…์นญ ๊ฐ„์˜ ๋Œ€์‘ ๊ด€๊ณ„์ž…๋‹ˆ๋‹ค.
90+
์•„๋ž˜์—์„œ๋Š” v2 ๊ถŒ์žฅ layerยทsegment ๋ช…์นญ์„ ์ด์ „ ๋ช…์นญ๊ณผ ๋Œ€์‘ํ•˜์—ฌ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
91+
์ถ”์ƒํ™”/๋„ค์ด๋ฐ ๊ด€๋ จ ์ƒ์„ธ ๊ฐ€์ด๋“œ๋Š” [๋ช…ํ™•ํ•œ ๋„ค์ด๋ฐ ๊ถŒ์žฅ์‚ฌํ•ญ][refs-adaptability]์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
9792

9893
[disc-process]: https://github.com/feature-sliced/documentation/discussions/20
9994
[disc-features]: https://github.com/feature-sliced/documentation/discussions/23
10095
[disc-entities]: https://github.com/feature-sliced/documentation/discussions/18#discussioncomment-422649
10196
[disc-shared]: https://github.com/feature-sliced/documentation/discussions/31#discussioncomment-453020
102-
10397
[disc-ui]: https://github.com/feature-sliced/documentation/discussions/31#discussioncomment-453132
10498
[disc-model]: https://github.com/feature-sliced/documentation/discussions/31#discussioncomment-472645
10599
[disc-api]: https://github.com/feature-sliced/documentation/discussions/66
106100

107101
#### Layer
108102

109103
- `/app` โ€” **Application init**
110-
- *์ด์ „ ๋ช…์นญ: `app`, `core`,`init`, `src/index` (๊ฐ€๋” ์‚ฌ์šฉ๋จ)*
104+
- _์ด์ „ ๋ช…์นญ: `app`, `core`,`init`, `src/index` (๊ฐ€๋” ์‚ฌ์šฉ๋จ)_
111105
- `/processes` โ€” [**Business process**][disc-process]
112-
- *์ด์ „ ๋ช…์นญ: `processes`, `flows`, `workflows`*
106+
- _์ด์ „ ๋ช…์นญ: `processes`, `flows`, `workflows`_
113107
- `/pages` โ€” **Application page**
114-
- *์ด์ „ ๋ช…์นญ: `pages`, `screens`, `views`, `layouts`, `components`, `containers`*
108+
- _์ด์ „ ๋ช…์นญ: `pages`, `screens`, `views`, `layouts`, `components`, `containers`_
115109
- `/features` โ€” [**Feature module**][disc-features]
116-
- *์ด์ „ ๋ช…์นญ: `features`, `components`, `containers`*
110+
- _์ด์ „ ๋ช…์นญ: `features`, `components`, `containers`_
117111
- `/entities` โ€” [**Business entity**][disc-entities]
118-
- *์ด์ „ ๋ช…์นญ: `entities`, `models`, `shared`*
112+
- _์ด์ „ ๋ช…์นญ: `entities`, `models`, `shared`_
119113
- `/shared` โ€” [**Infrastructure**][disc-shared] ๐Ÿ”ฅ
120-
- *์ด์ „ ๋ช…์นญ: `shared`, `common`, `lib`*
114+
- _์ด์ „ ๋ช…์นญ: `shared`, `common`, `lib`_
121115

122116
#### Segment
123117

124118
- `/ui` โ€” [**UI segment**][disc-ui] ๐Ÿ”ฅ
125-
- *์ด์ „ ๋ช…์นญ: `ui`, `components`, `view`*
119+
- _์ด์ „ ๋ช…์นญ: `ui`, `components`, `view`_
126120
- `/model` โ€” [**๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง segment**][disc-model] ๐Ÿ”ฅ
127-
- *์ด์ „ ๋ช…์นญ: `model`, `store`, `state`, `services`, `controller`*
121+
- _์ด์ „ ๋ช…์นญ: `model`, `store`, `state`, `services`, `controller`_
128122
- `/lib` โ€” **๋ณด์กฐ ์ฝ”๋“œ segment**
129-
- *์ด์ „ ๋ช…์นญ: `lib`, `libs`, `utils`, `helpers`*
123+
- _์ด์ „ ๋ช…์นญ: `lib`, `libs`, `utils`, `helpers`_
130124
- `/api` โ€” [**API segment**][disc-api]
131-
- *์ด์ „ ๋ช…์นญ: `api`, `service`, `requests`, `queries`*
125+
- _์ด์ „ ๋ช…์นญ: `api`, `service`, `requests`, `queries`_
132126
- `/config` โ€” **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • segment**
133-
- *์ด์ „ ๋ช…์นญ: `config`, `env`, `get-env`*
127+
- _์ด์ „ ๋ช…์นญ: `config`, `env`, `get-env`_
134128

135129
## ๋‚ฎ์€ ๊ฒฐํ•ฉ ์›์น™ ๊ฐ•ํ™”
136130

137-
์ƒˆ layer ๊ทœ์น™ ๋•๋ถ„์— [Zero-Coupling, High-Cohesion ์›์น™][refs-low-coupling]์„ ์ง€ํ‚ค๊ธฐ ์‰ฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.
138-
139-
*๋‹จ, ๋ชจ๋“ˆ์„ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” Public API ๋“ฑ ๋ช…ํ™•ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๊ฒฝ๊ณ„๋ฅผ ์ •์˜ํ•˜๊ณ , ํ•ด๋‹น ์˜์กด ์ฝ”๋“œ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ํ•˜์œ„ layer์— ์œ„์น˜์‹œํ‚ค๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.*
131+
Layer ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•ด์ง€๋ฉด์„œ [Zero-Coupling, High-Cohesion ์›์น™][refs-low-coupling]์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
132+
์™„์ „ํ•œ ๋ถ„๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค๋ฉด Public API ๋“ฑ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‘์–ด ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ ,
133+
๊ฐ€๋Šฅํ•œ ํ•œ ํ•˜์œ„ layer์—์„œ ์˜์กด์„ฑ์ด ๋‚ด๋ ค๊ฐ€๋„๋ก ๊ตฌ์กฐํ™”ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
140134

141135
## ์ฐธ๊ณ  ์ž๋ฃŒ
142136

@@ -148,7 +142,6 @@ v2์—์„œ๋Š” ๋กœ์ง ๋ณต์žก์„ฑ๊ณผ ๋†’์€ ๊ฒฐํ•ฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ **์ƒˆ๋กœ์šด
148142

149143
[refs-low-coupling]: /docs/reference/slices-segments#zero-coupling-high-cohesion
150144
[refs-adaptability]: /docs/about/understanding/naming
151-
152145
[ext-v1]: https://feature-sliced.github.io/featureslices.dev/v1.0.html
153146
[ext-tg-spb]: https://t.me/feature_slices
154147
[ext-fdd]: https://github.com/feature-sliced/documentation/tree/rc/feature-driven

โ€Ži18n/kr/docusaurus-plugin-content-docs/current/guides/migration/from-v2-0.mdโ€Ž

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,81 +4,86 @@ sidebar_position: 5
44

55
# v2.0 -> v2.1 ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ
66

7-
v2.1์˜ ํ•ต์‹ฌ ๋ณ€ํ™”๋Š” Page ์ค‘์‹ฌ(Page-First) ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐํ™”์ž…๋‹ˆ๋‹ค.
7+
v2.1์˜ ํ•ต์‹ฌ ๋ณ€ํ™”๋Š” Page ์ค‘์‹ฌ(Page-First) ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐ๋ฅผ ์žฌ์ •๋น„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
88

99
## v2.0 ์ ‘๊ทผ ๋ฐฉ์‹
1010

11-
v2.0์—์„œ๋Š” **Entity** ์™€ **Feature** ๋‹จ์œ„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
12-
ํ™”๋ฉด์„ ์ด๋ฃจ๋Š” ์ตœ์†Œ ๋‹จ์œ„์ธ entity ํ‘œํ˜„์ด๋‚˜ ์ƒํ˜ธ์ž‘์šฉ ์š”์†Œ๊นŒ์ง€ ๋ชจ๋‘ ์„ธ๋ถ„ํ™”ํ•œ ๋’ค,<br/>
13-
์ด๋ฅผ **Widget** ์œผ๋กœ ์กฐํ•ฉํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ **Page** ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋ธ์ด์—ˆ์ฃ .
11+
v2.0์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ **Entity**์™€ **Feature** ๋‹จ์œ„๋กœ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
12+
ํ™”๋ฉด์„ ์ด๋ฃจ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„(entity ํ‘œํ˜„, ์ƒํ˜ธ์ž‘์šฉ ์š”์†Œ ๋“ฑ)๋ฅผ ์ž˜๊ฒŒ ๋‚˜๋ˆˆ ๋’ค,
13+
์ด๋ฅผ **Widget**์œผ๋กœ ์กฐํ•ฉํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ **Page**๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค.
1414

15-
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ชจ๋“ˆํ™” ๋ฉด์—์„œ ์ด์ ์ด ์žˆ์—ˆ์ง€๋งŒ,<br/>
16-
์‹ค์ œ๋กœ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด entityยทfeature layer์— ์ง‘์ค‘๋˜๊ณ ,<br/>
17-
Page๋Š” ๋‹จ์ˆœ ์กฐํ•ฉ ๊ณ„์ธต์— ๋จธ๋ฌผ๋Ÿฌ ์ž์‹ ๋งŒ์˜ ์ฑ…์ž„์ด ํฌ๋ฏธํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
15+
์ด ๋ฐฉ์‹์€ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ชจ๋“ˆํ™” ์ธก๋ฉด์—์„œ ์žฅ์ ์ด ์žˆ์—ˆ์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค:
16+
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋Œ€๋ถ€๋ถ„ **entity/feature** layer์— ๊ณผ๋„ํ•˜๊ฒŒ ์ง‘์ค‘๋˜์—ˆ๊ณ ,
17+
Page๋Š” ๋‹จ์ˆœํ•œ ์กฐํ•ฉ ๊ณ„์ธต์œผ๋กœ ๋‚จ์•„ ๊ณ ์œ ํ•œ ์ฑ…์ž„์ด ์•ฝํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.
1818

1919
## v2.1 ์ ‘๊ทผ ๋ฐฉ์‹
2020

21-
v2.1์—์„œ๋Š” **Pages-First** ์‚ฌ๊ณ ๋ฐฉ์‹์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.
22-
๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋ฏธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Page ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐ ์ต์ˆ™ํ•˜๊ณ ,<br/>
23-
์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฐพ์„ ๋•Œ๋„ Page๊ฐ€ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ถœ๋ฐœ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
21+
v2.1์€ **Pages-First** ์‚ฌ๊ณ ๋ฐฉ์‹์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.
22+
๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ Page ๋‹จ์œ„๋กœ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ณ ,
23+
๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐพ๋Š” ์ถœ๋ฐœ์ ๋„ ๋Œ€๋ถ€๋ถ„ Page์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
2424

25-
- **Page ๋‚ด๋ถ€์— ์ฃผ์š” UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง**์„ ๋‘๊ณ  **Shared** layer๋Š” ์ˆœ์ˆ˜ ์žฌ์‚ฌ์šฉ ์š”์†Œ๋งŒ ๊ด€๋ฆฌ
26-
- ๊ณตํ†ต ๋กœ์ง์ด ์‹ค์ œ๋กœ ์—ฌ๋Ÿฌ Page์—์„œ ์“ฐ์ผ ๋•Œ๋งŒ ํ•˜์œ„ layer(FeatureยทEntity)๋กœ ๋ถ„๋ฆฌ
25+
v2.1์˜ ํ•ต์‹ฌ ์›์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
2726

28-
์ด ์ ‘๊ทผ์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
27+
- Page ๋‚ด๋ถ€์— ์ฃผ์š” UI์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
28+
- Shared layer์—๋Š” ์ˆœ์ˆ˜ ์žฌ์‚ฌ์šฉ ์š”์†Œ๋งŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
29+
- ์—ฌ๋Ÿฌ Page์—์„œ ์‹ค์ œ๋กœ ๊ณต์œ ๋˜๋Š” ๋กœ์ง๋งŒ Feature/Entity๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
2930

30-
1. **Page๊ฐ€ ์ฑ…์ž„ ๋‹จ์œ„**๊ฐ€ ๋˜์–ด, ์ฝ”๋“œ ์œ„์น˜์™€ ์—ญํ• ์ด ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.
31-
2. Shared layer๋Š” **์œ ํ‹ธยท์ปดํฌ๋„ŒํŠธ**์ฒ˜๋Ÿผ ์ˆœ์ˆ˜ ์žฌ์‚ฌ์šฉ ์ฝ”๋“œ๋งŒ ๋‹ด์•„, ์˜์กด ๊ฒฝ๋กœ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค.
32-
3. ๊ณตํ†ต ๋กœ์ง์„ ์‹ค์ œ๋กœ ์žฌ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ํ•˜์œ„ layer๋กœ ์ด๋™ํ•ด, ๋ถˆํ•„์š”ํ•œ ์ถ”์ƒํ™”์™€ ์˜์กด์„ฑ ์–ฝํž˜์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
31+
์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ 
3332

34-
๋˜ํ•œ v2.1์—์„œ๋Š” **Entity ๊ฐ„ cross-import**๋ฅผ `@x` ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ **ํ‘œ์ค€ํ™”**ํ–ˆ์Šต๋‹ˆ๋‹ค.
35-
์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ช…ํ™•ํ•œ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
33+
1. **Page๊ฐ€ ๋ช…ํ™•ํ•œ ์ฑ…์ž„ ๋‹จ์œ„**๊ฐ€ ๋˜์–ด, ์ฝ”๋“œ์˜ ์—ญํ• ์ด ๋ถ„๋ช…ํ•ด์ง‘๋‹ˆ๋‹ค.
34+
2. **Shared** layer๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋น„๋Œ€ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด ์˜์กด์„ฑ์ด ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค.
35+
3. ๊ณตํ†ต ๋กœ์ง์„ ์‹ค์ œ๋กœ ์žฌ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ๋ถ„๋ฆฌํ•˜๋ฏ€๋กœ ๊ณผ๋„ํ•œ ์ถ”์ƒํ™”๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
36+
37+
๋˜ํ•œ v2.1์—์„œ๋Š” **Entity ๊ฐ„ cross-import**๋ฅผ ์œ„ํ•œ `@x` ํ‘œ๊ธฐ๋ฒ•์ด **ํ‘œ์ค€ํ™”**๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
38+
์ด๋ฅผ ํ†ตํ•ด import ๊ฒฝ๋กœ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€๋˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3639

3740

3841
## ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ”„๋กœ์„ธ์Šค {#how-to-migrate}
3942

40-
v2.1์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๋ฏ€๋กœ, ๊ธฐ์กด FSD v2.0 ํ”„๋กœ์ ํŠธ๋Š” **์ˆ˜์ • ์—†์ด** ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
41-
์ƒˆ ๋ชจ๋ธ์„ ํ™œ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ์ ์šฉํ•ด ๋ณด์„ธ์š”.
43+
v2.1์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
44+
์ฆ‰, ๊ธฐ์กด v2.0 ํ”„๋กœ์ ํŠธ๋Š” **์ˆ˜์ • ์—†์ด** ๊ทธ๋Œ€๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
45+
๋‹ค๋งŒ v2.1์˜ ๊ตฌ์กฐ์  ์žฅ์ ์„ ํ™œ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ์ฐจ๋ก€๋กœ ์ ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
4246

4347
### 1. Slice ๋ณ‘ํ•ฉ
4448

45-
FSD v2.1์˜ Page-First ๋ชจ๋ธ์—์„œ๋Š” **์‹ค์ œ๋กœ ์—ฌ๋Ÿฌ Page์—์„œ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”** slice๋ฅผ ๊ตณ์ด ๋…๋ฆฝ ๋‹จ์œ„๋กœ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
46-
๋‹จ์ผ page์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” slice๋Š” ํ•ด๋‹น page ์•ˆ์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๋ฉด, ์ฝ”๋“œ ํƒ์ƒ‰๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
49+
v2.1 Page-First ๋ชจ๋ธ์—์„œ๋Š” **์—ฌ๋Ÿฌ Page์—์„œ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”** slice๋Š” Page ๋‚ด๋ถ€๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
50+
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ ํƒ์ƒ‰์ด ๋นจ๋ผ์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
4751

4852
#### Steiger๋กœ ์ž๋™ ํƒ์ง€ํ•˜๊ธฐ
4953

50-
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ [Steiger][steiger] linter๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.<br/>
51-
v2.1 mental model์— ๋งž์ถ˜ ์ฃผ์š” lint ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
52-
53-
- [`insignificant-slice`][insignificant-slice]
54-
๋‹จ์ผ Page์—์„œ๋งŒ ์ฐธ์กฐ๋˜๋Š” slice๋ฅผ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค.
55-
โ†’ **ํ•ด๋‹น slice๋ฅผ Page ๋‚ด๋ถ€๋กœ ๋ณ‘ํ•ฉ**ํ•˜๋„๋ก ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
56-
- [`excessive-slicing`][excessive-slicing]
57-
๋„ˆ๋ฌด ์ž˜๊ฒŒ ๋‚˜๋‰œ slice๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
58-
โ†’ **์œ ์‚ฌํ•œ slice๋ฅผ ํ†ตํ•ฉ**ํ•˜๊ฑฐ๋‚˜ **๊ทธ๋ฃนํ™”**ํ•ด ํƒ์ƒ‰์„ฑ์„ ๋†’์ด๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
54+
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ [Steiger][steiger]๋ฅผ ์‹คํ–‰ํ•˜๋ฉด v2.1 mental model์— ๋งž์ถ”์–ด slice ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•ด์ค๋‹ˆ๋‹ค:
5955

6056
```bash
6157
npx steiger src
6258
```
6359

64-
์ด ๋ช…๋ น์œผ๋กœ `ํ•œ ๋ฒˆ๋งŒ ์“ฐ์ด๋Š” slice` ๋ชฉ๋ก์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.<br/>
60+
- [`insignificant-slice`][insignificant-slice]
61+
๋‹จ์ผ Page์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” slice๋ฅผ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.
62+
โ†’ **Page ๋‚ด๋ถ€๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ**ํ•ฉ๋‹ˆ๋‹ค.
63+
- [`excessive-slicing`][excessive-slicing]
64+
์ง€๋‚˜์น˜๊ฒŒ ์ž˜๊ฒŒ ๋‚˜๋‰œ slice๋ฅผ ์ฐพ์•„์ค๋‹ˆ๋‹ค.
65+
โ†’ **์œ ์‚ฌํ•œ slice๋ฅผ ํ†ตํ•ฉํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํƒ์ƒ‰์„ฑ**์„ ๋†’์ž…๋‹ˆ๋‹ค.
66+
67+
68+
์ด ๋ช…๋ น์œผ๋กœ `ํ•œ ๋ฒˆ๋งŒ ์“ฐ์ด๋Š” slice` ๋ชฉ๋ก์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
6569
์ด์ œ ๊ฐ slice์˜ ์žฌ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ , ๊ณผํ•˜๋‹ค๋ฉด ํ•ด๋‹น page๋กœ ๋ณ‘ํ•ฉํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•œ ์—ญํ• ๋ผ๋ฆฌ ๋ฌถ์–ด ๋ณด์„ธ์š”.
6670

6771
:::tip Slice ๊ด€๋ฆฌ
6872

69-
๊ฐ ๊ณ„์ธต์€ ํ•ด๋‹น ๊ณ„์ธต์— ์†ํ•œ ๋ชจ๋“  Slices์˜ namespace๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค:
73+
Slice๋Š” ํ•ด๋‹น layer์˜ namespace๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค.
74+
์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋“ฏ, slice๋„ ์‹ค์ œ๋กœ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋…๋ฆฝ ๋‹จ์œ„๋กœ ์œ ์ง€ํ•˜์„ธ์š”.
7075

71-
- ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋“ฏ์ด Slice๋„ ์‹ค์ œ๋กœ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์„ธ์š”
72-
- ํ•œ ๊ณณ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋Š” ํ•ด๋‹น Page๋‚˜ Feature ๋‚ด๋ถ€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค
76+
ํ•œ ๊ณณ์—์„œ๋งŒ ์“ฐ์ด๋Š” slice โ†’ Page ๋˜๋Š” Feature ๋‚ด๋ถ€๋กœ ์ด๋™
77+
์—ฌ๋Ÿฌ Page์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” slice โ†’ ๊ทธ๋Œ€๋กœ ์œ ์ง€
7378

7479
:::
7580

7681
### 2. Cross Import ํ‘œ์ค€ํ™”
7782

78-
์ƒˆ๋กœ์šด `@x-` ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ Entity ๊ฐ„ cross-import๋ฅผ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค:
83+
v2.1์—์„œ๋Š” Entity ๊ฐ„ cross-import๋ฅผ ์œ„ํ•ด `@x-` ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
7984

8085
```ts title="entities/B/some/file.ts"
81-
// v2.1 ๊ถŒ์žฅ cross-import ๋ฐฉ์‹
86+
// v2.1 ๊ถŒ์žฅ ๋ฐฉ์‹
8287
import type { EntityA } from "entities/A/@x/B";
8388
```
8489

0 commit comments

Comments
ย (0)