๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ๋ก ํ๋ก ํธ์๋ ํ์ฅ์ฑ๊ณผ ํ์ ์ ์คํํ์ธ์. ๊ธ๋ก๋ฒ ๊ฐ๋ฐํ์ ์ํ ์ฅ์ , ๊ณผ์ , ๋๊ตฌ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ์ํฉ๋๋ค.
ํ๋ก ํธ์๋ ๋ฌ์: ๊ธ๋ก๋ฒ ๊ฐ๋ฐ ์ฐ์์ฑ์ ์ํ ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ ํ์
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ์ฌ์ฉ์ ๊ธฐ๋์น๊ฐ ์น์๋ ์ญ๋์ ์ธ ์น ๊ฐ๋ฐ์ ์ธ๊ณ์์ ํ๋ก ํธ์๋ ํ์ ์ข ์ข ์ค๋ํ ๊ธฐ๋ก์ ์๊ฒ ๋ฉ๋๋ค. ์ฌ๋ฌ ์ํธ ์์กด์ ์ธ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ค์ํ ํ๋ซํผ์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๋์ ๊ฐ๋ฐ ์๋๋ฅผ ์ ์งํ๋ ๊ฒ์ ๋ฒ ์ฐฌ ๊ณผ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ง๊ด์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ ์ด๋ฌํ "ํ๋ก ํธ์๋ ๋ฌ์"๋ ํ์ ์ ์ธ ์ํคํ ์ฒ ์๋ฃจ์ ์ ์๊ตฌํฉ๋๋ค. ๋ฐ๋ก ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ์ ๋๋ค. ์ด๋ ๊ธ๋ก๋ฒ ํ๋ก ํธ์๋ ํ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ , ๊ณต์ ๋ฐ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ํ์ ํ ๊ฒ์ ์ฝ์ํ๋ ๋จ์ผ ํตํฉ ์ฝ๋๋ฒ ์ด์ค์ ๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ์ ์ธ๊ณ๋ฅผ ๊น์ด ํ๊ณ ๋ค์ด, ๊ทธ ๊ธฐ๋ณธ ์์น, ๋ถ์ธํ ์ ์๋ ์ด์ , ๋ด์ฌ๋ ๊ณผ์ , ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๊ตฌ๋ํ๋ ํ์ ๋๊ตฌ๋ค์ ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฑ๊ณต์ ์ธ ๋์ ์ ์ํ ์ค์ฉ์ ์ธ ์ ๋ต๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณต๊ฐํ์ฌ, ๋ฏผ์ฒฉํ ์คํํธ์ ๋ถํฐ ๋ค๊ตญ์ ๊ธฐ์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ท๋ชจ์ ์กฐ์ง์ ์ ์ฉ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ๊ฒ์ ๋๋ค. ๋ชจ๋ ธ๋ ํฌ๋ก์ ์ ํ์ ๊ณ ๋ ค ์ค์ด๊ฑฐ๋ ๊ธฐ์กด ์ค์ ์ ์ต์ ํํ๊ณ ์ ํ๋ค๋ฉด, ์ด ๊ฒ์๋ฌผ์ ์ด ๊ฐ๋ ฅํ ์ํคํ ์ฒ ํจ๋ฌ๋ค์์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ์ฌ ์ง๋ฆฌ์ ๊ฒฝ๊ณ๋ฅผ ์ด์ํ๋ ์์ง๋ ฅ ์๊ณ ํจ์จ์ ์ธ ๊ฐ๋ฐ ์ํ๊ณ๋ฅผ ์กฐ์ฑํ๋ ๋ฐ ํ์ํ ์ง์์ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
๋ชจ๋ ธ๋ ํฌ๋ ๋ฌด์์ธ๊ฐ? ์ํํธ์จ์ด ์กฐ์ง์ ์ฌ์ ์
ํต์ฌ์ ์ผ๋ก, "๋ชจ๋๋ฆฌ์ ๋ฆฌํฌ์งํ ๋ฆฌ"์ ์ค์๋ง์ธ ๋ชจ๋ ธ๋ ํฌ๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ณ ํ๋ก์ ํธ๋ ํจํค์ง๋ฅผ ๋จ์ผ ๋ฒ์ ๊ด๋ฆฌ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ์ ์ฅํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ๋ต์ ๋๋ค. ๊ฐ ํ๋ก์ ํธ๊ฐ ์์ฒด ๋ ๋ฆฝ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์กด์ฌํ๋ ์ ํต์ ์ธ "ํด๋ฆฌ๋ ํฌ" ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, ๋ชจ๋ ธ๋ ํฌ๋ ๋ชจ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ค์ ์ง์คํํ์ฌ ๋ณด๋ค ํตํฉ์ ์ด๊ณ ์ ์ฒด์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์กฐ์ฑํฉ๋๋ค. ์ด ๊ฐ๋ ์ ์๋ก์ด ๊ฒ์ด ์๋๋๋ค. ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๋ง์ดํฌ๋ก์ํํธ, ์ฐ๋ฒ์ ๊ฐ์ ๊ธฐ์ ๋๊ธฐ์ ๋ค์ ์ค๋์ ๋ถํฐ ๊ฑฐ๋ํ๊ณ ๋ณต์กํ ์ํํธ์จ์ด ํ๊ฒฝ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์นํธํด ์์ผ๋ฉฐ, ๋๊ท๋ชจ ์์ง๋์ด๋ง ํ๊ณผ ๋ณต์กํ ์ ํ ์ํ๊ณ๋ฅผ ์กฐ์ ํ๋ ๋ฐ ์์ด ๊ทธ ์ฌ์คํ ์ด์ ์ ์ธ์ํ์ต๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ๋ชจ๋ ธ๋ ํฌ์ ์ฑํ์ ์ต๊ทผ ๋ช ๋ ๋์ ํฌ๊ฒ ๊ธ์ฆํ์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA), ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋, ๊ณต์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋์์ธ ์์คํ , ์ ํธ๋ฆฌํฐ ํจํค์ง, ํ๋ก ํธ์๋๋ฅผ ์ํ ๋ฐฑ์๋(BFF) ์๋น์ค๋ก ๊ตฌ์ฑ๋ ๋ณต์กํ ์์คํ ์ผ๋ก ์งํํจ์ ๋ฐ๋ผ, ์๋ง์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฑธ์ณ ์ด๋ฌํ ๋ถ์ฐ๋ ์กฐ๊ฐ๋ค์ ๊ด๋ฆฌํ๋ ์ค๋ฒํค๋๋ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ฒ์ ์ถฉ๋, ์ผ๊ด์ฑ ์๋ ํด๋ง, ์ค๋ณต๋ ๋ ธ๋ ฅ, ํํธํ๋ ์ง์ ๊ธฐ๋ฐ์ ์ข ์ข ํด๋ฆฌ๋ ํฌ ์ค์ ์ ๋ฌธ์ ์ ์ ๋๋ค. ๋ชจ๋ ธ๋ ํฌ๋ ์ด๋ฌํ ์์๋ค์ ํตํฉ๋ ๊ตฌ์กฐ๋ก ํตํฉํ์ฌ ํ๋ก์ ํธ ๊ฐ ํ์ ์ ๋จ์ํํ๊ณ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๋ ๋งค๋ ฅ์ ์ธ ๋์์ ์ ๊ณตํฉ๋๋ค.
๋ค์ํ ๊ธ๋ก๋ฒ ์์ฅ์์ ์ด์๋๋ ๋๊ท๋ชจ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ์๊ฐํด ๋ณด์ญ์์ค. ์ด ํ๋ซํผ์๋ ๊ณ ๊ฐ ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ , ๋ด๋ถ ๊ด๋ฆฌ ๋์๋ณด๋, ๊ณต๊ธ์ ์ฒด ํฌํธ ๋ฐ ๋ง์ผํ ๋๋ฉ ํ์ด์ง ์์ฑ๊ธฐ๊ฐ ์์ ์ ์์ต๋๋ค. ํด๋ฆฌ๋ ํฌ ์ค์ ์์๋ ์ด๋ค ๊ฐ๊ฐ์ด ๋ณ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋์ด ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์์ต๋๋ค. ๊ณต์ "๋ฒํผ" ์ปดํฌ๋ํธ ์์ ์ 5๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ์ ์๊ณ , ๊ธ๋ก๋ฒ ํ ๋ง ๋ณ๊ฒฝ์ ์กฐ์ ๋ ๋ฆด๋ฆฌ์ค๊ฐ ํ์ํ๋ฉฐ, ์ ๊ท ๊ฐ๋ฐ์ ์จ๋ณด๋ฉ์ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ํด๋ก ํ๊ณ ์ค์ ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ฉด, ๋ชจ๋ ธ๋ ํฌ๋ ์ด๋ฌํ ๋ชจ๋ ํ๋ก์ ํธ์ ๊ณต์ ์ปดํฌ๋ํธ๋ฅผ ํ ์ง๋ถ ์๋์ ๋์ด ์์์ ๋ณ๊ฒฝ๊ณผ ์ผ๊ด๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
๋ชจ๋ ธ๋ ํฌ์ ๋ณธ์ง์ ํตํฉ์ ํตํด ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ๋์์ ๊ฐ๋ณ ํ๋ก์ ํธ์ ์์จ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฅ๋ ฅ์ ์์ต๋๋ค. ์ด๋ ํ๋์ ๊ฑฐ๋ํ๊ณ ๋ฏธ๋ถํ๋ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ๊ฐ ์์ฒด ์ฑ ์์ ๊ฐ์ง๋ฉด์๋ ๊ณต์ ์ํ๊ณ์ ํด๋ง์ ์ด์ ์ ๋๋ฆฌ๋ ์ ์ ์๋ ํจํค์ง๋ค์ ๊ตฌ์กฐํ๋ ์ปฌ๋ ์ ์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด ๊ตฌ๋ณ์ ๋ชจ๋ ธ๋ ํฌ๊ฐ ๊ด๋ฆฌ ๋ถ๊ฐ๋ฅํ ๋ชจ๋๋ฆฌ์ค๋ก ํดํํ์ง ์๊ณ ํจ๊ณผ์ ์ผ๋ก ํ์ฅ๋๋ ๋ฐฉ์์ ์ดํดํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
๋ชจ๋ ธ๋ ํฌ์ ๋งค๋ ฅ: ํ๋ก ํธ์๋ ํ์ ์ํ ํต์ฌ ์ด์
๋๊ท๋ชจ ํ๋ก ํธ์๋ ํ๊ฒฝ์์ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ฑํํ๋ ์ ๋ต์ ๊ฒฐ์ ์ ๊ฐ๋ฐ์ ์์ฐ์ฑ, ์ฝ๋ ํ์ง ๋ฐ ์ ๋ฐ์ ์ธ ํ๋ก์ ํธ ์ ์ง ๊ด๋ฆฌ์ฑ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๋ค์ํ ์ด์ ์ ๋ณ์ต๋๋ค. ์ด๋ฌํ ์ฅ์ ์ ์ํํ ํ์ ๊ณผ ํ์คํ๋ ๊ดํ์ด ๊ฐ์ฅ ์ค์ํ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์์ ํนํ ๋๋๋ฌ์ง๋๋ค.
ํฅ์๋ ์ฝ๋ ๊ณต์ ๋ฐ ์ฌ์ฌ์ฉ์ฑ
๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ฑํํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ด์ ์ค ํ๋๋ ๊ฒฌ๊ณ ํ ์ฝ๋ ๊ณต์ ์ ๋ํ ๋ด์ฌ์ ์ง์์ ๋๋ค. ์ ํต์ ์ธ ํด๋ฆฌ๋ ํฌ ์ค์ ์์ ์ฝ๋ ๊ณต์ ๋ ์ข ์ข ํจํค์ง๋ฅผ ๋น๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ ๋ค์, ๊ฐ ์๋น ํ๋ก์ ํธ์์ ์ธ๋ถ ์์กด์ฑ์ผ๋ก ๊ฐ๋ณ์ ์ผ๋ก ์ค์นํ๊ณ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ๋ฒ์ ๊ด๋ฆฌ ์ค๋ฒํค๋, ์ ์ฌ์ ์ธ "์์กด์ฑ ์ง์ฅ", ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ ์ฌํญ ์ ํ์ ์ง์ฐ์ ์ผ๊ธฐํฉ๋๋ค.
๋ชจ๋ ธ๋ ํฌ ๋ด์์๋ ์ฝ๋ ๊ณต์ ๊ฐ ๋ง์ฐฐ ์๋ ๋ด๋ถ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋๋ค. ๊ณตํต ์ปดํฌ๋ํธ, ์ ํธ๋ฆฌํฐ ํจ์, ๋์์ธ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, API ํด๋ผ์ด์ธํธ ๋ฐ TypeScript ํ์ ์ ์๋ ๋์ผํ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ๋ด๋ถ ํจํค์ง๋ก ์กด์ฌํ ์ ์์ต๋๋ค. ๋ชจ๋ ธ๋ ํฌ์ ๋ชจ๋ ํ๋ก์ ํธ๋ ๋ก์ปฌ ๊ฒฝ๋ก ๋๋ ์ํฌ์คํ์ด์ค ๋ณ์นญ์ ํตํด ์ฐธ์กฐํ์ฌ ์ด๋ฌํ ๋ด๋ถ ํจํค์ง๋ฅผ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฆ๊ฐ์ ์ธ ์ ๊ทผ์ฑ์ ๊ณต์ ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋ ๋ ๋ชจ๋ ธ๋ ํฌ ๋ด์ ๋ชจ๋ ์๋น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฆ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ์ฌ ํ ์คํธ๋ฅผ ๋จ์ํํ๊ณ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ค์ํธ์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํจ์ ์๋ฏธํฉ๋๋ค.
๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์ง์๋๋ ์ฌ๋ฌ ์ ํ ๋ผ์ธ์ ๊ฐ์ง ๊ธ๋ก๋ฒ ๊ธฐ์ ํ์ฌ๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ญ์ฌ์ ์ผ๋ก, ๊ทธ๋ค์ ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ๋ค ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ๋ธ๋๋ ์ ์ฒด์ฑ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์์ ์ ์์ต๋๋ค. ๋์์ธ ์์คํ , UI ์ปดํฌ๋ํธ(์: ๋ฒํผ, ํผ, ๋ด๋น๊ฒ์ด์ ), ๊ณต์ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋จ์ผ ๋ชจ๋ ธ๋ ํฌ ํจํค์ง๋ก ํตํฉํจ์ผ๋ก์จ, ๋ชจ๋ ํ๋ก ํธ์๋ ํ๋ก์ ํธ์์ ๊ทธ ์ฌ์ฉ์ ์๋ฌดํํ๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ ์๊ฐ์ , ๊ธฐ๋ฅ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ ๋ฟ๋ง ์๋๋ผ ์ด๋ฌํ ๊ธฐ์ด์ ์ธ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๋ฐ, ๋ฌธ์ํ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ๋๋ ๋ ธ๋ ฅ์ ๊ทน์ ์ผ๋ก ์ค์ฌ์ค๋๋ค. ๊ธฐ์กด ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ์ฌ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์์ด ๋ค์ํ ๊ตญ์ ์ง์ญ์์ ์์ฅ ์ถ์ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
๋จ์ํ๋ ์์กด์ฑ ๊ด๋ฆฌ
์๋ง์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฑธ์ณ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋นํ ๋ง์ฐฐ์ ์์ธ์ด ๋ ์ ์์ต๋๋ค. ํด๋ฆฌ๋ ํฌ ์ธ๊ณ์์๋ ๊ฐ ํ๋ก์ ํธ๊ฐ ์์ฒด ์์กด์ฑ ์ธํธ๋ฅผ ์ ์ธํ์ฌ ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: React, Redux, Lodash)์ ๋ฒ์ ์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ด๋ ์ค๋ณต๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ธํ ๋ฒ๋ค ํฌ๊ธฐ ์ฆ๊ฐ, ํธํ๋์ง ์๋ ๋ฒ์ ์ผ๋ก ์ธํ ๋ฏธ๋ฌํ ๋ฒ๊ทธ, ๊ณต์ ์์กด์ฑ์์ ์น๋ช ์ ์ธ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์์ ๋์ ๋ณต์กํ ์ ๊ทธ๋ ์ด๋ ๊ฒฝ๋ก๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๋ชจ๋
ธ๋ ํฌ๋ ํนํ Yarn Workspaces, npm Workspaces ๋๋ pnpm๊ณผ ๊ฐ์ ํ๋์ ์ธ ํจํค์ง ๊ด๋ฆฌ์์ ๊ฒฐํฉ๋ ๋, ์์กด์ฑ ๊ด๋ฆฌ์ ๋ํ ์ค์ ์ง์ค์ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๊ณตํต ์์กด์ฑ์ ๋ฃจํธ node_modules
๋๋ ํ ๋ฆฌ๋ก "ํธ์ด์คํ
"ํ์ฌ ๋ชจ๋
ธ๋ ํฌ ๋ด์ ์ฌ๋ฌ ํจํค์ง์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋จ์ผ ์ธ์คํด์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ณต์ ํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๋์คํฌ ๊ณต๊ฐ์ ์ค์ด๊ณ , ์ค์น ์๊ฐ์ ๋จ์ถํ๋ฉฐ, ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ๊ณตํต ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ํํ ๋์ผํ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ฃผ์ React ๋ฒ์ ๊ณผ ๊ฐ์ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ ๋ถ์ฐ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์ ๋ฐ์ ๊ฑธ์น ํํธํ๋๊ณ ์ํ ๋ถ๋ด์ด ํฐ ์์
์ด ์๋๋ผ, ๋ชจ๋
ธ๋ ํฌ ๋ด์์ ๋จ์ผํ๊ณ ์กฐ์ ๋ ๋
ธ๋ ฅ์ด ๋ฉ๋๋ค. ์ด๋ฌํ ์ผ๊ด์ฑ์ ๊ณต์ ๋ ๊ธฐ๋ณธ ๊ธฐ์ ์ธํธ์์ ์์
ํ๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์์์ ์ปค๋ฐ๊ณผ ์ผ๊ด๋ ๋ณ๊ฒฝ
๋ชจ๋ ธ๋ ํฌ ๊ตฌ์กฐ์ ์ฌ์คํ ์ฅ์ ์ "์์์ ์ปค๋ฐ"์ ํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ด๋ ์ฌ๋ฌ ํ๋ก์ ํธ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๊ทธ ์๋น์์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋จ์ผํ๊ณ ์ผ๊ด๋ ๋จ์๋ก ์ปค๋ฐํ๊ณ ๊ฒํ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณต์ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๊ฐ ๋์ ๋ ๊ฒฝ์ฐ, ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ํด๋น ์ ๋ฐ์ดํธ๋ฅผ ๋์ผํ ์ปค๋ฐ์ ํฌํจํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๊ฐ ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ณ๋์ ์ปค๋ฐ๊ณผ ํ ๋ฆฌํ์คํธ๋ฅผ ํ์๋ก ํ์ฌ ๋ณต์กํ ์กฐ์ ๊ณผ์ ์ ๋ชจ๋ ์ข ์ ํ๋ก์ ํธ๊ฐ ๋์์ ์ ๋ฐ์ดํธ๋์ง ์์ ๊ฒฝ์ฐ ๋ถ์ผ์น ๊ฐ๋ฅ์ฑ์ ์ด๋ํ๋ ํด๋ฆฌ๋ ํฌ ์ค์ ๊ณผ ๊ทน๋ช ํ ๋์กฐ๋ฅผ ์ด๋ฃน๋๋ค.
์ด๋ฌํ ์์์ ์ปค๋ฐ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ๋ฐ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๊ฐ์ํํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๊ณ ๊ฐ ๋์ ์น์ฌ์ดํธ์ ๋ด๋ถ ๋ถ์ ๋์๋ณด๋ ๋ชจ๋์์ ์ฌ์ฉ๋๋ ๊ณตํต API ํด๋ผ์ด์ธํธ๋ฅผ ๋ฆฌํฉํ ๋งํด์ผ ํ ๋, ๋จ์ผ ๋ธ๋์น์์ ํ์ํ ๋ชจ๋ ๋ณ๊ฒฝ์ ์ํํ์ฌ ๊ฐ๋ฐ ์ฃผ๊ธฐ ๋ด๋ด API ํด๋ผ์ด์ธํธ์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋๊ฐ ์ผ๊ด๋๊ณ ์๋ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์งํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ ๋๊ธฐํ๋์ง ์์ ์์กด์ฑ์ผ๋ก ์ธํ ๋ฒ๊ทธ ๋ฐ์ ์ํ์ ์ค์ด๊ณ , ๊ฒํ ์๊ฐ ๋ณ๊ฒฝ์ ์ ์ฒด ์ํฅ์ ์ ์ฒด์ ์ผ๋ก ๊ฒํ ํ ์ ์์ผ๋ฏ๋ก ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํฉ๋๋ค. ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ด ๋จ์ผ ์์ค๋ ์คํด๋ฅผ ์ต์ํํ๊ณ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ๊ธฐ์ค์ ์์ ์์ ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ฐ์ํ๋ CI/CD ํ์ดํ๋ผ์ธ
์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ ๋ฌ(CI/CD) ํ์ดํ๋ผ์ธ์ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ค์ถ์ ๋๋ค. ํด๋ฆฌ๋ ํฌ ํ๊ฒฝ์์๋ ๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์์ฒด ๋ ๋ฆฝ์ ์ธ CI/CD ์ค์ ์ ํ์๋ก ํ์ฌ, ์ค๋ณต๋ ๊ตฌ์ฑ, ์ฆ๊ฐ๋ ์ ์ง ๊ด๋ฆฌ ์ค๋ฒํค๋, ์ด์ง์ ์ธ ๋ฐฐํฌ ํ๊ฒฝ์ ์ด๋ํฉ๋๋ค. ์ฌ๋ฌ ๊ด๋ จ ํ๋ก์ ํธ๋ฅผ ํ ์คํธํ๊ณ ๋น๋ํ๋ ๊ฒ์ ์์ฐจ์ ์ด๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ๋ ์ ์์ต๋๋ค.
๋ชจ๋ ธ๋ ํฌ๋ ์ง๋ฅ์ ์ธ ํด๋ง๊ณผ ๊ฒฐํฉ๋ ๋, ๊ณ ๋๋ก ์ต์ ํ๋ CI/CD ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. Nx ๋๋ Turborepo์ ๊ฐ์ ๋๊ตฌ๋ ๋ชจ๋ ธ๋ ํฌ์ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ๋ถ์ํ์ฌ ํน์ ๋ณ๊ฒฝ์ ์ํด ์ด๋ค ํ๋ก์ ํธ๊ฐ ์ํฅ์ ๋ฐ๋์ง ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด CI/CD ํ์ดํ๋ผ์ธ์ ์ ์ฒด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ค์ ๋น๋ํ๋ ๋์ , ๋ณ๊ฒฝ๋ ํ๋ก์ ํธ์ ๊ทธ ์ง์ ์ ์ธ ์ข ์ ํ๋ก์ ํธ์ ๋ํด์๋ง ํ ์คํธ์ ๋น๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฌํ "์ํฅ์ ๋ฐ์ ๋ถ๋ถ๋ง" ์คํ์ ๋น๋ ์๊ฐ์ ๊ทน์ ์ผ๋ก ๋จ์ถํ๊ณ , ๊ฐ๋ฐ์๋ฅผ ์ํ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๊ฐ์ํํ๋ฉฐ, CI/CD ๋ฆฌ์์ค๋ฅผ ์ ์ฝํฉ๋๋ค. ๋ํ, ๋ชจ๋ ธ๋ ํฌ ๋ด์ ๋ชจ๋ ํ๋ก์ ํธ์ ๋ํ CI/CD ๊ตฌ์ฑ์ ์ค์ ์ง์คํํ๋ ๊ธฐ๋ฅ์ ๋น๋ ํ๋ก์ธ์ค, ํ ์คํธ ํ๊ฒฝ ๋ฐ ๋ฐฐํฌ ์ ๋ต์ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๋ค๋ฅธ ์๊ฐ๋์์ 24/7 ์ด์๋๋ ํ์ฌ์ ๊ฒฝ์ฐ, ๋ ๋น ๋ฅธ CI/CD ์ฃผ๊ธฐ๋ ์ง๋ฆฌ์ ์์น์ ๊ด๊ณ์์ด ์ค์ํ ๋ฒ๊ทธ ์์ ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ ๋น ๋ฅธ ๋ฐฐํฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ์์์, ์ ๋ฝ, ์๋ฉ๋ฆฌ์นด์ ํ๋ค์ด ๊ณต์ ํ์ดํ๋ผ์ธ์ด ๊ทธ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ ํจ์จ์ ์ผ๋ก ๊ฒ์ฆํ ๊ฒ์ด๋ผ๋ ํ์ ์ ๊ฐ์ง๊ณ ์ ์ํ๊ฒ ์ฝ๋๋ฅผ ๋ฐ๋ณตํ๊ณ ๋ฆด๋ฆฌ์คํ ์ ์๋๋ก ํ์ ์ค์ด์ค๋๋ค. ๋ํ ์ด๋ ์ด๋ค ํ์ด๋ ์ง์ญ์ด ๊ฐ๋ฐํ๋์ง์ ๊ด๊ณ์์ด ๋ชจ๋ ์ ํ์ ๊ฑธ์ณ ์ผ๊ด๋ ํ์ง ๊ฒ์ดํธ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
๊ฐ์ ๋ ๊ฐ๋ฐ์ ๊ฒฝํ(DX)
๊ธ์ ์ ์ธ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ต๊ณ ์ ์ธ์ฌ๋ฅผ ์ ์นํ๊ณ ์ ์งํ๋ฉฐ ์์ฐ์ฑ์ ๊ทน๋ํํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๋ชจ๋ ธ๋ ํฌ๋ ํนํ ๋๊ท๋ชจ ์กฐ์ง์์ ํด๋ฆฌ๋ ํฌ์ ๋นํด ์ฐ์ํ DX๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
-
๋ ์ฌ์ด ์จ๋ณด๋ฉ: ํ์ ํฉ๋ฅํ๋ ์ ๊ท ๊ฐ๋ฐ์๋ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ์ฌ ์ ์ฒด ํ๋ก ํธ์๋ ์ํ๊ณ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ํ๊ฑฐ๋, ๋ค์ํ ๋น๋ ์์คํ
์ ์ดํดํ๊ฑฐ๋, ๋ณต์กํ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ์๊ฐ ์์ต๋๋ค. ๋จ์ผ
git clone
๊ณผnpm install
(๋๋ ๋๋ฑํ ๋ช ๋ น์ด)๋ง์ผ๋ก ์์ํ ์ ์์ด ์ ์ ๊ธฐ๊ฐ์ ํฌ๊ฒ ๋จ์ถ์ํต๋๋ค. - ๋จ์ํ๋ ๋ก์ปฌ ๊ฐ๋ฐ: ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ฑฐ๋ ์ฌ๋ฌ ์ฑ์์ ์ฌ์ฉํ๋ ๊ณต์ ์ปดํฌ๋ํธ ์์ ์ ํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํด์ง๋๋ค. ๊ฐ๋ฐ์๋ ๋จ์ผ ๋ช ๋ น์ด๋ก ์ฌ๋ฌ ์๋น์ค๋ฅผ ์์ํ๊ฑฐ๋ ๋ชจ๋ ์๋น์ ์ฑ์ ๋ํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก์ปฌ์์ ํ ์คํธํ ์ ์์ต๋๋ค. ๊ณต์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ ๋ฃจํ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ ๋์ ๋ฐ๊ฒฌ ๊ฐ๋ฅ์ฑ: ๋ชจ๋ ๊ด๋ จ ์ฝ๋๊ฐ ํ ๊ณณ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์์ ๊ธฐ์กด ์ปดํฌ๋ํธ, ํจํด ๋๋ ์ ํธ๋ฆฌํฐ ํจ์๋ฅผ ์ฝ๊ฒ ๊ฒ์ํ ์ ์์ด ์ฌ๋ฐ๋ช ๋ณด๋ค๋ ์ฌ์ฌ์ฉ์ ์ด์งํฉ๋๋ค. ์ด ์ค์ "์ง์ ๋ฒ ์ด์ค"๋ ๊ฐ๋ฐ์ ๊ฐ์ํํ๊ณ ์ ์ฒด ์์คํ ์ํคํ ์ฒ์ ๋ํ ๋ ๊น์ ์ดํด๋ฅผ ๋์ต๋๋ค.
- ์ผ๊ด๋ ํด๋ง: ๋ฆฐํฐ, ํฌ๋งทํฐ, ํ ์คํธ ๋ฌ๋ ๋ฐ TypeScript์ ๋ํ ์ค์ ์ง์ค์ ๊ตฌ์ฑ์ ํตํด ๊ฐ๋ฐ์๋ ๋ก์ปฌ ํ๊ฒฝ ๊ตฌ์ฑ์ ์๊ฐ์ ๋ ์ฐ๊ณ ์ฝ๋ ์์ฑ์ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํฉ๋๋ค. ์ด๋ฌํ ํต์ผ์ฑ์ "๋ด ์ปดํจํฐ์์๋ ์๋ํ๋๋ฐ" ๋ฌธ์ ๋ฅผ ์ค์ด๊ณ , ๊ฐ๋ณ ๊ฐ๋ฐ์์ ์ ํธ๋ ์ง์ญ์ ๋์์ค์ ๊ด๊ณ์์ด ์ ์ฒด ์กฐ์ง์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ๋ณด์ฅํฉ๋๋ค.
์ด ๊ฐ์ํ๋ DX๋ ๋ ๋์ ์ง์ ๋ง์กฑ๋, ๋ ์ ์ ํ๊ฒฝ ์ค์ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก ๋ชจ๋ ๊ธฐ์ฌํ๋ ๊ธ๋ก๋ฒ ํ์ ๊ฑธ์ณ ๋ ํจ์จ์ ์ธ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ก ์ด์ด์ง๋๋ค.
์ค์ ์ง์ค์ ํด๋ง ๋ฐ ๊ตฌ์ฑ
์์ญ ๋๋ ์๋ฐฑ ๊ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ฐ๋ฐ ๋๊ตฌ ๋ฐ ๊ตฌ์ฑ ์ธํธ๋ฅผ ์ ์งํ๋ ๊ฒ์ ์์ฒญ๋ ์์
์
๋๋ค. ๊ฐ๊ฐ์ ์๋ก์ด ํ๋ก์ ํธ๋ ์์ฒด tsconfig.json
, .eslintrc.js
๋๋ webpack.config.js
๋ฅผ ๋์
ํ์ฌ ๊ตฌ์ฑ ํธ์ฐจ, ์ฆ๊ฐ๋ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด ๋ฐ ์ฝ๋ ํ์ง์ด๋ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์ฌ์ ๋ถ์ผ์น๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
๋ชจ๋ ธ๋ ํฌ์์๋ ESLint, Prettier, TypeScript, Jest์ ๊ฐ์ ๋๊ตฌ์ ๋ํ ๋จ์ผ ๋ฃจํธ ์์ค ๊ตฌ์ฑ์ด ๋ชจ๋ ํจํค์ง์ ์ ์ฉ๋ ์ ์์ต๋๋ค. ์ด๋ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ๊ฑธ์ณ ํต์ผ๋ ์ฝ๋ ์คํ์ผ, ์ผ๊ด๋ ๋ฆฐํ ๊ท์น ๋ฐ ํ์คํ๋ ์ปดํ์ผ ์ค์ ์ ๋ณด์ฅํฉ๋๋ค. ์๋ก์ด ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ๋ํ๋๊ฑฐ๋ ๋๊ตฌ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๋, ๋ณ๊ฒฝ ์ฌํญ์ ๋ฃจํธ ์์ค์์ ํ ๋ฒ๋ง ์ ์ฉํ๋ฉด ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ์ฆ์ ํํ์ ๋ฐ์ต๋๋ค. ์ด๋ฌํ ์ค์ ์ง์ค์ ๊ด๋ฆฌ๋ ๊ฐ๋ฐ ์ด์ ํ์ ์ค๋ฒํค๋๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ , ์ ์ธ๊ณ์ ๋ค์ํ ๊ฐ๋ฐํ์ ๋ณด์ ํ ๋๊ท๋ชจ ์กฐ์ง์ ํ์์ ์ธ ๋ชจ๋ ํ๋ก ํธ์๋ ์์ฐ์ ๊ฑธ์ณ ๊ธฐ์ค ์์ค์ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๊ณผ์ ํ์: ๋ชจ๋ ธ๋ ํฌ์ ์ด๋ฉด
๋๊ท๋ชจ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ์ ์ด์ ์ด ๋งค๋ ฅ์ ์ด๊ธด ํ์ง๋ง, ๊ด๋ จ๋ ๊ณผ์ ์ ๋ํ ๋ช ํํ ์ดํด๋ฅผ ๊ฐ์ง๊ณ ๊ทธ ๋์ ์ ์ ๊ทผํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค๋ฅธ ์ํคํ ์ฒ ๊ฒฐ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ธ๋ ํฌ๋ ๋ง๋ณํต์น์ฝ์ด ์๋๋๋ค. ์ ์คํ ๊ณํ, ๊ฒฌ๊ณ ํ ํด๋ง ๋ฐ ๊ท์จ ์๋ ์คํ์ด ํ์ํ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ณต์ก์ฑ์ ๋์ ํฉ๋๋ค.
๊ฐํ๋ฅธ ํ์ต ๊ณก์ ๊ณผ ์ด๊ธฐ ์ค์ ์ ๋ณต์ก์ฑ
ํนํ ๋๊ท๋ชจ ์กฐ์ง์์ ์ฒ์๋ถํฐ ๋ชจ๋ ธ๋ ํฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฑฐ๋ ์๋ก์ด ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ์๋นํ ์ด๊ธฐ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ํ์๋ก ํฉ๋๋ค. ์ํฌ์คํ์ด์ค, ํจํค์ง ์ฐ๊ฒฐ, ํนํ Nx๋ Turborepo์ ๊ฐ์ ๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ์์ ์ฌ์ฉ๋๋ ์ ๊ตํ ์์ ์ค์ผ์คํธ๋ ์ด์ ์์คํ ์ ๊ฐ๋ ์ ์ ํต์ ์ธ ํด๋ฆฌ๋ ํฌ ๊ตฌ์กฐ์ ์ต์ํ ํ์๊ฒ ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ ์ ์ํ ์ ์์ต๋๋ค.
์ด๊ธฐ ๋ชจ๋ ธ๋ ํฌ ๊ตฌ์กฐ๋ฅผ ์ค์ ํ๊ณ , ํจํค์ง ๊ฐ ์์กด์ฑ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ๋น๋ ์์คํ ์ ๊ตฌ์ฑํ๋ฉฐ, ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ํจ๋ฌ๋ค์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ์ ๋ฌธ ์ง์์ด ํ์ํฉ๋๋ค. ํ์ ํ๋ก์ ํธ ๊ฒฝ๊ณ๋ฅผ ์ ์ํ๊ณ , ๊ณต์ ์์ฐ์ ๊ด๋ฆฌํ๋ฉฐ, ๋ชจ๋ ธ๋ ํฌ์ ๊ธฐ๋ฅ์ ํ์ฉํ๋๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ด๋ ์ข ์ข ์ ๋ด ๊ต์ก, ๊ด๋ฒ์ํ ๋ฌธ์ํ, ๊ทธ๋ฆฌ๊ณ ๊ฒฝํ ๋ง์ ์ํคํ ํธ๋ DevOps ์ ๋ฌธ๊ฐ์ ์ฐธ์ฌ๋ฅผ ํ์๋ก ํฉ๋๋ค. ํ์ด ์๋ก์ด ์ํฌํ๋ก์ฐ์ ํด๋ง์ ์ ์ํจ์ ๋ฐ๋ผ ์ด๊ธฐ ๋จ๊ณ๋ ์์๋ณด๋ค ๋๋ฆฌ๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค.
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ ๋ฌธ์
๋ชจ๋ ธ๋ ํฌ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ๊ทธ ์์ฒญ๋ ํฌ๊ธฐ๊ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ์๋ฐฑ ๊ฐ์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๋ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ํฐ ๋ฆฌํฌ์งํ ๋ฆฌ ํฌ๊ธฐ: ์ ์ฒด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ ์๋นํ ๋์คํฌ ๊ณต๊ฐ์ ์๋นํ ์ ์์ต๋๋ค. ํนํ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฌ๊ฑฐ๋ ๋ก์ปฌ ์ ์ฅ ๊ณต๊ฐ์ด ์ ํ๋ ๊ฐ๋ฐ์์๊ฒ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
-
Git ์ฑ๋ฅ:
git clone
,git fetch
,git log
,git blame
๊ณผ ๊ฐ์ Git ์์ ์ ํ์คํ ๋ฆฌ๊ฐ ์ปค์ง๊ณ ํ์ผ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์๋นํ ๋๋ ค์ง ์ ์์ต๋๋ค. ์ต์ Git ๋ฒ์ ๊ณผgit sparse-checkout
๊ณผ ๊ฐ์ ๊ธฐ์ ์ด ์ด๋ฌํ ๋ฌธ์ ์ค ์ผ๋ถ๋ฅผ ์ํํ ์ ์์ง๋ง, ์์ ํ ์ ๊ฑฐํ์ง๋ ๋ชปํฉ๋๋ค. - IDE ์ฑ๋ฅ: ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ(IDE)์ ๋งค์ฐ ํฐ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ธ๋ฑ์ฑํ๊ณ ๋ฐ์์ฑ ์๋ ์๋ ์์ฑ ๋ฐ ํ์์ ์ ๊ณตํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ด ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ๋น๋ ์ฑ๋ฅ: ์ ์ ํ ์ต์ ํ ์์ด๋ ์ ์ฒด ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ๊ณ ํต์ค๋ฌ์ธ ์ ๋๋ก ๋๋ ค์ง ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ด์ ์น์ ์์ ๋ ผ์๋ ๊ฒ์ฒ๋ผ ์ง๋ฅ์ ์ธ ํด๋ง์ด ์ ๋์ ์ผ๋ก ์ค์ํ ์ด์ ์ ๋๋ค. ๊ณ ๊ธ ๋น๋ ์ค์ผ์คํธ๋ ์ด์ ์์ด ๊ธฐ๋ณธ์ ์ธ ํจํค์ง ๊ด๋ฆฌ์ ์ํฌ์คํ์ด์ค์๋ง ์์กดํ๋ฉด ๋น ๋ฅด๊ฒ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๊ท๋ชจ์ ๋ง๊ฒ ์ค๊ณ๋ ๊ณ ๊ธ ๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ๋ฅผ ์ฑํํ๊ณ , ๊ฐ๋ ฅํ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๋ฉฐ, ์ผ๋ฐ์ ์ธ ์ํฌํ๋ก์ฐ์ ์ต์ ํ๋๋๋ก ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ์คํ๊ฒ ๊ตฌ์กฐํํ๋ ๋ฑ ์ ์ ์ ์ธ ์ ๋ต์ด ํ์ํฉ๋๋ค.
์ฝ๋ ์์ ๊ถ ๋ฐ ๊ฒฝ๊ณ ๊ฐ์
๋ชจ๋ ธ๋ ํฌ๋ ํ์ ์ ์ด์งํ์ง๋ง, ์๋์น ์๊ฒ ์ฝ๋ ์์ ๊ถ๊ณผ ์ฑ ์์ ๊ฒฝ๊ณ๋ฅผ ๋ชจํธํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ช ํํ ์ง์นจ๊ณผ ๊ธฐ์ ์ ๊ฐ์ ์์ด๋ ํ์ด ์ค์๋ก ๋ค๋ฅธ ํ์ด ์์ ํ ํจํค์ง๋ฅผ ์์ ํ๊ฑฐ๋ ์์กด์ฑ์ ๋์ ํ์ฌ "๋ฌด๋ฒ์ง๋" ์๋๋ฆฌ์ค๋ ์๋์น ์์ ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ช ์์ ์ธ ๊ฒฝ๊ณ์ ๋ถ์ฌ๋ ํนํ ๋ง์ ์์จ์ ์ธ ์ ํ ํ์ ๊ฐ์ง ๋๊ท๋ชจ ์กฐ์ง์์ ์ฝ๋ ๊ฒํ , ์ฑ ์ ์์ฌ, ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํด๋ ๊ตฌ์กฐ, ์ด๋ฆ ์ง์ ๋ฐ ์์กด์ฑ ์ ์ธ์ ๋ํ ์๊ฒฉํ ๊ท์น์ ์๋ฆฝํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์์กด์ฑ ๊ฒฝ๊ณ๋ฅผ ๊ฐ์ ํ ์ ์๋ ๋๊ตฌ(์: Nx์ ์์กด์ฑ ๊ทธ๋ํ ๋ถ์ ๋ฐ ๋ฆฐํ ๊ท์น)๊ฐ ์ค์ํฉ๋๋ค. ๋ช ํํ ๋ฌธ์ํ, ์ ๊ธฐ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ , ์ ์ ์๋ ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค ๋ํ ์ง์๋ฅผ ์ ์งํ๊ณ ๋ณ๊ฒฝ์ด ์ ์ ํ ํ์ ์ํด ๋๋ ๊ทธ๋ค์ ๋ช ์์ ์ธ ๋์ํ์ ์ด๋ฃจ์ด์ง๋๋ก ๋ณด์ฅํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด๋ ํ์ด ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋์ด ์์ ๋ ๋์ฑ ์ค์ํ๋ฉฐ, ํ์ ๊ดํ์ ๋ํ ๋ฌธํ์ ์ ๋ ฌ์ ์๊ตฌํฉ๋๋ค.
CI/CD ์ต์ ํ ์๊ตฌ
๋ชจ๋ ธ๋ ํฌ์์ ๋ ๋น ๋ฅธ CI/CD๋ฅผ ์ฝ์ํ๋ ๊ฒ์ ์ ์ ์ผ๋ก ์ฆ๋ถ ๋น๋, ์ค๋งํธ ์บ์ฑ, ๋ณ๋ ฌํ์ ํจ๊ณผ์ ์ธ ๊ตฌํ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ํ๊ฐ ์๊ฒฉํ๊ฒ ์ค์ ๋๊ณ ์ ์ง ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด, ๋ชจ๋ ธ๋ ํฌ์ CI/CD ํ์ดํ๋ผ์ธ์ ์์ด๋ฌ๋ํ๊ฒ๋ ํด๋ฆฌ๋ ํฌ ์ค์ ๋ณด๋ค ํจ์ฌ ๋๋ฆฌ๊ณ ์์ ์ง์ฝ์ ์ผ ์ ์์ต๋๋ค. ์ํฅ์ ๋ฐ๋ ํ๋ก์ ํธ๋ฅผ ์๋ณํ๋ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉด ๋ชจ๋ ์ปค๋ฐ์ด ์ ์ฒด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ ์ฒด ๋น๋ ๋ฐ ํ ์คํธ ์ค์ํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ฌ ์์ฒญ๋๊ฒ ๊ธด ๋๊ธฐ ์๊ฐ์ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ํด์๋ CI/CD ์์คํ ๊ตฌ์ฑ์ ์ ๋ ํ๊ณ , ์๊ฒฉ ์บ์ฑ ์๋ฃจ์ ์ ํ์ฉํ๋ฉฐ, ์ ์ฌ์ ์ผ๋ก ๋ถ์ฐ ๋น๋ ์์คํ ์ ํฌ์ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ค์ ์ ๋ณต์ก์ฑ์ ์๋นํ ์ ์์ผ๋ฉฐ, ์ด๋ ํ ์๋ชป๋ ๊ตฌ์ฑ๋ ์ด์ ์ ๋ฌดํจํํ์ฌ ๊ฐ๋ฐ์์ ์ข์ ๊ณผ ๋ชจ๋ ธ๋ ํฌ ์ ๋ต์ ์คํจ ์ธ์์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ด๋ ํ๋ก ํธ์๋ ์์ง๋์ด์ DevOps/ํ๋ซํผ ์์ง๋์ด๋ง ํ ๊ฐ์ ๊ฐ๋ ฅํ ํ์ ์ ์๊ตฌํฉ๋๋ค.
ํด๋ง ์ข ์์ฑ ๋ฐ ์งํ
๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ฑํํ๋ ๊ฒ์ ์ข ์ข ํน์ ๋๊ตฌ ๋ฐ ํ๋ ์์ํฌ ์ธํธ(์: Nx, Turborepo)์ ์ ๋ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ์์ฒญ๋ ๊ฐ์น๋ฅผ ์ ๊ณตํ์ง๋ง, ์ด๋ ์ ๋์ ๊ณต๊ธ์ ์ฒด ๋๋ ์ํ๊ณ ์ข ์์ฑ์ ๋์ ํ๊ธฐ๋ ํฉ๋๋ค. ์กฐ์ง์ ์ด๋ฌํ ๋๊ตฌ์ ์ง์์ ์ธ ๊ฐ๋ฐ, ์ ์ง ๊ด๋ฆฌ ๋ฐ ์ปค๋ฎค๋ํฐ ์ง์์ ์์กดํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ค์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๋ผ๊ฐ๊ณ , ๋ธ๋ ์ดํน ์ฒด์ธ์ง๋ฅผ ์ดํดํ๋ฉฐ, ๋๊ตฌ์ ์งํ์ ๋ง์ถฐ ๋ด๋ถ ์ํฌํ๋ก์ฐ๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ ์ง์์ ์ธ ๊ณผ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
๋ํ, ๋ชจ๋ ธ๋ ํฌ ํจ๋ฌ๋ค์์ ์ฑ์ํ์ง๋ง ํด๋ง ์ํ๊ณ๋ ์ฌ์ ํ ๋น ๋ฅด๊ฒ ์งํํ๊ณ ์์ต๋๋ค. ์ค๋๋ ๋ชจ๋ฒ ์ฌ๋ก๋ก ๊ฐ์ฃผ๋๋ ๊ฒ์ด ๋ด์ผ์ ๋์ฒด๋ ์ ์์ต๋๋ค. ํ์ ํ๊ฒฝ ๋ณํ์ ๋ฐ๋ผ ๋ฏผ์ฒฉํ๊ฒ ์ ๋ต๊ณผ ๋๊ตฌ๋ฅผ ์กฐ์ ํ ์์ง๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ชจ๋ ธ๋ ํฌ ํด๋ง ๋ถ์ผ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ ๊ทธ๋ ์ด๋๋ ์ ๊ทผ ๋ฐฉ์์ ๋ณํ๋ฅผ ์ ์ ์ ์ผ๋ก ๊ณํํ ์ ๋ด ๋ฆฌ์์ค๊ฐ ํ์ํฉ๋๋ค.
ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ํ ํ์ ๋๊ตฌ ๋ฐ ๊ธฐ์
๋๊ท๋ชจ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ์ ์ฑ๊ณต์ ๋จ์ํ ์ํคํ ์ฒ ํจํด์ ์ฑํํ๋ ๊ฒ์ ๊ทธ์น์ง ์๊ณ , ์ฌ๋ฐ๋ฅธ ๋๊ตฌ ์ธํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๊ฒ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๋ณต์กํ ์์ ์ ์๋ํํ๊ณ , ์ฑ๋ฅ์ ์ต์ ํํ๋ฉฐ, ์ผ๊ด์ฑ์ ๊ฐ์ ํ์ฌ ์ ์ฌ์ ์ธ ํผ๋์ ๊ฐ์ํ๋ ๊ฐ๋ฐ ๊ฐ๊ตญ์ผ๋ก ๋ณํ์ํต๋๋ค.
์ํฌ์คํ์ด์ค ๊ด๋ฆฌ์
๋ชจ๋ JavaScript/TypeScript ๋ชจ๋ ธ๋ ํฌ์ ๊ธฐ์ด ๊ณ์ธต์ ํ๋์ ์ธ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ ๊ณตํ๋ ์ํฌ์คํ์ด์ค ๊ด๋ฆฌ์์ ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์ ์ฌ๋ฌ ํจํค์ง๋ฅผ ์งํฉ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์์กด์ฑ์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ก์ปฌ ํจํค์ง๋ฅผ ์ฐ๊ฒฐํ ์ ์๊ฒ ํฉ๋๋ค.
-
Yarn Workspaces: Yarn์ ์ํด ๋์
๋ ์ด ๊ธฐ๋ฅ์ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ด์์ ์ฌ๋ฌ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ํฉ๋๋ค. ์ํธ ์์กด์ ์ธ ํจํค์ง๋ฅผ ์๋์ผ๋ก ์ฐ๊ฒฐํ๊ณ ๊ณตํต ์์กด์ฑ์ ๋ฃจํธ
node_modules
๋๋ ํ ๋ฆฌ๋ก ํธ์ด์คํ ํ์ฌ ์ค๋ณต๊ณผ ์ค์น ์๊ฐ์ ์ค์ ๋๋ค. ๋๋ฆฌ ์ฑํ๋์ด ๋ง์ ๋ชจ๋ ธ๋ ํฌ ์ค์ ์ ๊ธฐ๋ฐ์ ํ์ฑํฉ๋๋ค. - npm Workspaces: npm๋ ๋ฒ์ 7๋ถํฐ ๋ค์ดํฐ๋ธ ์ํฌ์คํ์ด์ค ์ง์์ ์ ๊ณตํ๋ฉฐ, Yarn Workspaces์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ด๋ฏธ npm์ ์ต์ํ ํ์ด ์๋ก์ด ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฑํํ ํ์ ์์ด ๋ชจ๋ ธ๋ ํฌ ์ค์ ์ผ๋ก ๋ ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
-
pnpm Workspaces: pnpm์ ํ๋ ๋งํฌ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ํจ์จ์ ์ด๊ณ ์ค๋ณต์ด ์ ๊ฑฐ๋ ์๊ฒฉํ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ์์ฑํ๋ ๋
ํนํ
node_modules
๊ด๋ฆฌ ๋ฐฉ์์ผ๋ก ์ฐจ๋ณํ๋ฉ๋๋ค. ์ด๋ ์๋นํ ๋์คํฌ ๊ณต๊ฐ ์ ์ฝ๊ณผ ๋ ๋น ๋ฅธ ์ค์น ์๊ฐ์ผ๋ก ์ด์ด์ ธ, ์ฑ๋ฅ์ด ๊ฐ์ฅ ์ค์ํ ๋งค์ฐ ํฐ ๋ชจ๋ ธ๋ ํฌ์ ๋งค๋ ฅ์ ์ธ ์ ํ์ด ๋ฉ๋๋ค. ๋ํ ํ๋ก์ ํธ๊ฐpackage.json
์ ๋ช ์์ ์ผ๋ก ์ ์ธ๋์ง ์์ ํจํค์ง์ ์๋ฌต์ ์ผ๋ก ์์กดํ๋ "์ ๋ น ์์กด์ฑ"์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ์ํฌ์คํ์ด์ค ๊ด๋ฆฌ์๋ฅผ ์ ํํ๋ ๊ฒ์ ์ข ์ข ๊ธฐ์กด ํ์ ์น์๋, ํน์ ์ฑ๋ฅ ์๊ตฌ ์ฌํญ, ๊ทธ๋ฆฌ๊ณ ์์กด์ฑ ์ ์ธ์ ์ผ๋ง๋ ์๊ฒฉํ๊ฒ ๊ฐ์ ํด์ผ ํ๋์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๋ชจ๋ ธ๋ ํฌ ์ค์ผ์คํธ๋ ์ดํฐ
์ํฌ์คํ์ด์ค ๊ด๋ฆฌ์๋ ๊ธฐ๋ณธ์ ์ธ ํจํค์ง ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ์ง๋ง, ์ง์ ํ ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ ํจ์จ์ฑ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ์ดํดํ๊ณ , ์ค๋งํธํ ์์ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ๊ฒฌ๊ณ ํ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ ์ ์ฉ ์ค์ผ์คํธ๋ ์ด์ ๋๊ตฌ์์ ๋์ต๋๋ค.
-
Nx (by Nrwl): Nx๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ, ํนํ Angular, React, Next.js ์ ํ๋ฆฌ์ผ์ด์
์ ์ํด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ฅ ํฌ๊ด์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ชจ๋
ธ๋ ํฌ ํดํท ์ค ํ๋์ด๋ฉฐ, ๋ค๋ฅธ ๋ง์ ๊ฒ๋ค๋ก ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ ํต์ฌ ๊ฐ์ ์ ์ ๊ตํ ์์กด์ฑ ๊ทธ๋ํ ๋ถ์์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ํ๋ก์ ํธ๋ค์ด ์๋ก ์ด๋ป๊ฒ ๊ด๋ จ๋์ด ์๋์ง ์ดํดํ ์ ์์ต๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ํฅ๋ฐ์ ๋ช ๋ น์ด(Affected Commands): Nx๋ ์ฝ๋ ๋ณ๊ฒฝ์ ์ํด ์ด๋ค ํ๋ก์ ํธ๊ฐ "์ํฅ์ ๋ฐ์๋์ง" ์ง๋ฅ์ ์ผ๋ก ํ๋จํ์ฌ, ํด๋น ํ๋ก์ ํธ์ ๋ํด์๋ง ํ ์คํธ, ๋น๋ ๋๋ ๋ฆฐํ ์ ์คํํ์ฌ CI/CD๋ฅผ ๊ทน์ ์ผ๋ก ๊ฐ์ํํ ์ ์์ต๋๋ค.
- ๊ณ์ฐ ์บ์ฑ(Computation Caching): Nx๋ ๋น๋ ๋ฐ ํ ์คํธ์ ๊ฐ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ก์ปฌ ๋ฐ ์๊ฒฉ์ผ๋ก ์บ์ํฉ๋๋ค. ๋์ผํ ์ ๋ ฅ์ผ๋ก ์์ ์ด ์ด์ ์ ์คํ๋ ๊ฒฝ์ฐ, Nx๋ ์์ ์ ๋ค์ ์คํํ๋ ๋์ ์บ์๋ ์ถ๋ ฅ์ ๊ฒ์ํ์ฌ ์๋นํ ์๊ฐ์ ์ ์ฝํฉ๋๋ค. ์ด๋ ๋๊ท๋ชจ ํ์๊ฒ ๊ฒ์ ์ฒด์ธ์ ์ ๋๋ค.
- ์ฝ๋ ์์ฑ๊ธฐ(Code Generators): Nx๋ ์๋ก์ด ํ๋ก์ ํธ, ์ปดํฌ๋ํธ ๋๋ ์ ์ฒด ๊ธฐ๋ฅ์ ์ค์บํด๋ฉํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ์คํค๋งคํฑ/์์ฑ๊ธฐ๋ฅผ ์ ๊ณตํ์ฌ ๋ชจ๋ ธ๋ ํฌ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด์ฑ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก ์ค์๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์์กด์ฑ ๊ทธ๋ํ ์๊ฐํ(Dependency Graph Visualization): Nx๋ ๋ชจ๋ ธ๋ ํฌ์ ํ๋ก์ ํธ ์์กด์ฑ์ ์๊ฐ์ ์ผ๋ก ํํํ์ฌ ์ํคํ ์ฒ๋ฅผ ์ดํดํ๊ณ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
- ๊ฐ์ ๊ฐ๋ฅํ ํ๋ก์ ํธ ๊ฒฝ๊ณ(Enforceable Project Boundaries): ๋ฆฐํ ๊ท์น์ ํตํด Nx๋ ํ๋ก์ ํธ๊ฐ ํ๊ฐ๋์ง ์์ ์์ญ์์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์ํคํ ์ฒ ๋ฌด๊ฒฐ์ฑ๊ณผ ๋ช ํํ ์์ ๊ถ์ ์ ์งํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
- ๊ฐ๋ฐ ์๋ฒ ์ง์(Dev-Server Support): ๋ก์ปฌ ๊ฐ๋ฐ์ ์ํด ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์์ ์คํํ๋ ๊ฒ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
Nx๋ ํนํ ๋ณต์กํ๊ณ ์ํธ ์ฐ๊ฒฐ๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ง ์กฐ์ง์ ์ ํฉํ๋ฉฐ, ๊ธ๋ก๋ฒ ๊ฐ๋ฐ ํ ์ ๋ฐ์ ๊ฑธ์ณ ํ์ฅ ๋ฐ ์ผ๊ด์ฑ์ ์ํ ๊ฒฌ๊ณ ํ ํด๋ง์ด ํ์ํฉ๋๋ค.
-
Turborepo (by Vercel): Turborepo๋ Vercel์ ์ํด ์ธ์๋, JavaScript ๋ฐ TypeScript ๋ชจ๋
ธ๋ ํฌ๋ฅผ ์ํด ์ค๊ณ๋ ๋ ๋ค๋ฅธ ๊ฐ๋ ฅํ ๋น๋ ์์คํ
์
๋๋ค. ์ฃผ์ ์ด์ ์ ๊ณต๊ฒฉ์ ์ด๋ฉด์๋ ์ค๋งํธํ ์บ์ฑ ์ ๋ต๊ณผ ๋ณ๋ ฌ ์คํ์ ํตํด ๋น๋ ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ๊ฒ์
๋๋ค. ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฆ๋ถ ๋น๋(Incremental Builds): Turborepo๋ ํ์ํ ๊ฒ๋ง ๋ค์ ๋น๋ํ๋ฉฐ, ์ฝํ ์ธ ์ฃผ์ ์ง์ ์บ์ฑ์ ํ์ฉํ์ฌ ์ ๋ ฅ์ด ๋ณ๊ฒฝ๋์ง ์์ ์์ ์ ์ฌ์คํ์ ํผํฉ๋๋ค.
- ์๊ฒฉ ์บ์ฑ(Remote Caching): Nx์ ์ ์ฌํ๊ฒ, Turborepo๋ ์๊ฒฉ ์บ์ฑ์ ์ง์ํ์ฌ CI/CD ์์คํ ๊ณผ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋น๋ ์ํฐํฉํธ๋ฅผ ๊ณต์ ํ์ฌ ์ค๋ณต ๊ณ์ฐ์ ์ ๊ฑฐํ ์ ์๊ฒ ํฉ๋๋ค.
- ๋ณ๋ ฌ ์คํ(Parallel Execution): ์์ ์ ๊ฐ๋ฅํ ๋๋ง๋ค ํ๋ก์ ํธ ๊ฐ์ ๋ณ๋ ฌ๋ก ์คํ๋์ด, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ CPU ์ฝ์ด๋ฅผ ํ์ฉํ์ฌ ๋น๋๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ์ต์ํ์ ๊ตฌ์ฑ(Minimal Configuration): Turborepo๋ ์๋นํ ์ฑ๋ฅ ํฅ์์ ๋ฌ์ฑํ๊ธฐ ์ํด ์ต์ํ์ ๊ตฌ์ฑ๋ง ํ์ํ๋ค๋ ์ ์ ์๋์ผ๋ก ์ฌ๊ธฐ๋ฉฐ, ๋ง์ ํ์ด ๋ ์ฝ๊ฒ ์ฑํํ ์ ์๋๋ก ํฉ๋๋ค.
Turborepo๋ ํนํ Next.js ๋ฐ Vercel ์ํ๊ณ ๋ด์์ ๊ทน๋จ์ ์ธ ๋น๋ ์ฑ๋ฅ๊ณผ ์ฌ์ด ์ค์ ์ ์ฐ์ ์ํ๋ ํ์๊ฒ ํ๋ฅญํ ์ ํ์ด์ง๋ง, ๊ด๋ฒ์ํ๊ฒ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- Lerna: Lerna๋ JavaScript๋ฅผ ์ํ ์ ๊ตฌ์ ์ธ ๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ ์ค ํ๋์์ต๋๋ค. ์ญ์ฌ์ ์ผ๋ก, ๋ค์ค ํจํค์ง ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ณ npm์ ํจํค์ง๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ๋จ์ํํ๋ ๋ฐ ์ค์ ์ ๋์์ต๋๋ค. ์ฌ์ ํ ์ ์ง ๊ด๋ฆฌ๋๊ณ ์์ง๋ง, ๊ทธ ์ญํ ์ ๋ค์ ๋ฐ๋์์ต๋๋ค. ๋ง์ ํ์ด ์ด์ Lerna๋ฅผ ์ฃผ๋ก ํจํค์ง ๊ฒ์์ ์ฌ์ฉํ๊ณ , ๋น๋ ์ค์ผ์คํธ๋ ์ด์ ๋ฐ ์บ์ฑ์๋ Nx๋ Turborepo์ ๊ฐ์ ๋ ํ๋์ ์ธ ๋๊ตฌ๋ฅผ Lerna์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. ๋จ์ผ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฒ๋ณด๋ค ๋ ๋ฆฝ์ ์ผ๋ก ๋ฒ์ ์ด ๊ด๋ฆฌ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปฌ๋ ์ ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋ ๊ฐ๊น์ต๋๋ค.
- Rush (by Microsoft): Rush๋ Microsoft๊ฐ ๊ฐ๋ฐํ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ชจ๋ ธ๋ ํฌ ๊ด๋ฆฌ์์ ๋๋ค. ๊ทน๋๋ก ํฐ ์กฐ์ง๊ณผ ๋ณต์กํ ๋น๋ ์๋๋ฆฌ์ค๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ, ๊ฒฐ์ ๋ก ์ ๋น๋ ์บ์, ์ฌ์ฉ์ ์ ์ ๋์์ ์ํ ํ๋ฌ๊ทธ์ธ, ํด๋ผ์ฐ๋ ๋น๋ ์์คํ ๊ณผ์ ๊น์ ํตํฉ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Rush๋ ์๊ฒฉํ ํจํค์ง ๊ด๋ฆฌ ์ ์ฑ ์ ๊ฐ์ ํ๊ณ ์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์์ ์ ๋ขฐ์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋ชฉํ๋ก ํฉ๋๋ค. ๊ฐ๋ ฅํ์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก Nx๋ Turborepo๋ณด๋ค ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ ๊ฐ์ง๋ฉฐ, ๊ฐ์ฅ ๊น๋ค๋ก์ด ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ๊ณ ๋ ค๋ฉ๋๋ค.
ํ ์คํ ํ๋ ์์ํฌ
๊ฒฌ๊ณ ํ ํ ์คํธ๋ ๋ชจ๋ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์ ๊ฐ์ฅ ์ค์ํ๋ฉฐ, ๋ชจ๋ ธ๋ ํฌ๋ ์์ธ๋ ์๋๋๋ค. ์ผ๋ฐ์ ์ธ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Jest: Facebook์ด ๋ง๋ ์ธ๊ธฐ ์๊ณ ๋๋ฆฌ ์ฑํ๋ JavaScript ํ ์คํธ ํ๋ ์์ํฌ์ธ Jest๋ ๋ชจ๋ ธ๋ ํฌ ๋ด์ ์ฌ๋ฌ ํจํค์ง์ ๊ฑธ์ณ ๋จ์ ๋ฐ ํตํฉ ํ ์คํธ์ ํ์ํฉ๋๋ค. ์ค๋ ์ท ํ ์คํธ ๊ธฐ๋ฅ์ UI ์ปดํฌ๋ํธ์ ํนํ ์ ์ฉํฉ๋๋ค.
- React Testing Library / Vue Test Utils / Angular Testing Library: ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ตฌํ ์ธ๋ถ ์ฌํญ๋ณด๋ค๋ ๋์์ ์ด์ ์ ๋ง์ถฐ ์ฌ์ฉ์ ๊ด์ ์์ ์ปดํฌ๋ํธ๋ฅผ ํ ์คํธํ๋๋ก ๊ถ์ฅํฉ๋๋ค. Jest์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
- Cypress: ์ข ๋จ ๊ฐ(E2E) ํ ์คํธ๋ฅผ ์ํด Cypress๋ ๋น ๋ฅด๊ณ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ ๊ฐ๋ฐ์ ์นํ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ธ๋ ํฌ ๋ด์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ๋๋ก ๊ตฌ์ฑํ์ฌ ์ ์ฒด ์์คํ ๊ธฐ๋ฅ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- Playwright: Microsoft์ Playwright๋ ๋ ๋ค๋ฅธ ๊ฐ๋ ฅํ E2E ํ ์คํธ ํ๋ ์์ํฌ๋ก, ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ์ง์๊ณผ ๋ณต์กํ ์ํธ ์์ฉ์ ์ํ ํ๋ถํ API๋ฅผ ์ ๊ณตํ์ฌ ๋ชจ๋ ธ๋ ํฌ ๋ด์ ๋ค์ค ์ ํ๋ฆฌ์ผ์ด์ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฒ์ฆํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
Nx์ ๊ฐ์ ๋ชจ๋ ธ๋ ํฌ ์ค์ผ์คํธ๋ ์ดํฐ๋ ์ด๋ฌํ ํ๋ ์์ํฌ์ ํตํฉํ์ฌ ์ํฅ์ ๋ฐ๋ ํ๋ก์ ํธ์ ๋ํด์๋ง ํ ์คํธ๋ฅผ ์คํํ์ฌ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๋์ฑ ๊ฐ์ํํ ์ ์์ต๋๋ค.
๋ฆฐํฐ & ํฌ๋งทํฐ
์ฝ๋ ์คํ์ผ๊ณผ ํ์ง์ ์ผ๊ด์ฑ์ ๋๊ท๋ชจ ํ, ํนํ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์๊ฒ ์ค์ํฉ๋๋ค. ๋ชจ๋ ธ๋ ํฌ ๋ด์์ ๋ฆฐํ ๋ฐ ํฌ๋งทํ ๊ท์น์ ์ค์ ์ง์คํํ๋ฉด ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ๋์ผํ ํ์ค์ ์ค์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ESLint: JavaScript ๋ฐ TypeScript ์ฝ๋์์ ๋ฐ๊ฒฌ๋๋ ํจํด์ ์๋ณํ๊ณ ๋ณด๊ณ ํ๋ ์ฌ์ค์์ ํ์ค์ ๋๋ค. ๋จ์ผ ๋ฃจํธ ESLint ๊ตฌ์ฑ์ ๋ชจ๋ ธ๋ ํฌ ๋ด์ ํน์ ํ๋ก์ ํธ์ ๋ํด ํ์ฅ ๋ฐ ์ฌ์ฉ์ ์ ์๋ ์ ์์ต๋๋ค.
- Prettier: ์ฝ๋๋ฅผ ํ์ฑํ๊ณ ์์ฒด ๊ท์น์ผ๋ก ๋ค์ ์ถ๋ ฅํ์ฌ ์ผ๊ด๋ ์คํ์ผ์ ๊ฐ์ ํ๋ ๋ ๋จ์ ์ธ ์ฝ๋ ํฌ๋งทํฐ์ ๋๋ค. Prettier๋ฅผ ESLint์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ต์ํ์ ๊ฐ๋ฐ์ ๊ฐ์ ์ผ๋ก ๋์ ์์ค์ ์ฝ๋ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
TypeScript
๋ชจ๋ ๋๊ท๋ชจ JavaScript ํ๋ก์ ํธ์์ TypeScript๋ ๋ ์ด์ ๊ถ์ฅ ์ฌํญ์ด ์๋๋ผ ๊ฑฐ์ ํ์ ์ฌํญ์ ๋๋ค. ์ ์ ํ์ดํ ๊ธฐ๋ฅ์ ์ฝ๋ ํ์ง, ์ ์ง ๊ด๋ฆฌ์ฑ ๋ฐ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๋ฉฐ, ํนํ ๋ณต์กํ ํจํค์ง ๊ฐ ์์กด์ฑ์ด ์ผ๋ฐ์ ์ธ ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ์์ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
๋ชจ๋
ธ๋ ํฌ์ TypeScript๋ ๋ด๋ถ ํจํค์ง์ ํ์
-์ธ์ดํ ์๋น๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธํฐํ์ด์ค๊ฐ ๋ณ๊ฒฝ๋๋ฉด TypeScript๋ ๋ชจ๋ ์๋น ํ๋ก์ ํธ์์ ์ฆ์ ์ค๋ฅ๋ฅผ ํ์ํ์ฌ ๋ฐํ์ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ๋ฃจํธ tsconfig.json
์ ๊ธฐ๋ณธ ์ปดํ์ผ ์ต์
์ ์ ์ํ ์ ์์ผ๋ฉฐ, ํ๋ก์ ํธ๋ณ tsconfig.json
ํ์ผ์ ํ์์ ๋ฐ๋ผ ํ์ฅํ๊ฑฐ๋ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ค์ ์ ์คํ๊ฒ ์ ํํ๊ณ ํตํฉํจ์ผ๋ก์จ, ์กฐ์ง์ ๊ธ๋ก๋ฒ ๊ฐ๋ฐ ํ์ ํ์ ์ค์ด์ฃผ๋ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ฑ๊ณต์ ์ธ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ ๋์ ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๋๊ท๋ชจ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ๋์ ํ๋ ๊ฒ์ ๋จ์ํ ๊ธฐ์ ์ ๊ตฌํ ์ด์์ ๊ฒ์ ์๊ตฌํ๋ ์ค์ํ ์์ ์ ๋๋ค. ์ด๋ ์ ๋ต์ ๊ณํ, ๋ฌธํ์ ์ ์ ๋ฐ ์ง์์ ์ธ ์ต์ ํ๋ฅผ ํ์๋ก ํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก๋ ์ด ๊ฐ๋ ฅํ ์ํคํ ์ฒ ํจํด์ ์ด์ ์ ๊ทน๋ํํ๊ณ ๊ณผ์ ๋ฅผ ์ํํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
์๊ฒ ์์ํ๊ณ , ํฌ๊ฒ ๋ฐ๋ณตํ๋ผ
๋ชจ๋ ธ๋ ํฌ ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ณ ๋ คํ๋ ์กฐ์ง์๊ฒ "๋น ๋ฑ " ๋ฐฉ์์ ๊ฑฐ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ๋์ , ์ ์ง์ ์ธ ์ ๋ต์ ์ฑํํ์ญ์์ค:
- ํ์ผ๋ฟ ํ๋ก์ ํธ: ์๊ณ ์ค์ํ์ง ์์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋ก ์์ฑ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ ธ๋ ํฌ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ผ๋ก ์์ํ์ญ์์ค. ์ด๋ฅผ ํตํด ํ์ ๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌํ ๊ฐ๋ฐ์ ๋ฐฉํดํ์ง ์์ผ๋ฉด์ ์๋ก์ด ๋๊ตฌ์ ์ํฌํ๋ก์ฐ์ ๋ํ ์ค์ ๊ฒฝํ์ ์ป์ ์ ์์ต๋๋ค.
- ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ : ํ์ผ๋ฟ์ด ์ฑ๊ณตํ๋ฉด ์ ์ง์ ์ผ๋ก ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง์ด๊ทธ๋ ์ด์ ํฉ๋๋ค. ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋์์ธ ์์คํ , ๊ทธ๋ฆฌ๊ณ ์ํธ ์์กด์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ์ ์์๋ก ์ ํ์ญ์์ค. ์๋ก์ด ๊ธฐ๋ฅ์ ๋ชจ๋ ธ๋ ํฌ์์ ๊ตฌ์ถํ๊ณ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์ ์ฐจ์ ์ผ๋ก ์ฎ๊ฒจ์ค๋ "์คํธ๋ญ๊ธ๋ฌ ํผ๊ทธ" ํจํด์ด ํจ๊ณผ์ ์ผ ์ ์์ต๋๋ค.
- ํผ๋๋ฐฑ ๋ฃจํ: ๊ฐ๋ฐ์๋ก๋ถํฐ ์ง์์ ์ผ๋ก ํผ๋๋ฐฑ์ ์์งํ๊ณ ์ค์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ ธ๋ ํฌ ์ ๋ต, ํด๋ง ๋ฐ ๋ฌธ์๋ฅผ ์กฐ์ ํ์ญ์์ค.
์ด ๋จ๊ณ์ ์ ๊ทผ ๋ฐฉ์์ ์ํ์ ์ต์ํํ๊ณ , ๋ด๋ถ ์ ๋ฌธ์ฑ์ ๊ตฌ์ถํ๋ฉฐ, ๋ชจ๋ ธ๋ ํฌ ์ค์ ์ ๋ํ ๋ฐ๋ณต์ ์ธ ๊ฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ช ํํ ๊ฒฝ๊ณ์ ์์ ๊ถ ์ ์
๋ชจ๋ ธ๋ ํฌ์ ์ ์ฌ์ ์ธ ํจ์ ์ค ํ๋๋ ํ๋ก์ ํธ ๊ฒฝ๊ณ๊ฐ ๋ชจํธํด์ง๋ ๊ฒ์ ๋๋ค. ์ด "๋ชจ๋๋ฆฌ์ค" ์ํฐํจํด์ ๋ฐฉ์งํ๋ ค๋ฉด:
-
์๊ฒฉํ ํด๋ ๊ตฌ์กฐ: ๋ชจ๋
ธ๋ ํฌ ๋ด์์ ํ๋ก์ ํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง์ ๋ํ ๋ช
ํํ ๊ท์น์ ์๋ฆฝํ์ญ์์ค(์: ์ ํ๋ฆฌ์ผ์ด์
์
apps/
, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋libs/
). -
CODEOWNERS ํ์ผ: GitHub, GitLab, Bitbucket๊ณผ ๊ฐ์ Git ํ๋ซํผ์์ ์ง์ํ๋
CODEOWNERS
ํ์ผ์ ํ์ฉํ์ฌ ํน์ ๋๋ ํ ๋ฆฌ๋ ํจํค์ง๋ฅผ ์์ ํ๋ ํ์ด๋ ๊ฐ์ธ์ ๋ช ์์ ์ผ๋ก ์ ์ํ์ญ์์ค. ์ด๋ฅผ ํตํด ํน์ ์์ญ์ ์ํฅ์ ๋ฏธ์น๋ ํ ๋ฆฌํ์คํธ๋ ์ง์ ๋ ์์ ์์ ๊ฒํ ๋ฅผ ์๊ตฌํ๊ฒ ๋ฉ๋๋ค. - ์์กด์ฑ ์ ์ฝ์ ์ํ ๋ฆฐํ ๊ท์น: ๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ(์: Nx์ ์์กด์ฑ ์ ์ฝ)๋ฅผ ํ์ฉํ์ฌ ์ํคํ ์ฒ ๊ฒฝ๊ณ๋ฅผ ๊ฐ์ ํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ฅผ ์ง์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ฐฉ์งํ๊ฑฐ๋, ๊ณต์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํน์ ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ ํต์ฌ ์ ํธ๋ฆฌํฐ์๋ง ์์กดํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
-
๋ช
ํํ
package.json
์ ์: ๋ชจ๋ ธ๋ ํฌ ๋ด์ ๊ฐ ํจํค์ง๋ ๋ด๋ถ ํจํค์ง์ผ์ง๋ผ๋ ์์กด์ฑ๊ณผ ์คํฌ๋ฆฝํธ๋ฅผ ์ ํํ๊ฒ ์ ์ธํ๋ ์ ์ ์๋package.json
์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
์ด๋ฌํ ์กฐ์น๋ ์ฝ๋๊ฐ ๋จ์ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋๋ผ๋ ๋ ผ๋ฆฌ์ ๋ถ๋ฆฌ์ ์์ ๊ถ์ด ์ ์ง๋๋๋ก ํ์ฌ, ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์ ๊ฑธ์ณ ์ฑ ์๊ฐ์ ํค์ฐ๊ณ ์๋์น ์์ ๋ถ์์ฉ์ ๋ฐฉ์งํฉ๋๋ค.
ํด๋ง๊ณผ ์๋ํ์ ์ง์ค ํฌ์
์๋ ํ๋ก์ธ์ค๋ ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ ํจ์จ์ฑ์ ์ ์ ๋๋ค. ์๋ํ๊ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค:
- ์ค์ผ์คํธ๋ ์ดํฐ ํ์ฉ: ์์ ์คํ, ๊ณ์ฐ ์บ์ฑ ๋ฐ ์ํฅ๋ฐ์ ๋ช ๋ น์ด๋ฅผ ์ํด Nx๋ Turborepo์ ๊ฐ์ ๋ชจ๋ ธ๋ ํฌ ์ค์ผ์คํธ๋ ์ดํฐ์ ๊ธฐ๋ฅ์ ์ต๋ํ ํ์ฉํ์ญ์์ค. CI/CD ์์ด์ ํธ์ ๊ฐ๋ฐ์ ๋จธ์ ๊ฐ์ ๋น๋ ์ํฐํฉํธ๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ์๊ฒฉ ์บ์ฑ์ ๊ตฌ์ฑํ์ญ์์ค.
- ์ฝ๋ ์์ฑ: ์๋ก์ด ์ปดํฌ๋ํธ, ๊ธฐ๋ฅ ๋๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ ๊ณตํต ํจํด์ ์ํด ์ฌ์ฉ์ ์ ์ ์ฝ๋ ์์ฑ๊ธฐ(์: Nx ์์ฑ๊ธฐ ๋๋ Hygen ์ฌ์ฉ)๋ฅผ ๊ตฌํํ์ญ์์ค. ์ด๋ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ , ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ฅผ ์ค์ด๋ฉฐ, ๊ฐ๋ฐ์ ๊ฐ์ํํฉ๋๋ค.
- ์๋ํ๋ ์์กด์ฑ ์ ๋ฐ์ดํธ: Renovate๋ Dependabot๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ธ๋ ํฌ์ ๋ชจ๋ ํจํค์ง์ ๊ฑธ์ณ ์ธ๋ถ ์์กด์ฑ์ ์๋์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ ๋ฐ์ดํธํ์ญ์์ค. ์ด๋ ์์กด์ฑ์ ์ต์ ์ํ๋ก ์์ ํ๊ฒ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ปค๋ฐ ์ ํ (Pre-commit Hooks): Git ํ (์: Husky์ lint-staged ์ฌ์ฉ)์ ๊ตฌํํ์ฌ ์ปค๋ฐ์ด ํ์ฉ๋๊ธฐ ์ ์ ์คํ ์ด์ง๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๋ฆฐํฐ์ ํฌ๋งทํฐ๋ฅผ ์๋์ผ๋ก ์คํํ์ญ์์ค. ์ด๋ ์ฝ๋ ํ์ง๊ณผ ์คํ์ผ์ ์ผ๊ด๋๊ฒ ๊ฐ์ ํฉ๋๋ค.
๊ฒฌ๊ณ ํ ํด๋ง๊ณผ ์๋ํ์ ๋ํ ์ด๊ธฐ ํฌ์๋ ๋ชจ๋ ธ๋ ํฌ๊ฐ ํ์ฅ๋จ์ ๋ฐ๋ผ ์ฅ๊ธฐ์ ์ธ ๊ฐ๋ฐ์ ์์ฐ์ฑ๊ณผ ์ฝ๋ ํ์ง์์ ๋ฐฐ๋น๊ธ์ ์ง๋ถํฉ๋๋ค.
๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ํ CI/CD ์ต์ ํ
๋ชจ๋ ธ๋ ํฌ์ ์ฑ๊ณต์ ์ข ์ข CI/CD ํ์ดํ๋ผ์ธ์ ํจ์จ์ฑ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ํ์ ์ง์คํ์ญ์์ค:
- ์ฆ๋ถ ๋น๋ ๋ฐ ํ ์คํธ: CI/CD ์์คํ ์ ๊ตฌ์ฑํ์ฌ ๋ชจ๋ ธ๋ ํฌ ๋๊ตฌ์ "์ํฅ๋ฐ์" ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ญ์์ค. ๋ณ๊ฒฝ๋์๊ฑฐ๋ ๋ณ๊ฒฝ๋ ํ๋ก์ ํธ์ ์ง์ ์์กดํ๋ ํ๋ก์ ํธ์ ๋ํด์๋ง ๋น๋, ํ ์คํธ, ๋ฆฐํ ์ ์คํํ์ญ์์ค. ์ด๊ฒ์ด ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ์์ ๊ฐ์ฅ ์ค์ํ ๋จ์ผ ์ต์ ํ์ ๋๋ค.
- ์๊ฒฉ ์บ์ฑ: ๋น๋ ์ํฐํฉํธ์ ๋ํ ์๊ฒฉ ์บ์ฑ์ ๊ตฌํํ์ญ์์ค. Nx Cloud, Turborepo Remote Caching ๋๋ ์ฌ์ฉ์ ์ ์ ์๋ฃจ์ ์ด๋ , ๋ค๋ฅธ CI ์คํ ๋ฐ ๊ฐ๋ฐ์ ๋จธ์ ๊ฐ์ ๋น๋ ์ถ๋ ฅ์ ๊ณต์ ํ๋ฉด ๋น๋ ์๊ฐ์ด ํฌ๊ฒ ๋จ์ถ๋ฉ๋๋ค.
- ๋ณ๋ ฌํ: ๋ ๋ฆฝ์ ์ธ ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ๋๋ก CI/CD๋ฅผ ๊ตฌ์ฑํ์ญ์์ค. ํ๋ก์ ํธ A์ ํ๋ก์ ํธ B๊ฐ ์๋ก ์์กดํ์ง ์๊ณ ๋ ๋ค ๋ณ๊ฒฝ์ ์ํฅ์ ๋ฐ๋ ๊ฒฝ์ฐ, ํ ์คํธ์ ๋น๋๋ ๋์์ ์คํ๋์ด์ผ ํฉ๋๋ค.
- ์ค๋งํธ ๋ฐฐํฌ ์ ๋ต: ๋ณ๊ฒฝ๋์๊ฑฐ๋ ์์กด์ฑ์ด ๋ณ๊ฒฝ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ๋ฐฐํฌํ์ญ์์ค. ๋ชจ๋ ์ปค๋ฐ์์ ๋ชจ๋ ธ๋ ํฌ์ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ์ฌ๋ฐฐํฌํ๋ ๊ฒ์ ํผํ์ญ์์ค. ์ด๋ฅผ ์ํด์๋ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์ง๋ฅ์ ์ธ ํ์ง ๋ก์ง์ด ํ์ํฉ๋๋ค.
์ด๋ฌํ CI/CD ์ต์ ํ๋ ๊ธ๋ก๋ฒ ๊ธฐ์ฌ์๊ฐ ์๋ ํฌ๊ณ ํ๋์ ์ธ ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ์์ ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ์ ๋ฐฐํฌ ๋ฏผ์ฒฉ์ฑ์ ์ ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
๋ฌธ์ํ์ ์ปค๋ฎค๋์ผ์ด์ ์์ฉ
ํฌ๊ณ ๊ณต์ ๋ ์ฝ๋๋ฒ ์ด์ค์์๋ ๋ช ํํ ๋ฌธ์ํ์ ์ด๋ฆฐ ์ปค๋ฎค๋์ผ์ด์ ์ด ๊ทธ ์ด๋ ๋๋ณด๋ค ์ค์ํฉ๋๋ค:
-
ํฌ๊ด์ ์ธ README: ๋ชจ๋
ธ๋ ํฌ ๋ด์ ๊ฐ ํจํค์ง๋ ๊ทธ ๋ชฉ์ , ์ฌ์ฉ ๋ฐฉ๋ฒ, ๊ฐ๋ฐ ๋ฐฉ๋ฒ ๋ฐ ํน์ ๊ณ ๋ ค ์ฌํญ์ ์ค๋ช
ํ๋ ์์ธํ
README.md
๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค. - ๊ธฐ์ฌ ๊ฐ์ด๋๋ผ์ธ: ์ฝ๋ฉ ํ์ค, ์ปค๋ฐ ๋ฉ์์ง ๊ท์น, ํ ๋ฆฌํ์คํธ ํ ํ๋ฆฟ ๋ฐ ํ ์คํธ ์๊ตฌ ์ฌํญ์ ํฌํจํ์ฌ ๋ชจ๋ ธ๋ ํฌ์ ๊ธฐ์ฌํ๊ธฐ ์ํ ๋ช ํํ ๊ฐ์ด๋๋ผ์ธ์ ์๋ฆฝํ์ญ์์ค.
- ์ํคํ ์ฒ ๊ฒฐ์ ๊ธฐ๋ก(ADR): ํนํ ๋ชจ๋ ธ๋ ํฌ ๊ตฌ์กฐ, ํด๋ง ์ ํ ๋๋ ์ฌ๋ฌ ์์ญ์ ๊ฑธ์น ๋ฌธ์ ์ ๊ด๋ จ๋ ์ค์ํ ์ํคํ ์ฒ ๊ฒฐ์ ์ ๋ฌธ์ํํ์ญ์์ค.
- ๋ด๋ถ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋: ๋ชจ๋ ธ๋ ํฌ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋ ผ์ํ๊ณ , ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณต์ ํ๋ฉฐ, ํฐ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ์ ํ๊ธฐ ์ํ ํ๋ฐํ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋(์: ์ ์ฉ Slack/Teams ์ฑ๋, ์๊ฐ๋์ ๊ฑธ์น ์ ๊ธฐ ๋๊ธฐํ ํ์)์ ์กฐ์ฑํ์ญ์์ค.
- ์ํฌ์ ๋ฐ ๊ต์ก: ์ ๊ธฐ์ ์ธ ์ํฌ์๊ณผ ๊ต์ก ์ธ์ ์ ์ค์ํ์ฌ ์ ๊ท ๊ฐ๋ฐ์๋ฅผ ์จ๋ณด๋ฉํ๊ณ ๊ธฐ์กด ํ์ด ๋ชจ๋ ธ๋ ํฌ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๋๊ตฌ ์ฌ์ฉ์ ๋ํด ์ต์ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ์ญ์์ค.
ํจ๊ณผ์ ์ธ ๋ฌธ์ํ์ ์ ์ ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ ์ ์ง์ ๊ฒฉ์ฐจ๋ฅผ ํด์ํ๊ณ ๋ค์ํ ํ๊ณผ ์ง๋ฆฌ์ ์์น์ ๊ฑธ์ณ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
ํ์ ๊ณผ ํ์ค์ ๋ฌธํ ์ก์ฑ
๋ชจ๋ ธ๋ ํฌ๋ ๊ธฐ์ ์ ์ธ ๋ณํ๋งํผ์ด๋ ๋ฌธํ์ ์ธ ๋ณํ์ด๊ธฐ๋ ํฉ๋๋ค. ํ๋ ฅ์ ์ธ ํ๊ฒฝ์ ์กฐ์ฑํ์ญ์์ค:
- ํ ๊ฐ ์ฝ๋ ๊ฒํ : ํนํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๋ค๋ฅธ ํ ๊ตฌ์ฑ์์ ์ฝ๋ ๊ฒํ ๋ฅผ ์ฅ๋ คํ๊ฑฐ๋ ์๊ตฌํ์ญ์์ค. ์ด๋ ์ง์ ๊ณต์ ๋ฅผ ์ด์งํ๊ณ ๋จ์ผ ํ์ด ๋์น ์ ์๋ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๊ณต๋ ์ฑ ์: ํ์ด ํน์ ํ๋ก์ ํธ๋ฅผ ์์ ํ์ง๋ง, ๋ชจ๋ ธ๋ ํฌ ์ ์ฒด์ ๊ฑด๊ฐ์ ๊ณต๋์ ์ฑ ์์์ ๊ฐ์กฐํ์ญ์์ค. ๊ณต์ ์์ญ์์์ ์ ์ ์ ์ธ ๋ฒ๊ทธ ์์ ๊ณผ ๊ณตํต ๋๊ตฌ ๊ฐ์ ์ ๊ธฐ์ฌํ๋ ๊ฒ์ ์ฅ๋ คํ์ญ์์ค.
- ์ ๊ธฐ ๋๊ธฐํ: ๋ค๋ฅธ ํ์ ๋ํ๋ค์ด ๊ณผ์ ๋ฅผ ๋ ผ์ํ๊ณ , ํด๊ฒฐ์ฑ ์ ๊ณต์ ํ๋ฉฐ, ๋ฏธ๋ ๋ฐฉํฅ์ ๋ํด ์กฐ์จํ ์ ์๋ ์ ๊ธฐ ํ์(์: ๊ฒฉ์ฃผ ๋๋ ์๊ฐ "๋ชจ๋ ธ๋ ํฌ ๊ธธ๋" ํ์)๋ฅผ ๊ณํํ์ญ์์ค. ์ด๋ ํนํ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํ์ด ์์ง๋ ฅ์ ์ ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ๋์ ํ์ค ์ ์ง: ์ฝ๋ ํ์ง, ํ ์คํธ ๋ฐ ๋ฌธ์ํ์ ์ค์์ฑ์ ์ง์์ ์ผ๋ก ๊ฐํํ์ญ์์ค. ๋ชจ๋ ธ๋ ํฌ์ ์ค์ ์ง์ค์ ํน์ฑ์ ์ข๊ณ ๋์ ๊ดํ ๋ชจ๋์ ์ํฅ์ ์ฆํญ์ํต๋๋ค.
ํ์ ๊ณผ ๋์ ํ์ค ์ค์์ ๊ฐ๋ ฅํ ๋ฌธํ๋ ๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ์ ์ฅ๊ธฐ์ ์ธ ์ง์ ๊ฐ๋ฅ์ฑ๊ณผ ์ฑ๊ณต์ ๋ณด์ฅํฉ๋๋ค.
์ ๋ต์ ๋ง์ด๊ทธ๋ ์ด์ ๊ณ ๋ ค ์ฌํญ
ํด๋ฆฌ๋ ํฌ ์ค์ ์์ ์ ํํ๋ ์กฐ์ง์๊ฒ๋ ์ ๋ต์ ๊ณํ์ด ํต์ฌ์ ๋๋ค:
- ๊ณต์ ์ปดํฌ๋ํธ ๋จผ์ ์๋ณ: ๊ณตํต UI ์ปดํฌ๋ํธ, ๋์์ธ ์์คํ ๋ฐ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ผ๋ก ์์ํ์ญ์์ค. ์ด๋ ์ฆ๊ฐ์ ์ธ ๊ฐ์น๋ฅผ ์ ๊ณตํ๊ณ ํ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํ ๊ธฐ๋ฐ์ ๋ง๋ จํฉ๋๋ค.
- ์ด๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ช ํ๊ฒ ์ ํ: ์๋กญ๊ฑฐ๋, ๋น๊ต์ ์๊ฑฐ๋, ์๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ช ํํ ์์กด์ฑ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํํ์ญ์์ค. ์ด๋ฅผ ํตํด ํต์ ๋ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ณต์กด ๊ณํ: ํด๋ฆฌ๋ ํฌ์ ๋ชจ๋ ธ๋ ํฌ๊ฐ ๊ณต์กดํ๋ ๊ธฐ๊ฐ์ ์์ํ์ญ์์ค. ๋ณ๊ฒฝ ์ฌํญ์ด ๊ทธ๋ค ์ฌ์ด์์ ์ด๋ป๊ฒ ์ ํ๋๋์ง์ ๋ํ ์ ๋ต์ ์ค๊ณํ์ญ์์ค(์: ๋ชจ๋ ธ๋ ํฌ์์ ํจํค์ง ๊ฒ์ ๋๋ ์์ ๋ฏธ๋ฌ๋ง์ ํตํด).
- ๋จ๊ณ์ ์ถ์: ๋จ๊ณ๋ณ ์ถ์ ๊ณํ์ ๊ตฌํํ๊ณ , ๊ฐ ๋จ๊ณ์์ ์ฑ๋ฅ, ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ๋ฐ CI/CD ๋ฉํธ๋ฆญ์ ๋ชจ๋ํฐ๋งํ์ญ์์ค. ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋๋๋ฆฌ๊ฑฐ๋ ์กฐ์ ํ ์ค๋น๋ฅผ ํ์ญ์์ค.
- ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต: ๋ชจ๋ ธ๋ ํฌ ๋ด์์ ๋ช ํํ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ๊ฒฐ์ ํ์ญ์์ค(์: ํจํค์ง๋ณ ๋ ๋ฆฝ ๋ฒ์ ๊ด๋ฆฌ ๋ ์ ์ฒด ๋ชจ๋ ธ๋ ํฌ์ ๋ํ ๋จ์ผ ๋ฒ์ ). ์ด๋ ๋ด๋ถ ํจํค์ง๋ฅผ ์ผ๋ง๋ ์์ฃผ ๊ฒ์ํ๊ณ ์๋นํ๋์ง์ ์ํฅ์ ๋ฏธ์น ๊ฒ์ ๋๋ค.
๊ฐ๋ ฅํ ์ปค๋ฎค๋์ผ์ด์ ์ผ๋ก ๋ท๋ฐ์นจ๋๋ ์ ์คํ๊ณ ๋จ๊ณ์ ์ธ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค๋ ๊ธ๋ก๋ฒ ํ ์ ์ฒด์ ์ง์์ ์ธ ๊ฐ๋ฐ์ ๋ํ ์ค๋จ์ ์ต์ํํ๋ฉด์ ๋ชจ๋ ธ๋ ํฌ๋ก์ ์ฑ๊ณต์ ์ธ ์ ํ ๊ฐ๋ฅ์ฑ์ ํฌ๊ฒ ๋์ผ ๊ฒ์ ๋๋ค.
์ค์ ์ ์ฉ ์ฌ๋ก ๋ฐ ๊ธ๋ก๋ฒ ์ํฅ
๋๊ท๋ชจ ๋ชจ๋ ธ๋ ํฌ์ ์์น๊ณผ ์ด์ ์ ์ด๋ก ์ ์ธ ๊ตฌ์ฑ๋ฌผ์ด ์๋๋๋ค. ์ ์ธ๊ณ ์ ์์ ๊ธฐ์ ๊ธฐ์ ๋ค์ด ๋ฐฉ๋ํ๊ณ ๋ณต์กํ ์ํํธ์จ์ด ํฌํธํด๋ฆฌ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๊ณ ์์ต๋๋ค. ์ข ์ข ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ์์ง๋์ด๋ง ํ์ ๋ณด์ ํ ์ด๋ค ์กฐ์ง์ ๋ชจ๋ ธ๋ ํฌ๊ฐ ์ผ๊ด๋ ์ ํ ์ ๊ณต๊ณผ ๊ฐ์ํ๋ ํ์ ์ ์ํ ๊ฐ๋ ฅํ ์๋๋ ฅ์ผ๋ก ์์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ฐฉ๋ํ Office ๋ฐ Azure ์ฝ๋๋ฒ ์ด์ค์ Rush๋ฅผ ํ์ฉํ๋ Microsoft๋, ๊ฑฐ์ ๋ชจ๋ ๋ด๋ถ ์๋น์ค์ ๋ชจ๋ ธ๋ ํฌ ๊ฐ๋ ์ ๊ฐ์ฒํ ๊ฒ์ผ๋ก ์๋ ค์ง Google๊ณผ ๊ฐ์ ํ์ฌ์ ์๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. ๊ทธ๋ค์ ๊ท๋ชจ๋ ์์ฒญ๋์ง๋ง, ๊ธฐ๋ณธ ์์น์ ์ํธ ์ฐ๊ฒฐ๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ์ ์ฌํ ๊ณผ์ ์ ์ง๋ฉดํ ๋ชจ๋ ์กฐ์ง์ ์ ์ฉ๋ฉ๋๋ค. Next.js์ Turborepo์ ์ ์์์ธ Vercel์ ๋ง์ ๋ด๋ถ ์๋น์ค์ ์คํ ์์ค ํ๋ก์ ํธ์ ๋ชจ๋ ธ๋ ํฌ๋ฅผ ์ฌ์ฉํ์ฌ, ์ค๊ฒฌ ๊ท๋ชจ์ด์ง๋ง ๋น ๋ฅด๊ฒ ํ์ฅํ๋ ํ์ฌ์์๋ ๊ทธ ํจ๋ฅ์ ์ ์ฆํฉ๋๋ค.
๊ธ๋ก๋ฒ ์กฐ์ง์ ๊ฒฝ์ฐ, ์ ๊ตฌํ๋ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ์ ์ํฅ์ ์ฌ์คํฉ๋๋ค:
- ์์ฅ ์ ๋ฐ์ ๊ฑธ์น ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ถ๋ฏธ, ์ ๋ฝ, ์์์์์ ์ ํ์ ์ ๊ณตํ๋ ํ์ฌ๋ ๊ณตํต UI ์ปดํฌ๋ํธ, ๋์์ธ ์์ ๋ฐ ํต์ฌ ๊ธฐ๋ฅ์ด ๋ชจ๋ ์ง์ญ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ผํ๊ณ ์ผ๊ด๋๊ฒ ์ ๋ฐ์ดํธ๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋๋ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ์ฌ์ฉ์์ ์์น์ ๊ด๊ณ์์ด ์ํํ ์ฌ์ฉ์ ์ฌ์ ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ์ํ๋ ํ์งํ ๋ฐ ๊ตญ์ ํ: ๋ชจ๋ ธ๋ ํฌ ๋ด์ ๊ณต์ i18n/l10n ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฒ์ญ ๋ฌธ์์ด๊ณผ ํ์งํ ๋ก์ง์ ์ค์ ์ง์คํํ์ฌ ๋ชจ๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์๋ก์ด ์์ฅ์ ๋ง๊ฒ ์ ํ์ ์กฐ์ ํ๋ ๊ณผ์ ์ ๊ฐ์ํํ์ฌ ๋ ํฐ ํจ์จ์ฑ์ผ๋ก ๋ฌธํ์ , ์ธ์ด์ ์ ํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ํฅ์๋ ๊ธ๋ก๋ฒ ํ์ : ๋ค๋ฅธ ์๊ฐ๋์ ํ์ด ๋์ผํ ๋ชจ๋ ธ๋ ํฌ์ ๊ธฐ์ฌํ ๋, ๊ณต์ ๋ ํด๋ง, ์ผ๊ด๋ ํ์ค ๋ฐ ์์์ ์ปค๋ฐ์ ๋ ์์ง๋ ฅ ์๊ณ ๋ ํํธํ๋ ๊ฐ๋ฐ ๊ฒฝํ์ ์กฐ์ฑํฉ๋๋ค. ๋ฐ๋์ ๊ฐ๋ฐ์๋ ์ฑ๊ฐํฌ๋ฅด์ ๋๋ฃ๊ฐ ํ๋ ์์ ์ ์ฝ๊ฒ ์ด์ด๋ฐ์ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๋ ๋ค ์ ์ดํด๋ ๋์ผํ ์ฝ๋๋ฒ ์ด์ค ๋ด์์ ๋์ผํ ๋๊ตฌ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ง์์ ๊ต์ฐจ ์๋ถ: ๋ชจ๋ ํ๋ก ํธ์๋ ์ฝ๋๋ฅผ ํ ๊ณณ์์ ๋ณผ ์ ์๋ค๋ ๊ฒ์ ๊ฐ๋ฐ์๋ค์ด ์์ ์ ์ง์ ํ๋ก์ ํธ๋ฅผ ๋์ด ์ฝ๋๋ฅผ ํ์ํ๋๋ก ์ฅ๋ คํฉ๋๋ค. ์ด๋ ํ์ต์ ์ด์งํ๊ณ , ๋ชจ๋ฒ ์ฌ๋ก ์ฑํ์ ์ฅ๋ คํ๋ฉฐ, ํ ๊ฐ ํต์ฐฐ๋ ฅ์์ ๋น๋กฏ๋ ํ์ ์ ์ธ ์๋ฃจ์ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ํ ์ง์ญ์ ํ์ด ๊ตฌํํ ์๋ก์ด ์ต์ ํ๋ ๋ค๋ฅธ ํ์ ์ํด ๋น ๋ฅด๊ฒ ์ฑํ๋์ด ์ ์ฒด ๊ธ๋ก๋ฒ ์ ํ ์ค์ํธ์ ์ด์ ์ ์ค ์ ์์ต๋๋ค.
- ์ ํ ๊ฐ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ ๊ฐ์ํ: ์ฌ๋ฌ ํ๋ก ํธ์๋ ์ ํ(์: ์น ๋์๋ณด๋, ๋ชจ๋ฐ์ผ ์ฑ, ๋ง์ผํ ์ฌ์ดํธ)์ ๋ณด์ ํ ํ์ฌ์ ๊ฒฝ์ฐ, ๋ชจ๋ ธ๋ ํฌ๋ ๋ ๋น ๋ฅธ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๊ณต์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ถ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ด๋ จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ํตํฉ๋ ์ ์์ด, ์ผ๊ด๋ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ๋ณด์ฅํ๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ์๋ก์ด ์ ํ์ ์์ฅ ์ถ์ ์๊ฐ์ ๋จ์ถํฉ๋๋ค.
์ด๋ฌํ ์ค์ ์ ์ฉ ์ฌ๋ก๋ ๋๊ท๋ชจ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ๊ฐ ๋จ์ํ ๊ธฐ์ ์ ์ ํธ๊ฐ ์๋๋ผ, ๊ธ๋ก๋ฒ ๊ธฐ์ ์ด ๋ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ณ , ๋ ๋์ ํ์ง์ ์ ์งํ๋ฉฐ, ๋ค์ํ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ ์ผ๊ด๋๊ณ ํ์งํ๋ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๊ฒ ํ๋ ์ ๋ต์ ๋น์ฆ๋์ค ์ด์ ์์ ๊ฐ์กฐํฉ๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๋ฏธ๋: ๋ชจ๋ ธ๋ ํฌ์ ๊ทธ ๋๋จธ
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ฌ์ ์ ์ง์์ ์ธ ์งํ์ ๊ณผ์ ์ด๋ฉฐ, ๋ชจ๋ ธ๋ ํฌ๋ ํ์ฌ์ ๋ฏธ๋์ ํ๊ฒฝ์์ ํ์์ ์ธ ๋ถ๋ถ์ ๋๋ค. ํ๋ก ํธ์๋ ์ํคํ ์ฒ๊ฐ ๋์ฑ ์ ๊ตํด์ง์ ๋ฐ๋ผ, ๋ชจ๋ ธ๋ ํฌ์ ์ญํ ์ ํ์ฅ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ, ์๋ก์ด ํจํด ๋ฐ ๊ธฐ์ ๊ณผ ์ฝํ ํจ์ฌ ๋ ๊ฐ๋ ฅํ ๊ฐ๋ฐ ์ํ๊ณ๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค.
๋ง์ดํฌ๋ก ํ๋ก ํธ์๋๋ฅผ ํธ์คํ ํ๋ ๋ชจ๋ ธ๋ ํฌ
๋ง์ดํฌ๋ก ํ๋ก ํธ์๋์ ๊ฐ๋ ์ ๋๊ท๋ชจ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ ๋จ์๋ก ๋๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋๋ ์์จ์ฑ๊ณผ ๋ ๋ฆฝ์ ์ธ ๋ฐฐํฌ๋ฅผ ์ด์งํ์ง๋ง, ๊ณต์ ์์ฐ, ํต์ ํ๋กํ ์ฝ ๋ฐ ์ ๋ฐ์ ์ธ ์ค์ผ์คํธ๋ ์ด์ ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ํด๋ฆฌ๋ ํฌ ์ค์ ์์ ๋ณต์กํด์ง ์ ์์ต๋๋ค. ๋ฐ๋ก ์ฌ๊ธฐ์์ ๋ชจ๋ ธ๋ ํฌ๊ฐ ๋งค๋ ฅ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ธ๋ ํฌ๋ ์ฌ๋ฌ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋ ํ๋ก์ ํธ๋ฅผ ์ํ ํ๋ฅญํ "ํธ์คํธ" ์ญํ ์ ํ ์ ์์ต๋๋ค.
๊ฐ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋๋ ๋ชจ๋ ธ๋ ํฌ ๋ด์ ๋ ๋ฆฝ์ ์ธ ํจํค์ง๋ก ์กด์ฌํ๋ฉฐ, ๊ณต์ ํด๋ง, ์ค์ ์ง์ค์ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ํตํฉ๋ CI/CD์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ๋ชจ๋ ธ๋ ํฌ ์ค์ผ์คํธ๋ ์ดํฐ(Nx์ ๊ฐ์)๋ ๊ฐ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋์ ๋น๋์ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉด์๋, ๋ชจ๋ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋์์ ์ฌ์ฉ๋๋ ๊ณตํต ์ปดํฌ๋ํธ(์: ๊ณต์ ๋์์ธ ์์คํ ๋๋ ์ธ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)์ ๋ํ ๋จ์ผ ์์ค์ ์ด์ ์ ๊ณ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๋์ง ๊ด๊ณ๋ ์กฐ์ง์ด ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋์ ๋ฐฐํฌ ์์จ์ฑ๊ณผ ๋ชจ๋ ธ๋ ํฌ์ ๊ฐ๋ฐ ํจ์จ์ฑ ๋ฐ ์ผ๊ด์ฑ์ ๊ฒฐํฉํ์ฌ, ๊ฑฐ๋ํ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ง์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํ ์ ์๊ฒ ํฉ๋๋ค.
ํด๋ผ์ฐ๋ ๊ฐ๋ฐ ํ๊ฒฝ
ํด๋ผ์ฐ๋ ๊ฐ๋ฐ ํ๊ฒฝ(์: GitHub Codespaces, Gitpod, AWS Cloud9)์ ๋ถ์์ ๋ชจ๋ ธ๋ ํฌ ๊ฒฝํ์ ๋์ฑ ํฅ์์ํต๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์ ํตํด ๊ฐ๋ฐ์๋ ์ ์ฒด ๋ชจ๋ ธ๋ ํฌ, ๊ทธ ์์กด์ฑ ๋ฐ ํ์ํ ๋๊ตฌ๊ฐ ๋ฏธ๋ฆฌ ๋ก๋๋ ์์ ๊ตฌ์ฑ๋ ๊ฐ๋ฐ ์ํฌ์คํ์ด์ค๋ฅผ ํด๋ผ์ฐ๋์์ ์ฆ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ "๋ด ์ปดํจํฐ์์๋ ์๋ํ๋๋ฐ" ๋ฌธ์ ๋ฅผ ์ ๊ฑฐํ๊ณ , ๋ก์ปฌ ์ค์ ์๊ฐ์ ์ค์ด๋ฉฐ, ๋ก์ปฌ ๋จธ์ ์ ์ด์ ์ฒด์ ๋ ํ๋์จ์ด์ ๊ด๊ณ์์ด ๊ธ๋ก๋ฒ ํ์๊ฒ ์ผ๊ด๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ๊ทน๋๋ก ํฐ ๋ชจ๋ ธ๋ ํฌ์ ๊ฒฝ์ฐ, ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ๋๊ท๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ ํด๋ก ๋ฐ ๋ก์ปฌ ๋ฆฌ์์ค ์๋น์ ๋ฌธ์ ๋ฅผ ํฌ๊ฒ ์ํํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ์๊ฒฉ ์บ์ฑ ๋ฐ ๋น๋ ํ
๋ฏธ๋์๋ ํจ์ฌ ๋ ์ ๊ตํ ์๊ฒฉ ์บ์ฑ ๋ฐ ๋ถ์ฐ ๋น๋ ์์คํ ์ด ๋ฑ์ฅํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋๋ฅ์ ๊ฐ๋ก์ง๋ฌ ๊ณ์ฐ์ด ์ฆ์ ๊ณต์ ๋๊ณ ๊ฒ์๋๋ ๊ธ๋ก๋ฒ ๋น๋ ํ์ ์์ํด ๋ณด์ญ์์ค. Bazel(Google์ด ์ฌ์ฉํ๋ ๊ณ ๋๋ก ํ์ฅ ๊ฐ๋ฅํ ๋น๋ ์์คํ )๊ณผ ๊ฐ์ ๊ธฐ์ ๋ฐ JavaScript ์ํ๊ณ์์์ ์ฑํ ์ฆ๊ฐ, ๋๋ Nx Cloud ๋ฐ Turborepo์ ์๊ฒฉ ์บ์ฑ์ ์ง์์ ์ธ ๊ฐ์ ์ ๊ฐ์ฅ ํฐ ๋ชจ๋ ธ๋ ํฌ์ ๋น๋ ์๊ฐ์กฐ์ฐจ ๊ฑฐ์ ์ฆ๊ฐ์ ์ธ ์๋์ ๊ฐ๊น์์ง๋ ๋ฏธ๋๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
๋ชจ๋ ธ๋ ํฌ ํด๋ง์ ์งํ
๋ชจ๋ ธ๋ ํฌ ํด๋ง ํ๊ฒฝ์ ์ญ๋์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํจ์ฌ ๋ ์ง๋ฅ์ ์ธ ๊ทธ๋ํ ๋ถ์, ๋ ๊ฐ๋ ฅํ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ, ํด๋ผ์ฐ๋ ์๋น์ค์์ ๋ ๊น์ ํตํฉ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค. ๋๊ตฌ๋ ๊ณตํต ์ํคํ ์ฒ ํจํด์ ๋ํ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์ ๊ณตํ๋ฉฐ ๋์ฑ ๋ ๋จ์ ์ด ๋๊ฑฐ๋, ๋ ํฐ ์ฌ์ฉ์ ์ ์๋ฅผ ํ์ฉํ๋ฉฐ ๋ ๋ชจ๋ํ๋ ์ ์์ต๋๋ค. ์ค์ ์ ๊ฐ๋ฐ์ ๊ฒฝํ, ์ฑ๋ฅ ๋ฐ ๋๊ท๋ชจ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๊ณ์ ๋จ์ ๊ฒ์ ๋๋ค.
๊ตฌ์ฑ ๊ฐ๋ฅํ ์ํคํ ์ฒ์ ์๋๋ ฅ์ผ๋ก์์ ๋ชจ๋ ธ๋ ํฌ
๊ถ๊ทน์ ์ผ๋ก, ๋ชจ๋ ธ๋ ํฌ๋ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ณต์ ์ปดํฌ๋ํธ, ์ ํธ๋ฆฌํฐ, ์ฌ์ง์ด ์ ์ฒด ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋๋ฅผ ์ค์ ์ง์คํํจ์ผ๋ก์จ, ๊ธฐ์กด์ ์ ํ ์คํธ๋ ๋น๋ฉ ๋ธ๋ก์์ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ธฐ๋ฅ์ ์ ์ํ๊ฒ ์กฐ๋ฆฝํ๋ ๊ฒ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ์์ฅ ์๊ตฌ์ ์ ์ํ๊ฒ ๋์ํ๊ณ , ์๋ก์ด ์ ํ ์์ด๋์ด๋ฅผ ์คํํ๋ฉฐ, ๋ค์ํ ๊ธ๋ก๋ฒ ๋ถ๋ฌธ์ ์ฌ์ฉ์์๊ฒ ๋ ํจ์จ์ ์ผ๋ก ๊ฐ์น๋ฅผ ์ ๊ณตํ๋ ๋ฐ ํต์ฌ์ ๋๋ค. ์ด๋ ๊ฐ๋ณ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์์ ์ํธ ์ฐ๊ฒฐ๋ ์ํํธ์จ์ด ์์ฐ์ ์ผ๊ด๋ ์ํ๊ณ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ผ๋ก ์ด์ ์ ์ ํํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋๊ท๋ชจ ํ๋ก ํธ์๋ ๋ชจ๋ ธ๋ ํฌ๋ ๋จ์ํ ์ ํ์ด ์๋๋๋ค. ํ๋ ์น ๊ฐ๋ฐ์ ๋ณต์ก์ฑ์ ํ์ํ๋ ์กฐ์ง์๊ฒ ์ฑ์ํ๊ณ ์ ์ ๋ ํ์์ ์ธ ์ํคํ ์ฒ ํจํด์ ๋๋ค. ๊ทธ ์ฑํ์ ์ ์คํ ๊ณ ๋ ค์ ๊ฒฌ๊ณ ํ ํด๋ง ๋ฐ ๊ท์จ ์๋ ๊ดํ์ ๋ํ ํ์ ์ ์๊ตฌํ์ง๋ง, ๊ฐ๋ฐ์ ์์ฐ์ฑ, ์ฝ๋ ํ์ง ๋ฐ ์ ์ธ๊ณ์ ์ผ๋ก ํ์ฅํ ์ ์๋ ๋ฅ๋ ฅ ์ธก๋ฉด์์์ ๋ณด์์ ๋ถ์ธํ ์ ์์ต๋๋ค. ํ๋ก ํธ์๋ "๋ฌ์"๊ฐ ๊ณ์ ๊ฐ์ํ๋จ์ ๋ฐ๋ผ, ๋ชจ๋ ธ๋ ํฌ ์ ๋ต์ ์์ฉํ๋ ๊ฒ์ ์ ์ธ๊ณ ํ์ ์ํด ์ง์ ์ผ๋ก ํตํฉ๋๊ณ ํจ์จ์ ์ด๋ฉฐ ํ์ ์ ์ธ ๊ฐ๋ฐ ๋ฏธ๋๋ฅผ ์กฐ์ฑํ๋ฉฐ ์์ ๋๊ฐ ์ ์๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.