Slice์ Segment
Sliceโ
Slice๋ Feature-Sliced Design์ ๋ ๋ฒ์งธ ๊ตฌ์ฑ ๋จ์์ ๋๋ค. Slice์ ์ฃผ ๋ชฉ์ ์ ์ ํ, ๋น์ฆ๋์ค, Application ๊ด์ ์์ ์ฝ๋๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ทธ๋ฃนํํ๋ ๊ฒ์ ๋๋ค.
Slice ์ด๋ฆ์ ํ์คํ๋์ด ์์ง ์๊ณ Application์ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์์:
- ์ฌ์ง ๊ฐค๋ฌ๋ฆฌ:
photo
,effects
,gallery-page
- ์์
๋คํธ์ํฌ:
post
,comments
,news-feed
Shared์ App Layer๋ Slice๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. Shared๋ Business Logic์ ํฌํจํ์ง ์๊ณ , App์ Application ์ ์ฒด ๊ด๋ จ ์ฝ๋๋ง ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Zero ๊ฒฐํฉ๋๊ณผ High ์์ง๋โ
Slice๋ ๋ ๋ฆฝ์ ์ด๊ณ ์์ง๋ ๋์ ์ฝ๋ ๊ทธ๋ฃน์ด์ด์ผ ํฉ๋๋ค. ์๋ ๊ทธ๋ํฝ์ _์์ง๋_๊ณผ ๊ฒฐํฉ๋ ๊ฐ๋ ์ ์๊ฐํํฉ๋๋ค:
Image inspired by https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/
์ด์์ ์ธ Slice ํน์ง:
- ๋ ๋ฆฝ์ โ ๊ฐ์ Layer์ ๋ค๋ฅธ Slice์ Zero ๊ฒฐํฉ๋
- ๋์ ์์ง๋ โ ํต์ฌ ๋ชฉ์ ๊ด๋ จ ์ฝ๋๋ฅผ ํฌํจ
Slice์ ๋ ๋ฆฝ์ฑ์ Layer Import Rule๋ก ๊ฐ์ ๋ฉ๋๋ค:
Slice์ ๋ชจ๋์ ํ์ Layer์ ๋ค๋ฅธ Slice๋ง Import ๊ฐ๋ฅ
Slice์ Public API Ruleโ
Slice ๋ด๋ถ ๊ตฌ์กฐ๋ ์์ ๋กญ์ง๋ง, ๋ค๋ฅธ Slice๊ฐ ์ฌ์ฉํ ์ข์ Public API๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์ด๋ Slice Public API Rule๋ก ๊ฐ์ ๋ฉ๋๋ค:
๋ชจ๋ Slice(์ Slice๊ฐ ์๋ Layer์ Segment)๋ Public API๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
์ธ๋ถ ๋ชจ๋์ Slice/Segment์ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ์๋ Public API๋ง ์ฐธ์กฐ ๊ฐ๋ฅ
์์ธํ ๋ด์ฉ์ Public API Reference๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Slice Groupโ
์ฐ๊ด๋ Slice๋ค์ ํด๋๋ก ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ๋จ, ๋ค๋ฅธ Slice์ ๋์ผํ ๊ฒฉ๋ฆฌ ๊ท์น์ ๋ฐ๋ผ์ผ ํ๋ฉฐ, ๊ทธ๋ฃน ๋ด ์ฝ๋ ๊ณต์ ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
Segmentโ
Segment๋ ๋ง์ง๋ง ๊ตฌ์ฑ ๋จ์๋ก, ๊ธฐ์ ์ ํน์ฑ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
ํ์ค Segment:
ui
โ UI ๊ด๋ จ: Component, Date Formatter, Style ๋ฑapi
โ Backend ํต์ : Request Function, Data Type, Mapper ๋ฑmodel
โ Data Model: Schema, Interface, Store, Business Logiclib
โ Slice ๋ด๋ถ Library ์ฝ๋config
โ Configuration๊ณผ Feature Flag
๊ฐ Layer์ Segment ์ฌ์ฉ๋ฒ์ Layer Page๋ฅผ ์ฐธ์กฐํ์ธ์.
Custom Segment๋ ์์ฑ ๊ฐ๋ฅํ๋ฉฐ, App๊ณผ Shared Layer์์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
Segment ์ด๋ฆ์ ์ฝ๋ ๋ชฉ์ ์ ๋ช
ํํ ํด์ผ ํฉ๋๋ค. components
, hooks
, types
๊ฐ์ ๋ชจํธํ ์ด๋ฆ์ ํผํ์ธ์.