๋ชฉ์ฐจ
๐ค ์คํ ๋ฆฌ๋ถ(Storybook)์ ๋ํด ์ผ๋ง๋ ์๊ณ ๊ณ์ธ์?
- ์ฃผ๋ก ์ฌ๋๋ค์ด ์๊ณ ์๋ ์ฌํญ
-
UI ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์ง์ ๋ฌธ์ํ, ์๊ฐํํ์ฌ ์๋ฎฌ๋ ์ด์
ํด ๋ณผ ์ ์๋ ๋๊ตฌ
-
React, vue, angular ๋ฑ ๋ค์ํ ํ๋ ์์ํฌ๋ฅผ ์ง์
-
์คํ ๋ฆฌ๋ถ์ ํ์ ๋ฐฐ๊ฒฝ(ํ์์ฑ)์ ๋ํด ๋ ์๊ณ ์ถ๋ค๋ฉด โ https://velog.io/@cookie004/why-storybook-in-2022
ํ์ง๋ง ๊ทธ๊ฒ ์ ๋ถ๋ ์๋๋๋ค!
์คํ ๋ฆฌ๋ถ์ ๊ธฐ๋ฅ์ ์ด๊ฒ ๋ฟ๋ง์ด ์๋๋๋ค. ์คํ ๋ฆฌ๋ถ ์ฌ์ฉ์ ์ํ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๊ณผ ํ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ณ , ๊ธฐ์
๋ณ ๋ฒ ์คํธ ์ผ์ด์ค๋ฅผ ํตํด ์ถ๊ฐ์ ์ธ ์ ์ฉํ ๊ธฐ๋ฅ๊ณผ ์คํ ๋ฆฌ๋ถ์ ์ฅ๋จ์ ์ ํ์ธํด ๋ด
์๋ค.
๐ ์คํ ๋ฆฌ๋ถ์ ๋ฌด์์ด ์๋์?
1. ์คํ ๋ฆฌ(Stories) ๋ฅผ ํตํด ์ปดํฌ๋ํธ์ ๋ค์ํ (+์ผ๊ด์ฑ์๋) ์ ์ฆ ์ผ์ด์ค๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค!
- ํ์ํ ์
๋ ฅ์ ์ ๊ณตํ๊ฑฐ๋, ๋ชฉํน๋ ์ปจํ
์คํธ์ API ์ฝ์ ํตํด ํน์ ์ํ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค.
- ์ปดํฌ๋ํธ์ ๋ณํ๋ฅผ stories ๋ก ์ ์ฅํฉ๋๋ค.
- ์คํ ๋ฆฌ๋ ์ฝ๊ฒ ๋งํด ํ๋์ ์ปดํฌ๋ํธ๊ฐ ์คํ ๊ฐ๋ฅํ ํ๋์ ์ผ์ด์ค๋ฅผ ์๋ฏธํฉ๋๋ค. ํน์ ํ props๋ฅผ ๋๊ฒผ์ ๋, ๊ทธ ์์ฒด๊ฐ ํ๋์ ์คํ ๋ฆฌ๊ฐ ๋๊ณ , ๊ทธ๋ ๊ฒ ๋ค์ํ ์คํ ๋ฆฌ๋ค์ ์ ์ํ๋ฉด ์ฐ๋ฆฌ๋ ์คํ ๋ฆฌ๋ถ์์ ๋ชจ๋ ์คํ ๋ฆฌ๋ค์ ์ง๊ด์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
- ์คํ ๋ฆฌ ์ ํ
์ค๋ฒ๋ทฐ ์คํ ๋ฆฌ
: ์ปดํฌ๋ํธ๊ฐ ๋ฌด์์ ํ๊ณ , ์ธ์ ์ฌ์ฉ๋๋์ง ๋ณด์ฌ์ฃผ๋ ์คํ ๋ฆฌ
ํ๋ ์ด๊ทธ๋ผ์ด๋ ์คํ ๋ฆฌ
: ์ฌ์ฉ์๊ฐ ์ฝ๋๋ฅผ ๋ง์ง์ง ์๊ณ , ๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋จํ ํ๋กํ ํ์ดํ์ ํ ์ ์๋ ์คํ ๋ฆฌ
ํผ์ฒ ์คํ ๋ฆฌ
: ์ปดํฌ๋ํธ๊ฐ ์ด๋ค ์ํ์ ๋ณํ์ ๊ฐ๋์ง ๋ณด์ฌ์ฃผ๋ ์คํ ๋ฆฌ
๋ ์ํผ ์คํ ๋ฆฌ
: ์ค์ ์ฌ์ฉ ์๋๋ฆฌ์ค์์๋ ์ด๋ป๊ฒ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ ํจ๊ป ์ฐ์ด๋์ง ๋ณด์ฌ์ฃผ๋ ์คํ ๋ฆฌ
2. ๋ฌธ์ํ ํ์ด์ง (Docs):
- MDX๋ก ์ด๋ฃจ์ด์ง ์์ ํ์ ํ์ด์ง โ ์ปดํฌ๋ํธ๋ค์ ์นดํ๋ก๊ทธ ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
3. ์ ๋์จ(Add-on) :
-
๊ฐ๋ฐ์ ๋์์ ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ์กด์ฌ์
๋๋ค.
-
Storybook์ ๊ณต์ ์ ๋์จ
- storysource : ํด๋น story๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ด๋ค ํ๋กํผํฐ๋ฅผ ์
๋ ฅํ๋์ง๋ฅผ ๋ณผ ์ ์๋ค
- actions : onChange ๊ฐ์ handler๋ค์ด ์ด๋ค ๊ฐ์ ๋๊ฒจ์ฃผ๋์ง๋ ํ์ธํ ์ ์๋ค.
- Docs : ํด๋น ์ปดํฌ๋ํธ์ API ๋ฌธ์๋ฅผ ๊ฐํธํ๊ณ ๊น๋ํ๊ฒ ๋ง๋ค์ด๋ผ ์ ์๋ค. React์ ๊ฒฝ์ฐ react-docgen ๋ฑ์ ๋์์ ๋ฐ์ผ๋ฉด ์ปดํฌ๋ํธ์์ค๋ก ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํ ์๋ ์๋ค. ํ์ํ๋ค๋ฉด MDX๋ฅผ ์ด์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
-
๊ทธ ์ธ ์ธ๊ธฐ์๋ ์ ๋์จ๋ค (์๋)
-
chromatic
๊ธฐ๋ฅ: ์๊ฐ์ ํ๊ท ํ
์คํธ
๊ตฌ์ฑ: visual testing์ ํ ๊ฒฐ๊ณผ ํ์ธ. ์ผ์ชฝ์ด Baseline, ์ค๋ฅธ์ชฝ์ด ์๋ก ๋ฐฐํฌํ ๋ด์ฉ
-
addon-a11y
๊ธฐ๋ฅ: ์น ์ ๊ทผ์ฑ ๊ฒ์ฌ ์ํ ๋ฐ ์๊ฐ ์ฅ์ ์๋ฎฌ๋ ์ด์
๊ธฐ๋ฅ ์ถ๊ฐ
๊ตฌ์ฑ: ๋ค์ํ ๊ท์น ์ค์ ๋๋ ํด์ , ์๊ฐ ์ฅ์ ๋ชจ์ ํด
-
storybook-dark-mode
๊ธฐ๋ฅ: Storybook UI ๋ฐ ์ปดํฌ๋ํธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ฐ์ ๋ชจ๋์ ์ด๋์ด ๋ชจ๋๋ก ์ ํ
๊ตฌ์ฑ: ์ปค์คํ
ํ
๋ง ์ค์
-
addon-screen-reader
๊ธฐ๋ฅ: ๊ธฐ๋ณธ ์คํฌ๋ฆฐ ๋ฆฌ๋๋ฅผ Storybook์ ์ถ๊ฐํ์ฌ ํค๋ณด๋ ๋ค๋น๊ฒ์ด์
๋ฐ ํ์ด์ง ๊ตฌ์กฐ ํ
์คํธ
๊ตฌ์ฑ: ์์ (์ค์น ํ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ)
-
aria-live-storybook-addon
๊ธฐ๋ฅ: aria-live ์์ฑ์ ํ์ฉ, ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด ๋ญ๋
๊ธฐ๊ฐ ์์์ฐจ๋ฆฌ๋๋ก ๋๋ ๊ธฐ๋ฅ ์ถ๊ฐ
๊ตฌ์ฑ: ์์ (์ค์น ํ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ)
-
storybook-addon-pseudo-states
๊ธฐ๋ฅ: Storybook ๋ฉ๋ด ๋ฐ์์ ๋ชจ๋ ์ ์ฌ ์ํ๋ฅผ ํ ๊ธํ์ฌ ํ
์คํธํ ์ ์๋ ๊ธฐ๋ฅ ์ถ๊ฐ
๊ตฌ์ฑ: Storybook ๊ตฌ์ฑ์ pseudo ํ๋ผ๋ฏธํฐ ์ถ๊ฐ
๐ฎ ์คํ ๋ฆฌ๋ถ(Storybook) ์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ฃผ์ ๊ธฐ๋ฅ์ ์๊ฐํฉ๋๋ค.
1๏ธโฃ ์ปดํฌ๋ํธ ํ์ฉ์ผ๋ก์์ ์คํ ๋ฆฌ๋ถ
ํ ์ฌ๋์ด ๋ชจ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ ๋ช
์ด ๋์์ ์์
์ ํ๋ค ๋ณด๋ ์๋์ ๊ฐ์ ์ด๋ ค์์ด ์์์ต๋๋ค.
- ์ด๋ฏธ ๋ง๋ค์ด์ ธ์๋ ์ปดํฌ๋ํธ์ธ์ง ๋ชฐ๋ผ์ ์ค๋ณต๋ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ค๋ณต์ด๋ผ๊ณ ๋ ํ์ง๋ง ๋น์ทํ๋ฉด์ ๋ฏธ๋ฌํ๊ฒ ๋ค๋ฅธ ์ปดํฌ๋ํธ ๋์์ธ์ด ์๊ฒจ ํต์ผ์ฑ์ ํด์น๋ค.
- ์ด๋ฏธ ์๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํด๋ ์ด๋ป๊ฒ ๋์ํ๋์ง ํ์ธํ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
์ด๋ฐ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ณ ์, ์์ฃผ ์ฐ์ด๋ ์ปดํฌ๋ํธ ์คํ์ผ์ ์ ์ฅํ๊ณ ๊บผ๋ด ์ฐ๋ ์ญํ
(๋ํ์ ์ผ๋ก ๋ฒํผ, ์ธํ์ฐฝ, ํ์ด์ง๋ค์ด์
, ์
๋ ํธ ๋ฑ)
2๏ธโฃ ๋์์ธ ํ ํฐ์ผ๋ก์์ ์คํ ๋ฆฌ๋ถ
- ์์, ํ์ดํฌ๊ทธ๋ํผ, ์์ด์ฝ๊ณผ ๊ฐ์ ์๊ฐ์ ์คํ์ผ ํ์ธ๊ฐ๋ฅ!
- ๋์์ธ ๊ฐ(์์, ํฐํธ ๋ฑ)์ ๊ณตํต ๋ณ์๋ก ๊ด๋ฆฌ, ์ผ๊ด๋ ๋์์ธ ์ ์งํฉ๋๋ค.
- ์คํ ๋ฆฌ๋ถ์ Doc Blocks๋ฅผ ํ์ฉํ๋ฉด ์์ํ๋ ํธ, ํ์ดํฌ, ํ
๋ง ๋ฑ์ ํ์ธํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. ๐๐ป
3๏ธโฃ ๋์์ด๋, ์๋น์ค ๊ธฐํ์์ ํ์
ํด ๋ก์์ ์คํ ๋ฆฌ๋ถ
- ํ๋ฉด ๊ฐฑ์ ์ฃผ๊ธฐ๊ฐ ๋น ๋ฅด๋ค.
- chromatic์ ํตํด ๋ฐฐํฌํ์ฌ ๋ณด๋ค ์์ฝ๊ฒ ๋์์ด๋์๊ฒ ํผ๋๋ฐฑ์ ์์ฒญํ ์ ์์ต๋๋ค.
- ๋ณต์กํ ๋จ๊ณ๊ฐ ์์ด, ๊นํ๋ธ์์ ๋์์ด๋ ํน์ ์๋น์ค ๊ธฐํ์์ ํจ๊ป ๋ฆฌ๋ทฐ ํ ์ ์์ต๋๋ค.
- (ํผ๊ทธ๋ง๋ฅผ ์ค๋ฌด์ ์ฌ์ฉํ๋ค๋ฉด) ์คํ ๋ฆฌ๋ถ๊ณผ ํผ๊ทธ๋ง์ ์ฐ๋์ด ๊ฐ๋ฅํ๋ค.
- ํผ๊ทธ๋ง๋ก๋ ํํํ ์ ์๋ ๋์ ์ธ ๋ถ๋ถ์ ๋ํ ์ปค๋ฎค๋์ผ์ด์
๋ ๊ฐ๋ฅ
๐คฉ ์คํ ๋ฆฌ๋ถ(Storybook) ์ ๋ ์ ์ฐ๋ ํ์ฉ๋ฒ์ ์๊ฐํฉ๋๋ค.
๐ ๋ค๋ฅธ ๊ธฐ์
์ ์คํ ๋ฆฌ๋ถ ํด๋๊ตฌ์กฐ๋ ์ด๋ป๊ฒ ์๊ฒผ์๊น?
์คํ ๋ฆฌ๋ถ์ ํ๋ด์์๋ง ์ธ๊ฒ์ธ์ง, ๋์์ธ ์์คํ
๊ตฌ์ถ์ฉ์ผ๋ก ์ฌ์ฉํ์ฌ ์ธ๋ถ์์๋ ๊ฐ์ด ์ฌ์ฉํ ๊ฑด์ง์ ๋ฐ๋ผ์ ํ๋ก์ ํธ ๊ตฌ์ฑ์ด ๋ฌ๋ผ์ง๊ฒ ๋๋๋ฐ, ์๋ ์์๋ค์ ๋ณด๋ฉด์ ์ด๋ค ๊ตฌ์ฑ์ด ์ข์์ง ์๊ฐํด๋ณด์.
BBC
the Guardian
IBM
- ์ปดํฌ๋ํธ + ๋ ์ด์์ + ํจํด # ์ปดํฌ๋ํธ ์ํ๋ณ ๋ถ๋ฅ
- https://angular.carbondesignsystem.com/?path=/story/pattern-filtering--multi-selection
- IBM์ด ์ฌ์ฉํ๋ ๋์์ธ ์์คํ
( Carbon )์ ์ฃผ๋ก ํ๋ก์ ํธ์ ํ์ผ ์ถ๊ฐ, ๋ณด๊ณ ์ ์ ์ถ, ํ๋ ์งํ ์ํฉ ์ถ์ ๊ณผ ๊ฐ์ ํน์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋์งํธ ์ ํ์ ๊ตฌ์ถํ๋ ๋ฐ ์ง์ค
- UI ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉํ ์ ๋๋ก ์์ ๋๋์ง ๋๋ ์์ง ์คํ์ ์ธ ๋จ๊ณ์ธ์ง, ๋๋ ์ง์๋์ง ์๋์ง์ ๋ฐ๋ผ ๊ตฌ๋ณ
โจ ๋ค๋ฅธ ๊ธฐ์
์ด ์ ํ์ฉํ๋ ๊ธฐ๋ฅ์ ๋ฌด์์ด ์์๊น?
1. ํ์ด์ง ์์ฒด๋ฅผ ์คํ ๋ฆฌ๋ถ์ ๊ทธ๋ฆฌ์.
BBC ์ the Guardian, ๊ตญ๋ด์์๋ 29CM ๊ธฐ์
์ ์ปดํฌ๋ํธ ๋ฟ ์๋๋ผ ํ์ด์ง๋ 1:1 ๋งค์นญํด์ ์คํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์ ์ฅํ๊ณ ์์ต๋๋ค.
ํ์ด์ง ์์ฒด๋ฅผ ์คํ ๋ฆฌ๋ถ์ ๊ทธ๋ฆฌ๋ ํ์ (BBC, the Guardian)
Pure presentational pages
Teams at the BBC, The Guardian, and the Storybook maintainers themselves build pure presentational pages. If you take this approach, you don't need to do anything special to render your pages in Storybook.
It's straightforward to write components to be fully presentational up to the screen level. That makes it easy to show in Storybook. The idea is that you do all the messy โconnectedโ logic in a single wrapper component in your app outside of Storybook. You can see an example of this approach in theย Dataย chapter of the Intro to Storybook tutorial.
Building pages with Storybook
- Pureํ๊ฒ UI๋ง ์๋ ํ์ด์ง๋ฅผ ์ปดํฌ๋ํธ์ฒ๋ผ ์คํ ๋ฆฌ๋ถ์ ์ฌ๋ฆฌ๋ ์ผ์ ์ฅ์
โ ๋ฐฑ์๋๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , MockApi๋ก ํ๋ก ํธ ๊ฐ๋ฐ ์์
์ ๋ฏธ๋ฆฌ ์งํ ํ ์ ์์ต๋๋ค.
2. (1๋ฒ์ ์ด์ด์) ๋น์ฅฌ์ผ ํ
์คํ
์ผ๋ก ๋์์ธ QA ๊ณผ์ ์ ๊ฐ์ํํ์!
-
Storybook ์์ MSW ์ฌ์ฉํ๊ธฐ
msw ์ ๋์จ์ ํ์ฉํ์ฌ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ์ ์ ์ธ ํ ๋๋จธ์ง ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ํ
์คํธ ํ ์ ์์ต๋๋ค.
Jest ๋ฐ Mocha์ ๊ฐ์ ํ
์คํ
ํ๋ ์์ํฌ์ ํตํฉํ์ฌ ์ปดํฌ๋ํธ์ ๋ํ ์๋ํ๋ ํ
์คํธ๋ฅผ ๊ฐ๋ฐ ์ค์ ์คํํ ์ ์์ต๋๋ค. โ ์ปดํฌ๋ํธ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ฐํด์ง ๋๋ง๋ค ํ
์คํธ๊ฐ ์๋์ผ๋ก ์คํ๋๋ฏ๋ก ๊ฐ๋ฐ ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
-
Unit Test : ์ด๋ฏธ ์ ์๋ ํน์ ์์๊ฐ ์ด๋ฐ ์์ผ๋ก ์์ง์ฌ์ผํ๋ค๋ ๊ฐ๋
. ๋น๋๊ธฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์คํ
๊ณผ ๋
๋ฆฝ์
-
UI Test : UI๊ฐ ์ด๋ค ์์ผ๋ก ์์ง์ฌ์ผ ํ๋?์ ๋ํ ํ
์คํธ๋ก ์์คํ
์ค๊ณ ์์์ ๋ฐ๋ฅธ ์๋์ ํ๋ํ๋ ํ
์คํธ ์งํ
-
์ค์ ์งํํ๋ ํ
์คํธ ์ํ(๋ก๊ทธ์ธ, ํ์๊ฐ์
)
- (+) ์ค์ ๋ก ๋ฐฐ๋ฏผ๊ฐ์ ๊ฒฝ์ฐ, ๋์์ธ ์์คํ
์ ๋์
ํ์ฌ [ ๊ธฐํ - ๋์์ธ - ํ๋ก ํธ๊ฐ๋ฐ - ๋ฐฑ์๋๊ฐ๋ฐ - ๊ธฐ๋ฅQA - ๋์์ธQA - ๋ฆด๋ฆฌ์ฆ ] ์ ๊ณผ์ ์์ ๋์์ธ QA ๊ณผ์ ์์์ ๋ณ๋ชฉํ์์ ํฌ๊ฒ ๊ฐ์ ํ๋ค๊ณ ํ๋ค (2019๋
12์ ๋น์)
3. ์ฒด์ธ์ง ๋ก๊ทธ๋ฅผ ํตํ ๋ฒ์ ์ ๊ด๋ฆฌํ์.
-
UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ธ ์์คํ
์ ์ง์์ ์ธ ์
๋ฐ์ดํธ
์ปดํฌ๋ํธ์ ์ถ๊ฐ , ์ ๊ฑฐ ๋ฐ API์ ๋ณ๊ฒฝ ๋ฑ์ ์ฒด์ธ์ง๋ก๊ทธ ํ์ด์ง์์ ๊ฐํธํ๊ฒ ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด ํ์ด์ง์์ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต๊ณผ ํ๋ก์ ํธ ๋ก๋๋งต์ ๋ณด์ฌ์ฃผ๋ ๊ฒ๋ ํ๋ฅญํ ๋ฐฉ๋ฒ์
๋๋ค.
-
ํนํ ํ์ด์ง๋ณ ์ปดํฌ๋ํธ ์ฐจ์ด โ PV(page view) ๊ฐ ๋์ ํ์ด์ง์์ ์ฌ์ฉ๋๋ ํธ๋ ๋ํ๊ณ ์ต์ ํ ๋ ์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ํ์ด์ง์์ ์ฌ์ฉ๋์ง ์์ ๋ฐ์ํ๋ ๊ฒฉ์ฐจ๋ฅผ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํตํด ์ค์ผ ์ ์๋ค๊ณ ํ๋ค.
(๋ฒ์ธ) ์คํ ๋ฆฌ๋ถ์ด ๊ฐ์ ธ์ค๋ ์์ธ์ ๊ธ์ ์ ์ธ ํจ๊ณผ
1. ์ฝ๋ ๋ฆฌํฉํ ๋ง ํจ๊ณผ
- ํ๋์ ์ปดํฌ๋ํธ์์ ๋๋ฌด ๋ง์ ์ผ์ ํ๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ๋ฅผ ๋ถํ์ํ๊ฒ ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ
- ์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์์กด์ฑ์ ๊ฐ์ง ๊ฒฝ์ฐ
2. ์ ๊ท์
์ฌ์ ์จ๋ณด๋ฉ์ ์ฉ์ด์ฑ
- API ๋ช
์ธ์์ธ Swagger ์ฒ๋ผ ์ฌ๋ด ์ปดํฌ๋ํธ์ ๊ทธ ๊ตฌ์กฐ์ ๊ด๋ จํด์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ์ธํ๊ณ ํ
์คํธ๊ฐ ๊ฐ๋ฅํ๋ค.
๐ซฃ ์คํ ๋ฆฌ๋ถ์ ์ด๋ ค์ด ์ & ์๋ฌธ์ฌํญ
1. ์ด๊ธฐ ์ค์ ์ ๊ดํ ์๊ฐ ์๋ชจ๊ฐ ํฌ๋ค.
- ๋ง์ฝ ์คํ ๋ฆฌ๋ถ์ ์ฒ์๋ถํฐ ์ฌ์ฉํ์ง ์์๋ค๋ฉด, ๊ธฐ์กด์ ์งํํ๋ ์
๋ฌด ์ด์ธ์๋ ๋ง์ ๊ณต์๊ฐ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
- ๋ด๋น์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ์ด๊ธฐ ์ค์ ๋ฐ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค.
2. ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ๋ฉด์ ์คํ ๋ฆฌ๋ถ์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ๋์น์ง ์๊ณ ํ ์ ์์๊น?
- ๋ฐฐ๋ฏผ๋ ์ค์ ๋ก ์ง์๋ค ๊ต์ก + ์ ์ฉ๊น์ง 2๋
์ ๋๊ฐ ์์๋์๋ค๊ณ ํจ.
- ๋๋์ฑ ์คํ ๋ฆฌ๋ถ ํด๋๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ์ก์์ง + docs ์ ์ค์์ฑ์ ๋ํด ๋ ๊ณ ๋ฏผํด๋ด์ผ ํจ.
3. ์คํ ๋ฆฌ๋ถ์ ๋ชจ๋ ํ๋ก์ ํธ์ ํจ๊ณผ์ ์ผ๊น?
- ๋ชจ๋ ํ๋ก์ ํธ์ ์ ํฉํ์ง ์์ ์ ์์:
- ๋จ์ํ SPA ํ๋ก์ ํธ๋ ๊ท๋ชจ๊ฐ ํฐ ํ๋ก์ ํธ์์๋ ๋น์ฉ ๋๋น ํจ๊ณผ๊ฐ ๋ฎ์ ์ ์์
- ๋ง์ ์์ ์คํ ๋ฆฌ์ ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ, ์คํ ๋ฆฌ๋ถ์ ์ด๊ธฐ ๋ก๋ฉ ์๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฑ์ ์ฃผ์ โ ํ์ํ ์๋น์ค ๋ถ๋ถ์๋ง ์ ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ์ก์์ผ ํ ๋ฏ
+)
ํ๋ก ํธ์๋ ์ธํด ๊ทผ๋ฌด๋ฅผ ํ๋ฉด์ ํ
ํฌํ ํฌ ๋ฐํ์ ๊ธฐํ๊ฐ ์ฃผ์ด์ก๋๋ฐ,
ํ์์ ๊ด์ฌ์ด ์๊ณ ๊ฐ๋จํ๊ฒ ํ
์คํธ ํด๋ณด์๋ ์คํ ๋ฆฌ ๋ถ์ ๋ํด ์ ๋ฆฌํ์ฌ ๋ฐํํ์์ต๋๋ค.
๋ง์ฝ ์๋ชป ๊ธฐ์ฌํ ๋ด์ฉ์ด ์๊ฑฐ๋, ๋ฌธ์ ๊ฐ ๋๋ ์ฌํญ์ด ์๋ค๋ฉด
ํธํ๊ฒ ๋๊ธ๋ก ๋ง์์ฃผ์ธ์!
๋ชจ๋ ๋๊ธ์ ์ ์๊ฒ ํฐ ๋์์ด ๋ฉ๋๋ค! ๐ฅฐ๐ฅฐ๐ฅฐ
= ์ฐธ๊ณ ํ ์๋ฃ(๋งํฌ,๊ธ,์ฌ์ง)๋ค =
์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค!