|
| 1 | +--- |
| 2 | +sidebar_position: 2 |
| 3 | +--- |
| 4 | + |
| 5 | +# ํ์ ์ค์ฌ |
| 6 | + |
| 7 | +:::note TL;DR |
| 8 | + |
| 9 | +โ _์๋ก์ด Feature์ ๋ชฉํ๊ฐ ๋ถ๋ถ๋ช
ํ๊ฑฐ๋ ์์
์์ฒด๊ฐ ๋ช
ํํ ์ ์๋์ง ์์๋์? **์ด ๋ฐฉ๋ฒ๋ก ์ ํต์ฌ์ ์์
๊ณผ ๋ชฉํ๋ฅผ ๋ช
ํํ ์ ์ํ๋ ๋ฐ ์์ต๋๋ค.**_ |
| 10 | + |
| 11 | +โ _ํ๋ก์ ํธ๋ ์ ์ ์ธ ๊ฒ์ด ์๋๋๋ค. ์๊ตฌ ์ฌํญ๊ณผ Feature๋ ๊ณ์ํด์ ๋ณํํ๋ฉฐ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฝ๋๋ ์ ์ ๋ณต์กํด์ง๊ณ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋๋ค. **์ฐ์ํ ์ํคํ
์ฒ๋ ์ด๋ฌํ ๋ณํ์ ์ ์ฐํ๊ฒ ์ ์ํ ์ ์์ด์ผ ํฉ๋๋ค.**_ |
| 12 | + |
| 13 | +::: |
| 14 | + |
| 15 | + |
| 16 | +## ์ ์ด๋ฐ ์ ๊ทผ์ด ํ์ํ ๊น์? |
| 17 | + |
| 18 | +๊ฐ Entity์ ์ด๋ฆ๊ณผ ๊ตฌ์ฑ์ ๋ช
ํํ ํ๋ ค๋ฉด, **ํด๋น ์ฝ๋์ ๋ชฉ์ ์ ์ ํํ ์ดํด**ํด์ผ ํฉ๋๋ค. |
| 19 | + |
| 20 | +> _@sergeysova: ๊ฐ๋ฐํ ๋ ๊ฐ Entity์ ํจ์์ ์๋๋ฅผ ์ด๋ฆ์ ๋ช
ํํ ๋ฐ์ํ๋ ค๊ณ ๋
ธ๋ ฅํฉ๋๋ค._ |
| 21 | +
|
| 22 | +_๋ช
ํํ์ง ์์ ์์
์ ํ
์คํธ ์์ฑ์ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ , ์ค๋ฅ ์ฒ๋ฆฌ๊ฐ ๋นํจ์จ์ ์ด ๋์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ํ์ํฌ ์ ์์ต๋๋ค._ |
| 23 | + |
| 24 | +## ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ์์
์ด๋? |
| 25 | + |
| 26 | +ํ๋ก ํธ์๋๋ ์ฌ์ฉ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. |
| 27 | + |
| 28 | +์ฌ์ฉ์๋ ์๋น์ค ์ฌ์ฉ ์ **์์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ฑฐ๋ ํ์๋ฅผ ์ถฉ์กฑ**ํ๋ ค ํฉ๋๋ค. |
| 29 | + |
| 30 | +_๊ด๋ฆฌ์์ ๋ถ์๊ฐ๋ ์ด๋ฌํ ์๊ตฌ์ฌํญ์ ๋ช
ํํ ์ ์ํ๊ณ , ๊ฐ๋ฐ์๊ฐ ์น์ ํน์ฑ(๋คํธ์ํฌ ์ง์ฐ, ์ค๋ฅ, ์ฌ์ฉ์ ์ค์ ๋ฑ)์ ๊ณ ๋ คํ์ฌ ๊ตฌํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค._ |
| 31 | + |
| 32 | +**์ฌ์ฉ์์ ๋ชฉํ๊ฐ ๊ณง ๊ฐ๋ฐ์์ ์์
**์
๋๋ค. |
| 33 | + |
| 34 | +> _Feature-Sliced Design์ ํต์ฌ ์ฒ ํ ์ค ํ๋๋ โ ํ๋ก์ ํธ์ ์ ์ฒด ์์
์ ๋ ์์ ๋ชฉํ ๋จ์๋ก ๋๋๋ ๊ฒ์
๋๋ค._ |
| 35 | +
|
| 36 | +## ์ด๊ฒ์ด ๊ฐ๋ฐ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋๊ฐ? |
| 37 | + |
| 38 | +### ์์
๋ถํด |
| 39 | + |
| 40 | +๊ฐ๋ฐ์๋ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ์ํด ์์
์ **๋จ๊ณ์ ์ผ๋ก ๋ถํด**ํฉ๋๋ค: |
| 41 | + |
| 42 | +* _์ต์์ Entity๋ก ๋ถํ _ |
| 43 | +* _๋ ์์ ๋จ์๋ก ์ธ๋ถํ_ |
| 44 | +* _๊ฐ Entity์ ๋ช
ํํ ์ด๋ฆ ๋ถ์ฌ_ |
| 45 | + |
| 46 | +_๊ฐ๋ฐ์๋ ์ฝ๋๊ฐ ํด๊ฒฐํ๋ ์์
์ ๋ณธ์ง์ ๋ฐ์ํ๋๋ก ๊ฐ Entity์ ๊ตฌ์ฑ ์์์ ๋ช
ํํ ์ด๋ฆ์ ๋ถ์ฌํฉ๋๋ค._ |
| 47 | +_์ด ๊ณผ์ ์์ ๋ชจ๋ ์์
์ด ์ฌ์ฉ์์ ๋ฌธ์ ํด๊ฒฐ์ ๊ธฐ์ฌํด์ผ ํจ์ ํญ์ ๊ณ ๋ คํฉ๋๋ค._ |
| 48 | + |
| 49 | + |
| 50 | +### ์์
์ ๋ณธ์ง ์ดํด |
| 51 | + |
| 52 | +Entity์ ๋ช
ํํ ์ด๋ฆ์ ๋ถ์ฌํ๋ ค๋ฉด **๊ฐ๋ฐ์๊ฐ ํด๋น Entity์ ๋ชฉ์ ๊ณผ ์ญํ ์ ์ถฉ๋ถํ ์ดํด**ํด์ผ ํฉ๋๋ค: |
| 53 | + |
| 54 | +* Entity์ ๊ตฌ์ฒด์ ์ธ ์ฌ์ฉ ๋ชฉ์ |
| 55 | +* ๊ตฌํํ๋ ์ฌ์ฉ์ ์์
์ ๋ฒ์ |
| 56 | +* ๋ค๋ฅธ ์์
๊ณผ์ ์ฐ๊ด์ฑ |
| 57 | + |
| 58 | +๊ฒฐ๋ก ์ ์ผ๋ก, **๊ฐ๋ฐ์๊ฐ Entity์ ์ด๋ฆ์ ๊ณ ๋ฏผํ๋ ๊ณผ์ ์์ ๋ถ๋ช
ํํ ์์
์ ๋ฏธ๋ฆฌ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.** |
| 59 | + |
| 60 | +> Entity์ ์ด๋ฆ์ ์ ์ํ๋ ค๋ฉด ํด๋น Entity๊ฐ ํด๊ฒฐํ ์์
์ ์ ํํ ์ดํดํด์ผ ํฉ๋๋ค. |
| 61 | +
|
| 62 | +## ์ด๋ป๊ฒ ์ ์ํ ๊ฒ์ธ๊ฐ? |
| 63 | + |
| 64 | +**Feature๊ฐ ํด๊ฒฐํ ์์
์ ์ ์ํ๋ ค๋ฉด ๊ทธ ๋ณธ์ง์ ์ดํดํด์ผ ํฉ๋๋ค. ์ด๋ ์ฃผ๋ก ํ๋ก์ ํธ ๊ด๋ฆฌ์์ ๋ถ์๊ฐ์ ์ญํ ์
๋๋ค.** |
| 65 | + |
| 66 | +_๋ฐฉ๋ฒ๋ก ์ ๊ฐ๋ฐ์์๊ฒ ์์
์ ๋ฐฉํฅ์ฑ์ ์ ์ํ ๋ฟ์
๋๋ค._ |
| 67 | + |
| 68 | +> _@sergeysova: ํ๋ก ํธ์๋๋ ์ ๋ณด ํ์์ ์ด์ ์ ๋ง์ถ์ง๋ง, ๋จ์ํ "๋ฌด์์ ๋ณด์ฌ์ค๋ค"๋ ๊ฒ์ ์ถฉ๋ถํ ๊ฐ์น๋ฅผ ๊ฐ์ง์ง ๋ชปํฉ๋๋ค. "์ ์ด๊ฒ์ ๋ณด์ฌ์ค์ผ ํ๋๊ฐ?"๋ผ๋ ์ง๋ฌธ์ ํตํด ์ฌ์ฉ์์ ์ค์ ํ์๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค._ |
| 69 | +> |
| 70 | +> _์ด๋ ํ๋ก ํธ์๋์ ๊ธฐ์ ์ ์ธก๋ฉด์ ๋์ด์, ์ฌ์ฉ์์ ๋ฌธ์ ์ ํ์๋ฅผ ์ ํํ ์ดํดํ ๋๊น์ง ์ง์์ ์ผ๋ก ํ๊ตฌํด์ผ ํ๋ ๊ณผ์ ์
๋๋ค._ |
| 71 | +
|
| 72 | +์ฌ์ฉ์์ ํ์๋ฅผ ์ดํดํ ํ์๋ **์ ํ์ด ์ด๋ป๊ฒ ์ฌ์ฉ์์ ๋ชฉํ ๋ฌ์ฑ์ ๋์ธ ์ ์๋์ง ๊ตฌ์ฒดํ**ํ ์ ์์ต๋๋ค. |
| 73 | + |
| 74 | +๋ชจ๋ ์๋ก์ด ์์
์ ๋น์ฆ๋์ค์ ์ฌ์ฉ์์ ๋ฌธ์ ๋ฅผ ๋์์ ํด๊ฒฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๊ฐ ์์
์ ๋ช
์์ ์ด์ง ์๋๋ผ๋ ๋ถ๋ช
ํ ๋ชฉ์ ์ ๊ฐ์ง๋๋ค. |
| 75 | + |
| 76 | +_**๊ฐ๋ฐ์๋ ์์
์ ๋ชฉํ๋ฅผ ๋ช
ํํ ์ดํด**ํด์ผ ํฉ๋๋ค. ์๋ฒฝํ ํ๋ก์ธ์ค๊ฐ ์๋๋ผ๋, ๊ด๋ฆฌ์์์ ์ํต์ ํตํด ์ด๋ฅผ ํ์
ํ๊ณ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ ์ ์์ด์ผ ํฉ๋๋ค._ |
| 77 | + |
| 78 | +## ์ด์ |
| 79 | + |
| 80 | +์ ์ฒด Process๋ฅผ ํตํด ์ป์ ์ ์๋ ์ด์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. |
| 81 | + |
| 82 | +### 1. ์ฌ์ฉ์ ์์
์ดํด |
| 83 | + |
| 84 | +๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์์ ๋ฌธ์ ์ ๋น์ฆ๋์ค ํด๊ฒฐ๋ฐฉ์์ ์ดํดํ๋ฉด, ๊ธฐ์ ์ ์ ์ฝ ๋ด์์๋ ๋ ๋์ ์๋ฃจ์
์ ์ ์ํ ์ ์์ต๋๋ค. |
| 85 | + |
| 86 | +> _์ด๋ ๊ฐ๋ฐ์๊ฐ ์์ ์ ์ญํ ๊ณผ ๋ชฉํ์ ๊ด์ฌ์ ๊ฐ์ง ๋๋ง ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด, ๋ฐฉ๋ฒ๋ก ์์ฒด๊ฐ ์๋ฏธ๋ฅผ ์์ต๋๋ค._ |
| 87 | +
|
| 88 | +### 2. ๊ตฌ์กฐํ ๋ฐ ์ ๋ฆฌ |
| 89 | + |
| 90 | +์์
์ ์ดํดํ๋ฉด **์ฌ๊ณ ๊ณผ์ , ์์
, ์ฝ๋๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์ฒด๊ณํ**๋ฉ๋๋ค. |
| 91 | + |
| 92 | +### 3. ๊ธฐ๋ฅ๊ณผ ๊ทธ ๊ตฌ์ฑ ์์ ์ดํด |
| 93 | + |
| 94 | +**ํ๋์ Feature๋ ์ฌ์ฉ์์๊ฒ ๋ช
ํํ ๊ฐ์น๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.** |
| 95 | + |
| 96 | +* ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ์์ด๋ฉด **๊ฒฝ๊ณ ์๋ฐ**์
๋๋ค |
| 97 | +* Feature๋ ๋ถ๋ฆฌ์ ํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. **์ด๋ ์์ฐ์ค๋ฌ์ด ๊ฒ์
๋๋ค** |
| 98 | +* **ํต์ฌ์** _"์ด Feature๊ฐ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋ ๊ฐ์น๊ฐ ๋ฌด์์ธ๊ฐ?"_ ์
๋๋ค |
| 99 | +* ์์: |
| 100 | + * โ "์ง๋-์ฌ๋ฌด์ค" (๋ชจํธํ Feature) |
| 101 | + * โญ `ํ์์ค-์์ฝ`, `์ง์-๊ฒ์`, `๊ทผ๋ฌด์ง-๋ณ๊ฒฝ` (**๋ช
ํํ Feature**) |
| 102 | + |
| 103 | +> _@sergeysova: Feature๋ ํต์ฌ ๊ตฌํ ์ฝ๋๋ง ํฌํจํด์ผ ํฉ๋๋ค. |
| 104 | +> |
| 105 | +> **๊ด๋ จ ์๋ ์ฝ๋๋ ์ ์ธํ๊ณ , ํด๋น Feature์ ํต์ฌ ๋ก์ง๋ง ๋ด์์ผ ํฉ๋๋ค.**_ |
| 106 | +
|
| 107 | +### 4. ์ ์ง๋ณด์์ฑ |
| 108 | + |
| 109 | +๋น์ฆ๋์ค ๋ฐฉํฅ์ ์ฝ๊ฒ ๋ฐ๋์ง ์์ต๋๋ค. **๋ฐ๋ผ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฝ๋์ ๋ช
ํํ ๋ฐ์ํ๋ฉด ์ฅ๊ธฐ์ ์ธ ์ด์ ์ด ์์ต๋๋ค.** |
| 110 | + |
| 111 | +_๊ทธ ๊ฒฐ๊ณผ, ์๋ก์ด ํ์์ด ํฉ๋ฅํ ๋๋ง๋ค ์ฝ๋๊ฐ ๋ฌด์์ ํ๊ณ , ์ ์ถ๊ฐ๋์๋์ง ๋ฐ๋ก ์ค๋ช
ํ ํ์๊ฐ ์์ต๋๋ค. **์ฝ๋ ์์ฒด์ ๋ฐ์๋ ๋น์ฆ๋์ค ์์
์ ํตํด ๋ชจ๋ ๊ฒ์ด ์ค๋ช
๋ ๊ฒ์
๋๋ค.**_ |
| 112 | + |
| 113 | +> [๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ์์ "๋น์ฆ๋์ค ์ธ์ด"๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฐ๋
์
๋๋ค.][ext-ubiq-lang] |
| 114 | +
|
| 115 | +--- |
| 116 | + |
| 117 | +## ํ์ค์ ๊ณ ๋ ค์ฌํญ |
| 118 | + |
| 119 | +๋น์ฆ๋์ค Process๊ฐ ๋ช
ํํ๊ณ ์ค๊ณ๊ฐ ์ ๋์๋ค๋ฉด, _์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ ๊ฒ์ ๋น๊ต์ ์ฝ์ต๋๋ค._ |
| 120 | + |
| 121 | +**ํ์ง๋ง ํ์ค์์๋,** ์์
๊ณผ Feature๊ฐ ์ถฉ๋ถํ ์ค๊ณ ์๊ฐ ์์ด ๋ฐ๋ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. |
| 122 | + |
| 123 | +**๊ฒฐ๊ณผ์ ์ผ๋ก, ํ์ฌ๋ ์ ์ ํด ๋ณด์ด๋ Feature๊ฐ ํ ๋ฌ ํ ํ์ฅ ๊ณผ์ ์์ ์ ์ฒด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์๋ ์์ต๋๋ค.** |
| 124 | + |
| 125 | +> *[ํ ๋ก ์์][disc-src]: ๊ฐ๋ฐ์๋ ๋ณดํต 2~3๋จ๊ณ ์์ ์๊ตฌ์ฌํญ์ ์์ธกํ๋ ค ๋
ธ๋ ฅํ๋ฉฐ, ์ด๋ ๊ฒฝํ์ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค.* |
| 126 | +> |
| 127 | +> _์๋ จ๋ ๊ฐ๋ฐ์๋ ์ฝ 10๋จ๊ณ ์๊น์ง ์์ธกํ ์ ์์ด์, Feature์ ๋ถํ ์ง์ ๊ณผ ํตํฉ ๋ฐฉ์์ ๋ ์ ์ดํดํฉ๋๋ค._ |
| 128 | +> |
| 129 | +> _๊ทธ๋ฌ๋ ๋๋ก๋ ๊ฒฝํ์ผ๋ก๋ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ๋ณต์กํ ์ํฉ์ด ๋ฐ์ํ๋ฉฐ, ์ด๋๋ ํผํด๋ฅผ ์ต์ํํ๋ฉด์ ๋ฌธ์ ๋ฅผ ์ ์ ํ ๋ถํดํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค._ |
| 130 | +
|
| 131 | +## ๋ฐฉ๋ฒ๋ก ์ ์ญํ |
| 132 | + |
| 133 | +**๋ฐฉ๋ฒ๋ก ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์์ ๋ฌธ์ ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋๋ก ๋๋ ๊ฒ์ด ๋ชฉ์ ์
๋๋ค.** |
| 134 | + |
| 135 | +๋ฐฉ๋ฒ๋ก ์ ๋จ์ํ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฒ์ด ์๋๋๋ค. |
| 136 | + |
| 137 | +๊ฐ๋ฐ์๊ฐ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ค๋ฉด, **์ฌ์ฉ์์ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ์ ํํ ์ดํดํด์ผ ํฉ๋๋ค.** ์ฌ์ฉ์์ ๋ฌธ์ ๋ฅผ ๋ชจ๋ฅด๋ฉด ์ข์ ํด๊ฒฐ์ฑ
์ ๋ง๋ค ์ ์์ต๋๋ค. |
| 138 | + |
| 139 | +### ๋ฐฉ๋ฒ๋ก ์๊ตฌ ์ฌํญ |
| 140 | + |
| 141 | +**Feature-Sliced Design**์ด ์ถฉ์กฑํด์ผ ํ ๋ ๊ฐ์ง ์๊ตฌ์ฌํญ: |
| 142 | + |
| 143 | +1. **Feature, Process, Entity๋ฅผ ๊ตฌ์ฑํ๋ ๋ช
ํํ ๋ฐฉ๋ฒ ์ ์** |
| 144 | + * _์ฝ๋ ๋ถํ ๊ธฐ์ค๊ณผ ๋ช
๋ช
๊ท์น์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์_ |
| 145 | + |
| 146 | +2. **[๋ณํํ๋ ์๊ตฌ์ฌํญ์ ์ ์ฐํ ์ํคํ
์ฒ ์ ๊ณต][refs-arch--adaptability]** |
| 147 | + |
| 148 | +## ์ฐธ๊ณ ์๋ฃ |
| 149 | + |
| 150 | +* [(ํฌ์คํธ) ๋ช
ํํ ์์
์ ์ ๊ฐ์ด๋ (+ ํ ๋ก )][disc-src] |
| 151 | + > _**์ด ๋ฌธ์๋ ํด๋น ํ ๋ก ์ ๋ฐํ**์ผ๋ก ์์ฑ๋์์ต๋๋ค. ์๋ฌธ์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์._ |
| 152 | +* [(ํ ๋ก ) Feature ๋ถํด ๋ฐฉ๋ฒ๋ก ][tg-src] |
| 153 | +* [(์ํฐํด) "ํจ๊ณผ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์กฐํ"][ext-medium] |
| 154 | + |
| 155 | +[refs-arch--adaptability]: architecture#adaptability |
| 156 | + |
| 157 | +[ext-medium]: https://alexmngn.medium.com/how-to-better-organize-your-react-applications-2fd3ea1920f1 |
| 158 | +[disc-src]: https://t.me/sergeysova/318 |
| 159 | +[tg-src]: https://t.me/atomicdesign/18972 |
| 160 | +[ext-ubiq-lang]: https://thedomaindrivendesign.io/developing-the-ubiquitous-language |
0 commit comments