Node.js๋ ํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํต์ฌ ๊ธฐ์ ๋ก ์๋ฆฌ ์ก์์ผ๋ฉฐ, ๊ฐ๋ฒผ์ด API๋ถํฐ ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ฒ์ ์ง์ํฉ๋๋ค. ๋ ผ๋ธ๋กํน I/O, ํ๋ถํ ์ํ๊ณ, ๊ทธ๋ฆฌ๊ณ ํญ๋์ ์ปค๋ฎค๋ํฐ ์ง์์ ํ์ฅ ๊ฐ๋ฅํ ์๋ฒ ์ฌ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฐ์ค๋ฝ๊ฒ ์ ํฉํ๋๋ก ๋ง๋ค์์ต๋๋ค. ๊ฐ๋ฐํ์ด Node.js์ TypeScript๋ฅผ ๋์ ํจ์ ๋ฐ๋ผ, ์๋ฐฑ ๊ฐ์ ์๋น์ค ๋๋ ์๋ฐฑ๋ง ์ค์ ์ฝ๋๋ก ํ์ฅ๋ ์ ์๋ ํ๋ก์ ํธ์์ ๊ฐ๋ ฅํ ํ์ดํ, ํฅ์๋ ๋๊ตฌ, ๊ทธ๋ฆฌ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํ ์ฝ๋์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
TypeScript๋ ํ์ ๊ณ์ฝ์ ์ ์ฉํ๊ณ , ๊ฐ๋ฐ ์ค ํน์ ์ ํ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๋ฉฐ, ์ง๋ฅํ ์๋ ์์ฑ ๋ฐ ๋ฆฌํฉํ ๋ง์ ์์ ํ ํ์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํตํด ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํด์ผ๋ก์จ JavaScript์ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋์ฌ์ค๋๋ค. ์ด๋ฌํ ์ง์์ ํ์ด ๋์ฑ ์์ ์ ์ธ Node.js ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๋์ฑ ๋ช ํํ ์ธํฐํ์ด์ค์ ๊ณ์ฝ์ ํตํด ๋ถ์ฐ๋ ํ ๊ฐ์ ํ์ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
ํ์ง๋ง TypeScript์ ํ์ ์์คํ ์ด ๊ตฌ์ถ๋์ด ์๋ค๊ณ ํด์ ๋ชจ๋ ์ํ์ ์ ๊ฑฐํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ๋ฐํ์ ์ค๋ฅ, ์์ ํ์ง ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ํคํ ์ฒ ๋๋ฆฌํํธ, ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ฌํ ๋ ผ๋ฆฌ์ ๊ฒฐํจ์ ํ์ ๊ฒ์ฌ์ ๋จ์ ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ ์ ์์ต๋๋ค. ๋์ ํจํด, ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋์์์ด ๋ณํํ๋ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ TypeScript ์ปดํ์ผ๋ฌ๋ง์ผ๋ก๋ ์๋ฒฝํ๊ฒ ๋ถ์ํ ์ ์๋ ๋ณต์ก์ฑ์ ์ผ๊ธฐํฉ๋๋ค. ํ์ดํ์ ํตํด ๋ ์์ ํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ค๋ ์ฝ์์ ๋๊ท๋ชจ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ง์ ์ ์งํ๋ ํ์ค์ ์ธ ๊ณผ์ ์ ๋ํ ํด๋ต์ ์ผ๋ถ์ผ ๋ฟ์ ๋๋ค.
์ ์ ๋ถ์์ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ๊ฒ์ฌํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํจ์ผ๋ก์จ ์ด๋ฌํ ๊ฐ๊ทน์ ๋ฉ์ฐ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ์ ์ด๋ฅผ ํตํด ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ , ์ฝ๋ฉ ํ์ค์ ์ค์ํ๋ฉฐ, ์ํคํ ์ฒ ๊ฒฝ๊ณ๋ฅผ ํ๋ณดํ๊ณ , ์ ์ฌ์ ์ธ ๋ณด์ ์ทจ์ฝ์ ์ ํ์ ํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์์ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํจ์ผ๋ก์จ ํ์ ํ๋ก์ ํธ์ ๊ท๋ชจ์ ๋ฐ์ ์ ๋ฐ๋ผ ์์ ์ฑ์ ํฅ์์ํค๊ณ , ํ๊ท๋ฅผ ์ค์ด๋ฉฐ, ์ผ๊ด๋ ์ค๊ณ ์์น์ ์ ์งํ ์ ์์ต๋๋ค.
TypeScript๋ก ๊ตฌ์ถ๋ Node.js ํ๋ก์ ํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ํฌ๊ฒ ์ป์ต๋๋ค. ์ ์ ๋ถ์ ์ด๋ ์ ํ ๊ฒ์ฌ๋ฅผ ๋์ด์ญ๋๋ค. ์ด๋ฌํ ๋ถ์์ ์จ๊ฒจ์ง ๋ฐ์ดํฐ ํ๋ฆ ๋ฌธ์ ๋ฅผ ๋๋ฌ๋ด๊ณ , ๋๋ฉ์ธ ๊ธฐ๋ฐ ๋์์ธ ๊ท์น์ ์ ์ฉํ๊ณ , ๋น๋๊ธฐ ์ฝ๋์์ ์์ ํ์ง ์์ ํจํด์ ๊ฐ์กฐํ๊ณ , ๊ฐ๊ด์ ์ด๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฒ์ฌ๋ฅผ ํตํด ์ฝ๋ ๊ฒํ ๋ฅผ ์ง์ํ ์ ์์ต๋๋ค. ์ ์ ํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ์ ๋ถ์์ ๋จ์ํ ํ์ง ๊ด๋ฌธ์ ๋์ด ํ๋ ๋ฐฑ์๋ ์์คํ ์ ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ๊ณผ ์ด์ ์์ ์ฑ์ ์ง์ํ๋ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค.
SMART TS XL
๋ง์ ์ฌ๋๋ค์ด ์ ์ ๋ถ์ ๋๊ตฌ ๋ฆฐํ , ์คํ์ผ ์ ์ฉ, ๋ณด์ ์ค์บ๋๊ณผ ๊ฐ์ ํน์ ์์ญ์์ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์กด์ฑ ๊ด๋ฆฌ, SMART TS XL ์ต์ Node.js ๋ฐ TypeScript ํ๋ก์ ํธ์ ๋ณต์กํ ์๊ตฌ ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํด ํน๋ณํ ๊ตฌ์ถ๋ ํฌ๊ด์ ์ธ ํ๋ซํผ์ผ๋ก ๋๋ณด์ ๋๋ค.
Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ API, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ ํ์ฌ ํจํค์ง์ ํตํฉ๋๋ ๋๊ท๋ชจ ๋ชจ๋ํ ์์คํ ์ผ๋ก ํ์ฅ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ ์๋ก ๋ฏธ๋ฌํ ๋ ผ๋ฆฌ ์ค๋ฅ์ ์ํ๋ ์ฆ๊ฐํฉ๋๋ค. ๋ณด์ ์ทจ์ฝ์ , ์ํคํ ์ฒ์ ๋ณํ, ์ ์ง ๊ด๋ฆฌ์ ์ด๋ ค์. SMART TS XL ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ํ์ฉ ๋ฐ์ด๋๋ ๊ณ ๊ธ ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ ํตํด ์ด๋ฌํ ๊ณผ์ ๋ฅผ ์ ๋ฉด์ผ๋ก ํด๊ฒฐํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๊ณ ๊ธ ์ฝ๋ ์ดํด
SMART TS XL TypeScript์ ๊ณ ๊ธ ํ์ ์์คํ ๊ณผ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ํน์ฑ์ ์๋ฒฝํ๊ฒ ์ดํดํ๋ ์ฌ์ธต์ ์ธ ์๋ฏธ ๋ถ์์ ์ ๊ณตํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋ ธ๋ ํฌ ๋ฐ ๊ณ์ธตํ ์ํคํ ์ฒ๋ฅผ ํฌํจํ ์ ์ฒด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํฉ๋๋ค.
- ๋ณต์กํ ์ ํ ๊ด๊ณ, ์ ๋ค๋ฆญ ๋ฐ ๊ณ ๊ธ ์ ํ ์ถ๋ก ๋ชจ๋ธ
- ๋ชจ๋ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ์ข ์์ฑ์ ์๋์ผ๋ก ํด๊ฒฐํฉ๋๋ค.
- async/await, ๋ฐ์ฝ๋ ์ดํฐ, ์ ํ์ ์ฒด์ด๋๊ณผ ๊ฐ์ ์ต์ JavaScript ๋ฐ TypeScript ๊ธฐ๋ฅ์ ์ดํดํฉ๋๋ค.
์ด๋ฌํ ์ฌ์ธต์ ์ธ ๋ถ์์ ํตํด ๋ชจ๋์ฑ์ด ๋์ Node.js ๋ฐฑ์๋์ ๋๊ท๋ชจ TypeScript ํ๋ก์ ํธ์์๋ ์ ํํ๊ณ ๊ด๋ จ์ฑ ์๋ ๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค.
์ํคํ ์ฒ ๋ฐ ๋์์ธ ๊ท์น ์ํ
Node.js ์์คํ ์ ์ฑ์ฅ์ํค๋ ๋ฐ ์์ด์๋ ๊น๋ํ ์ํคํ ์ฒ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. SMART TS XL ํ์ด ๋ค์์ ์ํํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- ๋ช ํํ ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ์ ์ํ๊ณ ์ ์ฉํฉ๋๋ค.
- ๊ณ์ธต ๊ฐ์ ์์น ์๋ ์ข ์์ฑ ๋ฐฉ์ง(์: API ๊ฒฝ๋ก์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ๋ก์ ์ง์ ํธ์ถ ์ฐจ๋จ)
- ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์ ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ค๊ณ ์์น์ด ์ค์๋๋๋ก ํฉ๋๋ค.
- ๊ฐ๋ฐ ๋ฐ CI ํ์ดํ๋ผ์ธ ์ค์ ์ํคํ ์ฒ ์๋ฐ ์ฌํญ์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๋ณด๊ณ ํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ค๊ณ ํ์ง์ ์ฅ๊ธฐ์ ์ธ ์ ํ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ฉฐ, ์๋ก์ด ํ์์ ์ ์์ ์ฉ์ดํ๊ฒ ํ๊ณ ์ ์ง ๊ด๋ฆฌ ๋น์ฉ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ณด์ ์ค์ฌ ์ ์ ๋ถ์
๋ณด์์ ํ๋ ๊ฐ๋ฐ์ ์ต์ฐ์ ์์์ ๋๋ค. SMART TS XL ๋ค์ ๊ธฐ๋ฅ์ด ํฌํจ๋ฉ๋๋ค.
- ๊ฒ์ฆ๋์ง ์์ ์ ๋ ฅ์ด ์ค์ API ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ์ ๋๋ฌํ๋ ๋ฑ ์์ ํ์ง ์์ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์งํฉ๋๋ค.
- ๋น๋๊ธฐ ํธ์ถ ๋ฐ ๋ฏธ๋ค์จ์ด ์ฒด์ธ์์ ๋ชจ๋ธ ์ค์ผ ์ถ์
- ์ฃผ์ ์ํ, ์์ ํ์ง ์์ ์ญ์ง๋ ฌํ, ํ์ฌ ํจํค์ง์ ์์ ํ์ง ์์ ์ฌ์ฉ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ทจ์ฝ์ฑ ํจํด์ ์๋ณํฉ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๋ฅผ ์์ ์๊ฒ ํด๊ฒฐํ ์ ์๋๋ก ์์ธํ ์์ ์กฐ์ธ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ์ด ์๋ ๊ฒํ ์๋ง ์์กดํ์ง ์๊ณ ๋ ์์ ํ ์ฝ๋ฉ ๊ดํ์ ์ผ์ ์ ๋ฌด์ ํตํฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ๋ ฅํ ์ฌ์ฉ์ ์ ์ ๊ท์น ์์ฑ
๊ฐ ํ๋ก์ ํธ์๋ ๊ณ ์ ํ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค. SMART TS XL ์ ์ฐํ ๊ท์น ์ฌ์ฉ์ ์ ์๋ฅผ ์ง์ํ์ฌ ํ์ด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ๋น์ฆ๋์ค ๋ก์ง์ ๋ง์ถฐ ํ๋ก์ ํธ๋ณ ๊ท์น์ ์์ฑํฉ๋๋ค.
- ์ผ๋ฐ์ ์ธ ๋ฆฐํ ์ ๋์ด ๋ด๋ถ ์ฝ๋ฉ ํ์ค์ ์ ์ฉํฉ๋๋ค.
- ๋ช ๋ช ๊ท์น, ํด๋ ๊ตฌ์กฐ ๋ฐ ์๋น์ค ๊ณ์ธต ์ํธ ์์ฉ์ ๊ฒ์ฆํฉ๋๋ค.
- ์ผ๊ด์ฑ์ ์ํด ์ฌ๋ฌ ์ ์ฅ์์์ ๊ณต์ ๋ฐ ๋ฒ์ ๊ท์น
์ฌ์ฉ์ ์ ์ ๊ท์น ์ง์์ ํตํด ๋๊ท๋ชจ ํ๊ณผ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ํ์ง๊ณผ ์ ์ง ๊ด๋ฆฌ๋ฅผ ํ์คํํ ์ ์์ต๋๋ค.
ํ ๋ฐ ์ํฐํ๋ผ์ด์ฆ ์ง์ ๊ธฐ๋ฅ
SMART TS XL ์ ๋ฌธ์ ์ธ ์ํฌํ๋ก์ฐ์ ๋๊ท๋ชจ ์กฐ์ง์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ์๋ ์ค์บ๋์ ์ํ ์ธ๊ธฐ ์๋ CI/CD ์์คํ ๊ณผ์ ์ํํ ํตํฉ
- ๊ฐ๋ฐ์, ํ ๋ฆฌ๋ ๋ฐ ๋ณด์ ๊ด๋ฆฌ์๋ฅผ ์ํ ์ธ๋ถ์ ์ด๊ณ ์ญํ ๋ณ ๋ณด๊ณ
- ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ถ์ธ ์ถ์ , ๋ฌธ์ ์ฐ์ ์์ ์ง์ ๋ฐ ์์ ๊ด๋ฆฌ์ฉ ๋์๋ณด๋
- ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ์ ์ํ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๋ฐ ์ ์ฑ ๊ด๋ฆฌ
์ด๋ฌํ ๊ธฐ๋ฅ์ ํตํด ๋ถ์์ด ํ์ ๋ง์ถฐ ํ์ฅ๋์ด ๋ถ์ฐ๋ ์์ง๋์ด๋ง ๊ทธ๋ฃน ๊ฐ์ ํ์ ์ด ์ง์๋ฉ๋๋ค.
๊ฐ๋ฐ์ ์นํ์ ๊ฒฝํ
๊ธฐ์ ์์ค์ ๊ธฐ๋ฅ์๋ ๋ถ๊ตฌํ๊ณ , SMART TS XL ๊ฐ๋ฐ์ ์ค์ฌ์ ์ ์งํฉ๋๋ค.
- ์ฝ๋ฉ ์ค ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ํ IDE ํตํฉ
- ์ฌ์ฉ์ ์ ์ ์ํฌํ๋ก์ ๋ก์ปฌ ์ค์บ ๋ฐ ์๋ํ๋ฅผ ์ํ CLI ๋๊ตฌ
- ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์๋ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ํ ์ฆ๋ถ ๋ถ์
- ๊ฐ๋ฐ์๊ฐ ๋ ธ์ด์ฆ๋ ์คํ ์์ด ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ํด๊ฒฐํ ์ ์๋๋ก ๋๋ ๋ช ํํ๊ณ ์คํ ๊ฐ๋ฅํ ์ถ๋ ฅ
์ฌ์ธต์ ์ธ ์ ์ ๋ถ์, ๋ณด์ ์ค์ฌ ํต์ฐฐ๋ ฅ, ์ํคํ ์ฒ ์ ์ฉ ๋ฐ ์ ์ฐํ ๊ท์น ์ฌ์ฉ์ ์ ์๋ฅผ ๊ฒฐํฉํ์ฌ SMART TS XL ๋๊ท๋ชจ๋ก ๊ณ ํ์ง, ์์ ํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ Node.js ๋ฐ TypeScript ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ๊ธฐ ์ํ ํตํฉ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
์คํ ๋ค๋JS
StandardJS๋ ๋จ์ผํ๊ณ ์ผ๊ด๋ ์ฝ๋ฉ ์คํ์ผ์ ์ ์ฉํ์ฌ ๊ฐ๋ฐํ์ ๋ง์ฐฐ์ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ๋ ๋ณด์ ์ธ JavaScript ์คํ์ผ ๊ฐ์ด๋, ๋ฆฐํฐ, ๊ทธ๋ฆฌ๊ณ ํฌ๋งคํฐ์ ๋๋ค. ์ต์ํ์ ๊ตฌ์ฑ๋ง ๊ณ ๋ คํ์ฌ ์ค๊ณ๋ StandardJS๋ ์์ ๊ท์น์ ๋ํ ๋ถํ์ํ ์ค๋ณต์ ๋ฐฉ์งํ์ฌ ๋จ์์ฑ์ ์ถ๊ตฌํฉ๋๋ค. ๋์ ์ด ์ฝ๊ณ ๋๋ฆฌ ์ธ์ ๋๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ๋ค๋ ์ ์์ Node.js ๋ฐ ํ๋ฐํธ์๋ JavaScript ์ปค๋ฎค๋ํฐ์์ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค.
TypeScript ํ๋ก์ ํธ์ ๊ฒฝ์ฐ StandardJS๋ ์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ lint๋ก ํ์ฅ๋ ์ ์์ต๋๋ค. .ts ํ์ผ ํ์์ด์ง๋ง ํต์ฌ ๋์์ธ์ ์ฌ์ ํ โโJavaScript๋ฅผ ์ฐ์ ์ํฉ๋๋ค. TypeScript์ Node.js๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ํ์ ํผํฉ๋ JS/TS ์ฝ๋๋ฒ ์ด์ค์์ ๊ธฐ๋ณธ์ ์ธ ์คํ์ผ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด TypeScript๋ฅผ ํตํฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ด ํ์ ์์ด ๋จ์ผํ๊ณ ๋ ๋จ์ ์ธ JavaScript ์คํ์ผ์ ์ ์ฉํฉ๋๋ค.
- ์ผ๋ฐ์ ์ธ ์ค๋ฅ, ์ฌ์ฉ๋์ง ์๋ ๋ณ์ ๋ฐ ์๋ชป๋ ํจํด์ ๋ํ Lints ์ฝ๋
- ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์์ ๊ท์น์ด ํฌํจ๋์ด ์์ต๋๋ค.
- ์ ์ฅ ์ ์คํ์ผ์ ์ ์ฉํ๊ธฐ ์ํ CLI ํตํฉ ๋ฐ ์ฌ์ ์ปค๋ฐ ํํฌ ์ง์
- ์คํ์ผ ๋ ผ์์ ์ ๊ฑฐํ์ฌ ์ฝ๋ ๊ฒํ ๋ง์ฐฐ์ ์ค์ ๋๋ค.
StandardJS๋ ์ฌ์ฉ์ ์ ์ ์คํ์ผ ๊ตฌ์ฑ์ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ๋ฐ๋ฅด๋ ์ค๋ฒํค๋๋ฅผ ํผํ๊ณ ๊ตฌ์ฑ๋ณด๋ค ๊ท์น์ ์ ํธํ๋ ํ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์คํ์ผ์๋ง ์ง์ค
StandardJS๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ์ผ ๊ฐ์ด๋์ด์ ๋ฆฐํฐ์
๋๋ค. ์ผ๊ด๋ ํ์๊ณผ ๊ฐ๋จํ ์ฝ๋ ์ ํ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ ์ ๋์ง๋ง, ์ฌ์ธต์ ์ธ ์ ์ ๋ถ์์ ์ํํ์ง ์์ต๋๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์
์ ๋
ผ๋ฆฌ์ ๋ฒ๊ทธ, ์์ ํ์ง ์์ ํจํด ๋๋ ๊ตฌ์กฐ์ ์ค๊ณ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
2. ์ ํ๋ TypeScript ์ง์
์ปค๋ฎค๋ํฐ ํ๋ฌ๊ทธ์ธ์ ํตํด TypeScript ๋ฆฐํ
์ ์ถ๊ฐํ ์ ์์ง๋ง, StandardJS๋ TypeScript์ฉ์ผ๋ก ์ ์๋์ง ์์์ต๋๋ค. TypeScript์ ํ์
์์คํ
, ๊ณ ๊ธ ๊ตฌ๋ฌธ ๋๋ ์ปดํ์ผ ํ์ ๊ฒ์ฌ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ดํดํ์ง ๋ชปํฉ๋๋ค. ํ์
์์ ์ฑ์ ์ํด TypeScript๋ฅผ ์ฌ์ฉํ๋ ํ์ TypeScript ์ปดํ์ผ๋ฌ๋ ๋ค๋ฅธ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ TypeScript๋ฅผ ๋ณด์ํด์ผ ํฉ๋๋ค.
3. ๋ณด์ ๋ถ์ ์์
StandardJS๋ ์ฃผ์
์ํ, ์์ ํ์ง ์์ ์ง๋ ฌํ, ์์ ํ์ง ์์ API ์ฌ์ฉ๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ์ง ์์ต๋๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์
์์ ์ค์ผ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์งํ๊ฑฐ๋ ์
๋ ฅ ์ฒ๋ฆฌ๋ฅผ ๊ฒ์ฆํ ์ ์์ผ๋ฏ๋ก, ๋ณด์์ ์ ์ ์ผ๋ก ๋ค๋ฅธ ๋๊ตฌ์ ์๋ ๊ฒํ ์ ๋งก๊ฒจ์ง๋๋ค.
4. ๊ฑด์ถ์ ์ํ ์์
StandardJS๋ ํ๋ก์ ํธ ์ํคํ
์ฒ๋ ๊ณ์ธตํ ๊ท์น์ ๊ฐ์ ํ์ง ์์ต๋๋ค. ๋ชจ๋ ๊ฐ์ ๋ถ์ ์ ํ ์ข
์์ฑ์ ๋ฐฉ์งํ๊ฑฐ๋, ํด๋ฆฐ ์ํคํ
์ฒ ํจํด ์๋ฐ์ ๊ฐ์งํ๊ฑฐ๋, ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค.
5. ๊ณ ๊ธ ๋
ผ๋ฆฌ ๋๋ ์ ์ด ํ๋ฆ ๊ฒ์ฌ ์์
๋์ฑ ์ ๊ตํ ์ ์ ๋ถ์๊ธฐ์ ๋ฌ๋ฆฌ StandardJS๋ Node.js ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ด ํ๋ฆ์ด๋ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ถ์ํ ์ ์์ต๋๋ค. ๋๋ฌํ ์ ์๋ ์ฝ๋ ๊ฒฝ๋ก, ์๋์น ์์ ์กฐ๊ฑด ๋
ผ๋ฆฌ, ๋๋ ์๋ชป๋ ํ๋ก๋ฏธ์ค ์ฒ๋ฆฌ์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ ์ ์์ต๋๋ค.
6. ์ต์ํ์ ์ฌ์ฉ์ ์ ์ ๊ท์น ์ง์
StandardJS๋ ์๋์ ์ผ๋ก ๋
๋จ์ ์ด๋ฉฐ ์ฌ์ฉ์ ์ ์๊ฐ ์ ํ์ ์
๋๋ค. ์ด๋ ๊ตฌ์ฑ ์ค๋ฒํค๋๋ฅผ ์ค์ด๋ ๋ฐ๋ฉด, ํ์ด ๊ธฐ๋ณธ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ฒ์ด๋๋ ๋ด๋ถ ์ฝ๋ฉ ํ์ค์ด๋ ๋๋ฉ์ธ๋ณ ๊ท์น์ ์ ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
7. ์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ ๊ฑฐ๋ฒ๋์ค์ ์ ํฉํ์ง ์์
๋๊ท๋ชจ ํ์ ์ฝ๋ ํ์ง์ ์ํด ์์ธํ ๋ณด๊ณ , ์ถ์ธ ์ถ์ ๋ฐ ์ญํ ๊ธฐ๋ฐ ์ ์ฑ
์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. StandardJS๋ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฝ๋ ์ํ๋ฅผ ์ถ์ ํ๊ธฐ ์ํ ๋์๋ณด๋, ๊ณผ๊ฑฐ ๋ถ์ ๋๋ ๊ฑฐ๋ฒ๋์ค ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
XO
XO๋ JavaScript ๋ฐ Node.js ๋ฆฐํ ์ ๊ฐ์ํํ๋๋ก ์ค๊ณ๋ ๋ ๋ณด์ ์ธ ESLint ๋ํผ์ ๋๋ค. ๊ฐ๋ ฅํ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ๊ตฌ์ถ๋์ด ์ฌ์ฉ์ ์ง์ ๊ตฌ์ฑ ์์ด๋ ์ผ๊ด๋ ์คํ์ผ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํฉ๋๋ค. XO๋ ๋ช ํํ ๊ท์น, ์๊ฒฉํ ๋ฆฐํ , ๋น ๋ฅธ ํผ๋๋ฐฑ์ ๊ฒฐํฉํ ๋ฌด์ค์ ์ค์ ์ ์ํ๋ Node.js ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ํนํ ์ธ๊ธฐ๊ฐ ๋์ต๋๋ค.
TypeScript ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, XO๋ ํ๋ฌ๊ทธ์ธ์ ํตํด ๊ธฐ๋ณธ TypeScript ์ง์์ ์ ๊ณตํ์ฌ ํผํฉ๋ JS/TS ์ฝ๋๋ฒ ์ด์ค์์ ์ผ๊ด๋ ๋ฆฐํ ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก ํฉ๋๋ค. ํฉ๋ฆฌ์ ์ธ ESLint ๊ท์น๊ณผ ์์ ์ง์นจ์ ์ฆ์ ์ ํํ์ฌ ์์ฌ ๊ฒฐ์ ํผ๋ก๋๋ฅผ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฒฉํ๊ณ ์ ์ ๋ฆฌ๋ ESLint ๊ท์น ์ธํธ๋ฅผ ์ ์ฉํฉ๋๋ค.
- ์ต์ํ์ ์ค์ ์ผ๋ก TypeScript ๋ฆฐํ ์ ์ง์ํฉ๋๋ค.
- ์ฝ๋ ์ผ๊ด์ฑ์ ์ํ ํฉ๋ฆฌ์ ์ธ ์์ ๊ท์น์ด ํฌํจ๋์ด ์์ต๋๋ค.
- ๋น๋ ์คํฌ๋ฆฝํธ ๋๋ ์ฌ์ ์ปค๋ฐ ํํฌ์์ ๋น ๋ฅธ ํตํฉ์ ์ํ CLI๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋จ์์ฑ์ ์ถ๊ตฌํ๋ ์ค์ ๊ท๋ชจ Node.js ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค.
XO๋ ๋ณต์กํ ESLint ๊ตฌ์ฑ์ ์ ์งํ๋ ๊ฒ์ ํผํ๊ณ ๊ฐ๋ ฅํ๊ณ ์ผ๊ด๋ ๋ฆฐํ ํ์ค์ ์ ํธํ๋ ํ์ ์ด์์ ์ ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์คํ์ผ ๋ฐ ๊ตฌ๋ฌธ์๋ง ์ง์ค
XO๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋ ์คํ์ผ๊ณผ ๊ตฌ๋ฌธ์ ์ ํ์ฑ์ ๊ฐํํ๋ ๋ฆฐํฐ์
๋๋ค. ๋ฐํ์ ๋์์ ์์กดํ๋ Node.js ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๊ฐํ ๋
ผ๋ฆฌ ์ค๋ฅ, ๋น์ฆ๋์ค ๊ท์น ์๋ฐ ๋๋ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ ๊ฐ์งํ ์ ์์ต๋๋ค.
2. TypeScript์ ๋ํ ์ธ์ ๋ถ์กฑ
XO๋ TypeScript ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ESLint๋ฅผ ์ฌ์ฉํฉ๋๋ค. .ts ์ง์. ๋ง์ ํ์
๊ด๋ จ ๋ฆฐํธ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ ์ ์์ง๋ง, TypeScript ์ปดํ์ผ๋ฌ์ ํ์
๊ฒ์ฌ์ ์ง์ ํตํฉ๋์ง๋ ์์ต๋๋ค. ๊ณ ๊ธ ํ์
๊ด๊ณ, ์ ๋ค๋ฆญ ๋๋ ํ์
์ถ๋ก ์ ์ ํ์ฑ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
3. ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ ์ด ํ๋ฆ ๋ถ์ ์์
XO๋ ๋ฐ์ดํฐ๊ฐ ๋น๋๊ธฐ ํจ์, ํ๋ผ๋ฏธ์ค ๋๋ ๋ณต์กํ ์กฐ๊ฑด ๋
ผ๋ฆฌ๋ฅผ ํตํด ์ด๋ป๊ฒ ์ด๋ํ๋์ง ๋ถ์ํ ์ ์์ต๋๋ค. ๋ํ, ๊ฒ์ฆ๋์ง ์์ ์
๋ ฅ์ด ๋ฏผ๊ฐํ ์์
์ ๋๋ฌํ๊ฑฐ๋ ์ฝ๋ฐฑ์ ์๋ชป ์ฌ์ฉํ๋ ๋ฑ ๋ฐํ์๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํ์
ํ ์ ์์ต๋๋ค.
4. ๋ณด์ ๋ถ์ ๊ธฐ๋ฅ ์์
XO๋ ์ฃผ์
์ํ, ์์ ํ์ง ์์ ์
๋ ฅ ์ฒ๋ฆฌ, ์๋น์ค ๊ฐ ๋ฐ์ดํฐ ๋
ธ์ถ๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ ์ ํ์งํ์ง ์์ต๋๋ค. ๋ณด์ ์ค์ฌ ์ ์ ๋ถ์์๋ ์คํ์ผ ๋ฆฐํ
์ ๋ณด์ํ ์ ์ฉ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
5. ๊ฑด์ถ ๊ท์น ์ํ ์์
XO๋ Node.js ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ชจ๋ ๊ฒฝ๊ณ, ์ข
์์ฑ ๊ณ์ธตํ ๋๋ ๋ช
ํํ ์ํคํ
์ฒ ๊ท์น์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ํ ๊ฐ์ ธ์ค๊ธฐ ์ ํ์ด๋ ํ๋ก์ ํธ ์ ์ฒด์ ๊ตฌ์กฐ ์ค๊ณ ์ง์นจ์ ๊ฒ์ฆํ๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.
6. ์์ ESLint์ ๋นํด ์ต์ํ์ ์ฌ์ฉ์ ์ ์ ๊ท์น ์ง์
XO๋ ESLint ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ง๋ง, ๋
๋จ์ ์ธ ๋์์ธ ๋๋ฌธ์ ๊ณ ๋๋ก ๋ง์ถคํ๋ ๋ฆฐํ
๊ท์น์ ์ํ๋ ํ์๊ฒ๋ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋๋ค. ๋๋ฉ์ธ๋ณ ํ์ค์ ๋ง๊ฒ ์กฐ์ ํ๋ ค๋ฉด ์ถ๊ฐ ๊ตฌ์ฑ์ด๋ ํ๋ฆฌ์
ํฌํฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
7. ์ํฐํ๋ผ์ด์ฆ๊ธ ๊ธฐ๋ฅ ์์
XO๋ ๊ฐํธ์ฑ๊ณผ ๋ก์ปฌ ๊ฐ๋ฐ ํผ๋๋ฐฑ์ ์ํด ์ต์ ํ๋์ด ์์ต๋๋ค. ์ฌ๋ฌ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ท๋ชจ ํ์ ํ์ํ ์ค์ ์ง์ค์ ๋์๋ณด๋, ์ ์ฑ
๊ด๋ฆฌ, ์ถ์ธ ์ถ์ ๋๋ ์ญํ ๊ธฐ๋ฐ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
8. ์ ํ๋ ๋ณด๊ณ ๋ฐ CI ํตํฉ
XO๋ ํต๊ณผ/์คํจ ๋ฆฐํ
์ ์ํ CI ์์คํ
๊ณผ ํตํฉ๋์ง๋ง, ํ์ด ์ฅ๊ธฐ์ ์ธ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ๋ฐ ํ์ํ ์ ์๋ ๊ฐ์ฌ, ๊ณผ๊ฑฐ ๋ถ์ ๋๋ ์์ ๊ณํ์ ์ํ ๊ณ ๊ธ ๋ณด๊ณ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค.
JSHint
JSHint๋ ๊ฐ๋ฐ์๊ฐ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ํ์ ํ๊ณ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋ฉ ๊ท์น์ ์ค์ํ ์ ์๋๋ก ๋๊ธฐ ์ํด ๊ฐ๋ฐ๋ ๊ฐ์ฅ ์ค๋๋๊ณ ์ ์๋ ค์ง JavaScript ๋ฆฐํฐ ์ค ํ๋์ ๋๋ค. ๋จ์์ฑ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋ ์ด ๋ฆฐํฐ๋ JavaScript ์์ค ์ฝ๋์์ ์ผ๋ฐ์ ์ธ ์ค๋ฅ, ์์ ํ์ง ์์ ํจํด, ๊ทธ๋ฆฌ๊ณ ์คํ์ผ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๊ฒ์ฌํฉ๋๋ค. ์ญ์ฌ์ ์ผ๋ก JSHint๋ ํ๋ฐํธ์๋ ๋ฐ Node.js ํ๋ก์ ํธ์์ ๋ฐฐํฌ ์ ์ ๋์น๊ธฐ ์ฌ์ด ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋์์ต๋๋ค.
Node.js ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, JSHint๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํ ์ ์๋ ๊ฐ๋จํ CLI๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋จํ ์ฝ๋ฉ ๊ฐ์ด๋๋ผ์ธ์ ์ํํ๊ณ ๋น๋๊ธฐ JavaScript ์ฝ๋์์ ํํ ์ ์ง๋ฅด๋ ์ค์๋ฅผ ํผํ ์ ์๋๋ก ๋์์ค๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ๊ตฌ๋ฌธ ์ค๋ฅ์ ์ผ๋ฐ์ ์ธ JavaScript ์ค์๋ฅผ ๊ฐ์กฐํฉ๋๋ค.
- ์คํ์ผ ๊ธฐ๋ณธ ์ค์ ์ ์ ์ฉํ๊ธฐ ์ํ ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ท์น ์ธํธ๋ฅผ ์ง์ํฉ๋๋ค.
- ๋ก์ปฌ ๊ฒ์ฌ ๋ฐ CI ํ์ดํ๋ผ์ธ์ ๋ํ ๊ฐํธํ CLI ํตํฉ์ ์ ๊ณตํฉ๋๋ค.
- ์ด์ JavaScript ์ฝ๋๋ฒ ์ด์ค์์ ๋ณด๋ค ์์ ํ ์ฝ๋ฉ ํจํด์ ์ ์ฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ต์ํ์ ์ค์ ์ด๋ ์ข ์์ฑ์ผ๋ก ๊ฐ๋ณ์ต๋๋ค.
JSHint๋ ์ต์ ํด ๊ตฌ์ฑ์ ์ค๋ฒํค๋ ์์ด ๊ธฐ๋ณธ์ ์ธ ๋ฆฐํ ์ด ํ์ํ ๊ธฐ์กด Node.js ํ๋ก์ ํธ์ ํนํ ์ ์ฉํฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ํด๋์ JavaScript ๊ตฌ๋ฌธ์ผ๋ก ์ ํ๋จ
JSHint๋ ์ต์ JavaScript ๊ธฐ๋ฅ์ด ๋ง์ด ๋ฑ์ฅํ๊ธฐ ์ ์ ์ค๊ณ๋์์ต๋๋ค. ์ต์ ECMAScript ๊ตฌ๋ฌธ์ ๋ํ ๋ถ๋ถ์ ์ธ ์ง์๋ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ES ๋ชจ๋, async/await ๋๋ ๊ณ ๊ธ ๊ตฌ์กฐ ๋ถํด๋ฅผ ์ฌ์ฉํ๋ ์ต์ Node.js ํ๋ก์ ํธ์๋ ํจ๊ณผ์ ์ด์ง ์์ต๋๋ค.
2. ๋ค์ดํฐ๋ธ TypeScript ์ง์ ์์
JSHint๋ TypeScript ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ ์ ์์ต๋๋ค. Node.js ๊ฐ๋ฐ์ TypeScript๋ฅผ ๋์
ํ๋ ํ์ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์
์์ ์ฑ์ ๊ฐํํด์ผ ํ๋ฏ๋ก, ์ด๋ฌํ ์ํฌํ๋ก์์๋ JSHint๊ฐ ๋ถํ์ํด์ง๋๋ค.
3. ์์ ๋ถ์ ์ด์
JSHint๋ ์ฃผ๋ก ๊ตฌ๋ฌธ์ ์ ํ์ฑ๊ณผ ๊ฐ๋จํ ์ค๋ฅ๋ฅผ ๊ฒ์ฌํฉ๋๋ค. ์ ์ด ํ๋ฆ, ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ ์๋ฏธ๋ก ์ ๋ถ์ํ์ง ์์ต๋๋ค. ๋น๋๊ธฐ ํจํด์ด๋ ์ฝ๋ฐฑ ์ค์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ณต์กํ ๋ฒ๊ทธ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ง๋์ง ์์ต๋๋ค.
4. ๋ณด์ ์ธ์ ๋ถ์กฑ
JSHint๋ ์ฃผ์
์ํ, ์์ ํ์ง ์์ ๋ฐ์ดํฐ ์ ํ, ์
๋ ฅ ๊ฒ์ฆ ๋๋ฝ๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ ์ ์์ต๋๋ค. ํ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณด์ ์ค์ฌ์ ์ ์ฉ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
5. ๊ฑด์ถ ๊ท์น ์ํ ์์
JSHint๋ ๋ชจ๋ ๊ฒฝ๊ณ๋ ๊ณ์ธต์ ์ค๊ณ ์์น๊ณผ ๊ฐ์ ์ํคํ
์ฒ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ๋ ๊ฒ์ ์ง์ํ์ง ์์ต๋๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์
์์ ํ๋ก์ ํธ ๊ณ์ธต ๊ฐ์ ๊ธด๋ฐํ ๊ฒฐํฉ์ด๋ ์๋์น ์์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
6. ์ต์ํ์ ์ฌ์ฉ์ ์ ์ ๊ท์น ์ง์
์ต์ ๋ฆฐํ
์ํ๊ณ์ ๋น๊ตํ์ ๋ JSHint๋ ํ์ฅ์ฑ์ด ๋งค์ฐ ์ ํ์ ์
๋๋ค. ํ์ด ํ๋ก์ ํธ๋ณ ํ์ค์ด๋ ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ๋ ์ฌ์ฉ์ ์ง์ ๊ท์น์ ์ฝ๊ฒ ์ ์ํ ์ ์์ต๋๋ค.
7. IDE ํตํฉ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ์์
JSHint๋ CLI ๊ธฐ๋ฐ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง๋ง ์ต์ ํธ์ง๊ธฐ์์ ํ๋ถํ ํตํฉ์ด ๋ถ์กฑํฉ๋๋ค. VS Code์ ๊ฐ์ ํ๊ฒฝ์์ ์์
ํ๋ ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ ํธ์ง๊ธฐ ์ง์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ฆฐํฐ์ ๋นํด ๊ฒฝํ์ด ๋ ๋งค๋๋ฝ๋ค๊ณ ๋๋ ์ ์์ต๋๋ค.
8. ๊ณ ๊ธ ๋ณด๊ณ ๋๋ ํ ๊ธฐ๋ฅ ์์
JSHint๋ ๋ก์ปฌ ์ฌ์ฉ์ด๋ ๊ฐ๋จํ CI ์คํฌ๋ฆฝํธ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ๋๊ท๋ชจ ํ์ด๋ ์ฌ๋ฌ ์ ์ฅ์์ ๊ฑธ์ณ ์ฝ๋ ํ์ง์ ๊ฐํํ๊ธฐ ์ํ ๋์๋ณด๋, ๊ณผ๊ฑฐ ์ถ์ธ ๋ถ์ ๋๋ ์ ์ฑ
๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
9. ์ต์ JavaScript ํจํด์ ๋ํด ์ ์ง๋์ง ์์
JSHint๋ ์ฌ์ ํ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง, ๊ฐ๋ฐ ์๋๊ฐ ์๋นํ ๋๋ ธ์ต๋๋ค. ์ต์ JavaScript ๋ฐ Node.js ์ฝ๋ฉ ์คํ์ผ์ ๋ ์ ์ง์ํ๋ ์๋ก์ด ๋๊ตฌ๋ค์ ๋ค์ฒ์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ต์ ์ ์ ๋ถ์์๋ ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๋๋ค.
์ค ๋ํฌ
Snyk๋ ๊ฐ๋ฐ์๊ฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด ์ ๋ฐ์ ๊ฑธ์ณ ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ๊ณ ์์ ํ ์ ์๋๋ก ์ค๊ณ๋ ์ธ๊ธฐ ๋ณด์ ํ๋ซํผ์ ๋๋ค. Node.js ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์์ค ์ฝ๋์ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ(SAST)์ ์๋ํ๋ ์ข ์์ฑ ์ทจ์ฝ์ ์ค์บ๋์ด๋ผ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ณด์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Snyk๋ ๊ฐ๋ฐ์ ์ํฌํ๋ก ๋ฐ CI/CD ํ์ดํ๋ผ์ธ์ ์ง์ ํตํฉ๋์ด ํ์ด ์ํ์ ์กฐ๊ธฐ์ ํ์ ํ๊ณ ์ฅ๊ธฐ๊ฐ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
Snyk์ SAST ์์ง์ ์์ ํ์ง ์์ ํจํด์ ์ฐพ๊ธฐ ์ํด Node.js ๋ฐ TypeScript ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ๋ ๋ฐ๋ฉด ์ข
์์ฑ ์ค์บ๋๋ ๋ค์์ ํ์ธํฉ๋๋ค. package.json package-lock.json ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ค์ง ์ทจ์ฝ์ ์ ๋ํด.
์ฃผ์ ๊ธฐ๋ฅ
- ์ฃผ์ ์ํ ๋ฐ ์์ ํ์ง ์์ ์ ๋ ฅ ์ฒ๋ฆฌ์ ๊ฐ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด ์์ค ์ฝ๋๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
- ์ทจ์ฝํ npm ํจํค์ง๋ฅผ ์๋์ผ๋ก ์๋ณํ๊ณ ์์ ํ ๋ฒ์ ์ ์ ์ํฉ๋๋ค.
- ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ํด GitHub, GitLab, Bitbucket ๋ฐ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํตํฉ๋ฉ๋๋ค.
- ์ข ์์ฑ์ ์์ ํ๊ธฐ ์ํ ์์ ์ง์นจ๊ณผ ์๋ํ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ธ๋ผ์ธ ๋ณด์ ํผ๋๋ฐฑ์ ์ํ IDE ํตํฉ์ ํตํด ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ง์ํฉ๋๋ค.
- ์ทจ์ฝ์ ์ถ์ ๋ฐ ์ ์ฑ ์ํ์ ์ํ ์ค์ ์ง์ค์ ๋์๋ณด๋
Snyk๋ ๋ณด์์ ๋ํ "์ผ์ชฝ์ผ๋ก ์ด๋" ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ๋ ค๋ ํ์์ ๋๋ฆฌ ์ฌ์ฉ๋์ด ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฅํ ํ ์ผ์ฐ ๋ฌธ์ ๋ฅผ ์ฐพ์ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ๋ณด์ ์ค์ฌ, ์ผ๋ฐ ์ ์ ๋ถ์์ด ์๋
Snyk๋ ๋ณด์ ์ค์บ๋์ ์ํด ํน๋ณํ ์ค๊ณ๋์์ต๋๋ค. ์ฝ๋ ์คํ์ผ ์ ์ฉ, ๋
ผ๋ฆฌ ์ค๋ฅ ๊ฐ์ง, ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ์๋ณ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ ์ ๋ถ์ ์์
์ ์ํํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์์ญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ํ์ ์ฌ์ ํ ๋ฆฐํฐ์ ์ฝ๋ ํ์ง ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
2. ์ ํ๋ TypeScript ์ ํ ์์คํ
์ธ์
Snyk๋ TypeScript ๊ตฌ๋ฌธ์ ์ง์ํ์ง๋ง, ์ ์ ๋ถ์ ๊ธฐ๋ฅ์ TypeScript์ ๊ณ ๊ธ ํ์
์์คํ
์ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํฉ๋๋ค. TypeScript ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์ ํ๋ ์ ๋ค๋ฆญ, ๋ณต์กํ ์ธํฐํ์ด์ค ๋๋ ๋ฏธ๋ฌํ ํ์
์ ์ฝ ์กฐ๊ฑด์ ํ์
์์ ์ฌ์ฉ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
3. ๊ณ ๊ธ ์์ค์์ ์ ์ด ํ๋ฆ ๋๋ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ ์์
Snyk์ SAST๋ ์์ ํ์ง ์์ ํจํด์ ๊ฒ์ฌํ์ง๋ง ์ฌ์ธต์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ ๋ชจ๋ธ๋ง์ ์ํํ์ง ์์ต๋๋ค. ํนํ ์ฌ์ฉ์ ์
๋ ฅ์ด Node.js ๋ฐฑ์๋์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋น๋๊ธฐ ๋ก์ง์ โโํตํด ์ ํ๋๋ ๊ฒฝ์ฐ, ๋ณต์กํ ๋ค๊ธฐ๋ฅ ๋๋ ํฌ๋ก์ค ๋ชจ๋ ์ทจ์ฝ์ ์ ๋์น ์ ์์ต๋๋ค.
4. ์๋ ค์ง CVE๋ก ์ ํ๋ ์ข
์์ฑ ์ค์บ๋
Snyk์ ์ข
์์ฑ ์ค์บ๋์ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ค์ง ์ทจ์ฝ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๋ก์ปฌ ์ฝ๋๋ ๋น์ฆ๋์ค ๋ก์ง์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ฌ์ฉ์ ์ง์ ์ทจ์ฝ์ ์ ํ์งํ ์ ์์ผ๋ฉฐ, ๋ช
์์ ์ธ ํตํฉ ์์ด๋ ๋
์ ํจํค์ง๋ฅผ ๊ฐ์ฌํ ์๋ ์์ต๋๋ค.
5. ๊ฑด์ถ์ ์ํ ์์
Snyk๋ ๊ณ์ธต์ ์ํคํ
์ฒ, ๋ชจ๋ ๊ฒฝ๊ณ, ๋๋ฉ์ธ ๊ธฐ๋ฐ ๋์์ธ ๊ท์น๊ณผ ๊ฐ์ ๋์์ธ ์์น์ ์ ์ฉํ์ง ์์ต๋๋ค. ํ์ Snyk๋ฅผ ์ฌ์ฉํ์ฌ ์๋์น ์์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ฐจ๋จํ๊ฑฐ๋ Node.js ์ฝ๋๋ฒ ์ด์ค์์ ๋ช
ํํ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
6. ๊ฑฐ์ง ์์ฑ ๋ฐ ๋
ธ์ด์ฆ ๊ฐ๋ฅ์ฑ
Snyk์ ์ ์ ๋ถ์์ ๊ฐ๋ ฅํ์ง๋ง, ์คํ์ง๋ ์๋ ๊ฒํ ๊ฐ ํ์ํ ์ผ๋ฐ์ ์ธ ๋ณด์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ณด์์ ์ค์ํ๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ์ ์คํ๊ฒ ์กฐ์ ํ๊ณ ๋ถ๋ฅํ์ง ์์ผ๋ฉด ์ํฌํ๋ก ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค.
7. ์ธ์ฆ ๋ฐ ํด๋ผ์ฐ๋ ํตํฉ์ด ํ์ํฉ๋๋ค.
Snyk๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ๊ณ์ ๋ฐ ํ๋ก์ ํธ ์
๋ก๋๊ฐ ํ์ํ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋ซํผ์
๋๋ค. ์๊ฒฉํ ๋ฐ์ดํฐ ๊ฑฐ๋ฒ๋์ค ๋๋ ์คํ๋ผ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ถ ํ์ ๊ฒฝ์ฐ ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ด ์ ํ์ ์ด๊ฑฐ๋ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค.
8. ์ ์ฒด ๊ธฐ๋ฅ์ ๋ํ ๋น์ฉ ๊ณ ๋ ค ์ฌํญ
Snyk๋ ํ๋ก์ ํธ ๋ฐ ์ค์บ์ ์ ํ์ด ์๋ ๋ฌด๋ฃ ํฐ์ด๋ฅผ ์ ๊ณตํ์ง๋ง, ํ ๊ด๋ฆฌ, ์ฌ์ฉ์ ์ง์ ์ ์ฑ
, ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๋ฃ ํ๋์์๋ง ์ ๊ณต๋ฉ๋๋ค. ์ด๋ ์์ฐ์ด ๋ถ์กฑํ ์๊ท๋ชจ ํ์ด๋ ์คํ์์ค ํ๋ก์ ํธ์๋ ์ฅ๋ฒฝ์ด ๋ ์ ์์ต๋๋ค.
9. ์ ์ง ๊ด๋ฆฌ๋ ์คํ์ผ ๊ฐํ๋ฅผ ์ํด ์ค๊ณ๋์ง ์์์ต๋๋ค.
๋ณด์ ์ธ์๋ Snyk๋ ๋ณต์ก์ฑ, ์ค๋ณต, ์ฝ๋ ์
์ทจ์ ๊ฐ์ ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํฉ๋๋ค. Node.js ๋ฐ TypeScript์์ ํฌ๊ด์ ์ธ ์ ์ ๋ถ์์ ํ์ํ ๋ฆฐํฐ, ํฌ๋งคํฐ ๋๋ ์ํคํ
์ฒ ๊ฒ์ฆ ๋๊ตฌ๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค.
npm ๊ฐ์ฌ
npm Audit์ npm CLI์ ํฌํจ๋ ๋ด์ฅ ๋ณด์ ๋๊ตฌ๋ก, Node.js ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ ์ข
์์ฑ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์
ํ๊ณ ํด๊ฒฐํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. package.json package-lock.json, ๊ฒ์๋ ๋ณด์ ๊ถ๊ณ ๊ฐ ์๋ ํจํค์ง๋ฅผ ํ์ธํ๊ณ ๊ถ์ฅ๋๋ ์
๋ฐ์ดํธ๋ ์์ ์ฌํญ์ ์ ์ํฉ๋๋ค.
npm ๊ฐ์ฌ๋ npm ์ํฌํ๋ก์ ์ง์ ๋ด์ฅ๋์ด ์์ด ์ถ๊ฐ ๋๊ตฌ๋ ๋ณต์กํ ์ค์ ์์ด๋ ๋ณด์ ์ค์บ๋์ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ ๊ฐ๋ฐ์์๊ฒ ์ข ์์ฑ ์ํ์ ๋ํ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์๋ ค์ง ์ทจ์ฝ์ ์ ๋ํ ํ๋ก์ ํธ์ ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ๋ถ์ํฉ๋๋ค.
- npm์ ๊ณต๊ณต ๋ณด์ ๊ถ๊ณ ๋ฐ ์ทจ์ฝ์ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฌ๊ฐ๋ ํ๊ฐ ๋ฐ ์ ์๋ ์์ ๋จ๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- npm CLI์ ํตํฉ๋์ด ๋ก์ปฌ์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- CI ํ์ดํ๋ผ์ธ์์ ์๋ํํ์ฌ ์ค์ํ ๋ฌธ์ ๊ฐ ์๋ ๋ณํฉ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.
- ์ง์
npm audit fix์์ ํ ์ ๊ทธ๋ ์ด๋๋ฅผ ์๋์ผ๋ก ์ ์ฉํ๊ธฐ ์ํด
npm ๊ฐ์ฌ๋ ๋ง์ Node.js ํ์ ๊ธฐ๋ณธ ๋ณด์ ์์์ ํ์์ ์ธ ๋ถ๋ถ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค๋๋์๊ฑฐ๋ ์ทจ์ฝํ ์ข ์์ฑ๊ณผ ํจ๊ป ์ ๊ณต๋์ง ์๋๋ก ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ข
์์ฑ ์ทจ์ฝ์ ์๋ง ์ง์ค
npm ๊ฐ์ฌ๋ ํ์ฌ ํจํค์ง์ ์๋ ค์ง ๋ฌธ์ ๋ฅผ ํ์ธํ์ง๋ง, ํ๋ก์ ํธ ์์ฒด์ ์์ค ์ฝ๋๋ ๋ถ์ํ์ง ์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ ๋น์ฆ๋์ค ๋ก์ง, ์
๋ ฅ ์ฒ๋ฆฌ ์ค๋ฅ ๋๋ ์์ ํ์ง ์์ ์ค๊ณ ๊ฒฐ์ ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ณด์ ์ํ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
2. ๋
ผ๋ฆฌ ๋๋ ์คํ์ผ์ ์ํ ์ ์ ์ฝ๋ ๋ถ์ ์์
npm ๊ฐ์ฌ๋ ์ฝ๋ ๋ฆฐํธ(lint)๋ฅผ ์ํํ๊ฑฐ๋, ์ฝ๋ฉ ํ์ค์ ์ ์ฉํ๊ฑฐ๋, ๋ณต์ก์ฑ์ด๋ ์ค๋ณต๊ณผ ๊ฐ์ ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ํ์ธํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํ์์ ๋ณ๋์ ๋ฆฐํฐ(linter)์ ์ ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
3. TypeScript ์ ํ ์์คํ
์ธ์ ์์
npm Audit์ TypeScript ์ปดํ์ผ๋ฌ๋ ํด๋น ํ์
์์คํ
๊ณผ ํตํฉ๋์ด ์์ง ์์ต๋๋ค. TypeScript ์ฝ๋๋ฒ ์ด์ค์์ ํ์
์ค๋ฅ, ์ ๋ค๋ฆญ ์ค์ฉ ๋๋ null ํ์ธ ๋๋ฝ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
4. ์๋ ค์ง ์ทจ์ฝ์ ์ผ๋ก ์ ํ๋จ
์ด ๋๊ตฌ๋ ๊ณต๊ฐ์ ์ผ๋ก ๋ณด๊ณ ๋ ์ทจ์ฝ์ ์ ํ์ฉํฉ๋๋ค. ์ทจ์ฝ์ ์ด ์ ๊ท์ด๊ฑฐ๋, ๋ฏธ๊ณต๊ฐ์ด๊ฑฐ๋, ๋น๊ณต๊ฐ ํจํค์ง์ ์กด์ฌํ๋ ๊ฒฝ์ฐ npm ๊ฐ์ฌ๋ ์ด๋ฅผ ์๋ณํ์ง ๋ชปํฉ๋๋ค. ์ด๋ก ์ธํด ๋ณด์ ๋ฒ์์ ๊ณต๋ฐฑ์ด ์๊ธธ ์ ์์ต๋๋ค.
5. ์๋ชป๋ ์์ ๊ฐ์ ๊ฐ๋ฅ์ฑ
npm ๊ฐ์ฌ์์ ๋ฌธ์ ๊ฐ ๋ณด๊ณ ๋์ง ์์ผ๋ฉด ๊ฐ๋ฐ์๋ ํ๋ก์ ํธ๊ฐ "์์ ํ๋ค"๊ณ ๊ฐ์ ํ ์ ์์ง๋ง, ์ด๋ ์์ค ์ฝ๋์ ์ ์ ๋ถ์์ ํตํด ๋ฐ๊ฒฌํ ์ ์๋ ์ฌ์ฉ์ ์ง์ ์ฝ๋ ์ํ, ์์ ํ์ง ์์ ํจํด ๋ฐ ์๋ชป๋ ๊ตฌ์ฑ์ ๋ฌด์ํฉ๋๋ค.
6. ๊ฑด์ถ ๋๋ ๋์์ธ ๊ท์น ์ํ ์์
npm ๊ฐ์ฌ๋ ํ๋ก์ ํธ ์ํคํ
์ฒ๋ฅผ ํ๊ฐํ๊ฑฐ๋ ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ์ ์ฉํ์ง ์์ต๋๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ธด๋ฐ ๊ฒฐํฉ, ์ํ ์ข
์์ฑ ๋๋ ํด๋ฆฐ ์ํคํ
์ฒ ์๋ฐ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
7. ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ ์ด ํ๋ฆ ๋ถ์ ์์
npm ๊ฐ์ฌ๋ ์ ํ๋ฆฌ์ผ์ด์
๋ด ๋ฐ์ดํฐ ์ด๋ ๋ฐฉ์์ ๋ถ์ํ์ง ์์ต๋๋ค. ๊ฒ์ฆ๋์ง ์์ ์
๋ ฅ๊ฐ์ด ์ค์ API๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ์ ๋๋ฌํ๋ ๋ฑ ์์ ํ์ง ์์ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
8. ์ต์ํ์ ์ฌ์ฉ์ ์ ์
์ด ๋๊ตฌ๋ npm์ ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ํ์ ์ด๋ค ๊ถ๊ณ ์ฌํญ์ ๋ฌด์ํ ์ง, ์ด๋ค ๊ฐ์ฌ ์์ค์ ์ ์ฉํ ์ง ์ ์ดํ๋ โโ๊ฒ ์ธ์๋ ๊ท์น์ด๋ ์ ์ฑ
์ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋ ๊ถํ์ด ์ ํ์ ์
๋๋ค.
9. ๊ฐ๋ฐ์ IDE ํตํฉ ์์
npm ๊ฐ์ฌ๋ CLI์ CI์์ ์คํ๋์ง๋ง, ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ์ง๊ธฐ์์๋ ์ธ๋ผ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ฐ์ฌ๋ฅผ ์๋์ผ๋ก ์คํํ์ง ์๋ ํ ๊ฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
10. ๋ค๋ฅธ ๋ณด์ ๋๋ ํ์ง ๋๊ตฌ๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค.
npm ๊ฐ์ฌ๋ ์ข
์์ฑ ํ์ธ์ ํ์์ ์ด์ง๋ง, ๋ฆฐํฐ, ์ ์ ๋ถ์๊ธฐ, ๋ณด์ SAST ๋๊ตฌ ๋๋ ์ํคํ
์ฒ ์ ์ฉ ์ ํธ๋ฆฌํฐ๋ฅผ ๋์ฒดํ ์๋ ์์ต๋๋ค. ํ์ ์ ์ฒด ๋ฒ์๋ฅผ ํฌ๊ดํ๊ธฐ ์ํด ๋ค์ธต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
๋ ธ๋์ํ์ด
NodeSecure๋ Node.js ํ๋ก์ ํธ ์ข ์์ฑ์ ๋ถ์ํ์ฌ ์ ์ฌ์ ์ํ์ ํ์ ํ๋ ๋ณด์ ์ค์ฌ CLI ๋ฐ ํ๋ซํผ์ ๋๋ค. ์ค์น๋ ํจํค์ง๋ฅผ ๊ฒ์ฌํ์ฌ ์๋ ค์ง ์ทจ์ฝ์ , ๊ฒ์๋ ์ฝ๋์ ์์ ํ์ง ์์ ํจํด, ๊ทธ๋ฆฌ๊ณ ๊ณต๊ธ๋ง ์ํ์ ๋ํ๋ผ ์ ์๋ ๋ฉํ๋ฐ์ดํฐ ๋ฌธ์ ๋ฅผ ํ์งํฉ๋๋ค. ๊ถ๊ณ ์๋ง ๊ธฐ๋ฐํ ๋จ์ํ ์ทจ์ฝ์ ์ค์บ๋๊ณผ ๋ฌ๋ฆฌ, NodeSecure๋ ์ค์ ํจํค์ง ๋ด์ฉ์ ๋ถ์ํ๊ณ ํ๊ฐํ์ฌ ๋ ์ฌ์ธต์ ์ด๊ฑฐ๋ ์ด์ ์ ์๋ ค์ง์ง ์์ ์ํ์ ํฌ์ฐฉํฉ๋๋ค.
NodeSecure๋ ๋๋ ํ๋ ์ฝ๋, ์์ฌ์ค๋ฌ์ด ์คํฌ๋ฆฝํธ, ์์ ํ์ง ์์ ๊ฒ์ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ์จ๊ฒจ์ง ์ํ์ ํ์ธํ๊ธฐ ์ํด Node.js ํ๋ก์ ํธ์ npm ํจํค์ง๋ฅผ ๊ฐ์ฌํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค. ํ์ด ์ข ์์ฑ ํธ๋ฆฌ์ ์ํ์ ์ ๋ขฐ์ฑ์ ๋ ์ ํ์ ํ ์ ์๋๋ก ๋์์ค๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์๋ ค์ง ์ทจ์ฝ์ ์ ์ํด ์ค์น๋ npm ์ข ์์ฑ์ ๊ฒ์ฌํฉ๋๋ค.
- ๋๋ ํ๋ ์ถ์๋ ์ฝ๋์ ๊ฐ์ ์์ฌ์ค๋ฌ์ด ํจํด์ ์ฐพ๊ธฐ ์ํด ํจํค์ง ๋ด์ฉ์ ๋ถ์ํฉ๋๋ค.
- ์ํํ ์ค์น ํ ์คํฌ๋ฆฝํธ๋ ๋๋ฝ๋ ๋ผ์ด์ ์ค ์ ๋ณด์ ๊ฐ์ ์ํํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ๋๊ทธ๋ก ํ์ํฉ๋๋ค.
- ํ ๊ฒํ ๋ฅผ ์ํด JSON ๋ณด๊ณ ์์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ฐ์ฌ๋ฅผ ์์ฑํฉ๋๋ค.
- ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ CI ํ์ดํ๋ผ์ธ๊ณผ ํตํฉ๋๋ CLI ๋๊ตฌ
- npm ํจํค์ง ๋ฐฐํฌ๋ฅผ ์ ์ฉํ๋ ๊ณต๊ธ๋ง ๊ณต๊ฒฉ์ ๊ฐ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
NodeSecure๋ ๊ณต๊ธ๋ง ๋ณด์์ ์ฐ์ ์ํ๊ณ ๋จ์ํ ๊ถ๊ณ ์ฌํญ๋ณด๋ค ํ์ฌ ํจํค์ง์ ๋ํ ๋ณด๋ค ์ฌ์ธต์ ์ธ ๋ถ์์ ์ํ๋ Node.js ํ๋ก์ ํธ์ ํนํ ์ ์ฉํฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ข
์์ฑ์๋ง ์ง์ค
NodeSecure๋ ์ ํ๋ฆฌ์ผ์ด์
์์ฒด์ ์์ค ์ฝ๋๊ฐ ์๋ ์ค์น๋ npm ํจํค์ง๋ฅผ ๋ถ์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ Node.js ๋๋ TypeScript ์ฝ๋์์ ๋ฐ์ํ๋ ๋ฒ๊ทธ, ๋
ผ๋ฆฌ ์ค๋ฅ ๋๋ ๋ณด์ ๋ฌธ์ ๋ ๊ฐ์งํ ์ ์์ต๋๋ค.
2. TypeScript ์ ํ ๊ฒ์ฌ ๋๋ ๋ถ์ ์์
NodeSecure๋ TypeScript ์ปดํ์ผ๋ฌ ๋๋ ํ์
์์คํ
๊ณผ ํตํฉ๋์ง ์์ต๋๋ค. ํ๋ก์ ํธ ์ฝ๋์์ ํ์
์ค๋ฅ, ์์ ํ์ง ์์ ์บ์คํธ ๋๋ ๋ถ์ ์ ํ ์ ๋ค๋ฆญ ์ฌ์ฉ์ ์ฐพ์ ์ ์์ต๋๋ค.
3. ์ฝ๋ ์คํ์ผ์ด๋ ํ์ง ๊ด๋ฆฌ๊ฐ ์์
์ด ๋๊ตฌ๋ ๋ฆฐํฐ๋ ํฌ๋งคํฐ๊ฐ ์๋๋๋ค. ์ฝ๋ฉ ํ์ค์ ์ ์ฉํ๊ฑฐ๋, ์ฝ๋ ์ค๋ฉ์ ๊ฐ์งํ๊ฑฐ๋, Node.js ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์์ ์ผ๊ด๋ ์คํ์ผ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
4. ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ ์ด ํ๋ฆ ๋ถ์ ์์
NodeSecure๋ ์ ํ๋ฆฌ์ผ์ด์
๋ด ๋ฐ์ดํฐ ์ด๋ ๋ฐฉ์์ ๋ชจ๋ธ๋งํ์ง ์์ต๋๋ค. Taint ์์ค ์๋ณ, ๋ฏผ๊ฐํ ์ฑํฌ์ ๋ํ ์ฌ์ฉ์ ์
๋ ฅ ์ถ์ , ์ ์ด ํ๋ฆ ๋ถ์ ๋ฑ์ ํตํด ๋
ผ๋ฆฌ ์ทจ์ฝ์ ์ ํ์งํ ์ ์์ต๋๋ค.
5. ์ฌ์ฉ์ ์ ์ ์ฝ๋์ ๋ํ ์ ํ๋ ๋ณด์ ๊ฒ์ฌ
NodeSecure๋ ํจํค์ง ์์ค ๋ถ์์๋ ๊ฐ๋ ฅํ์ง๋ง, ์ฃผ์
์ทจ์ฝ์ , ๋ถ์ ์ ํ ์
๋ ฅ ๊ฒ์ฆ, ์๋ชป ๊ตฌ์ฑ๋ ์ธ์ฆ ๋
ผ๋ฆฌ์ ๊ฐ์ ํ๋ก์ ํธ ์์ฒด์ ์ฝ๋๋ฒ ์ด์ค์์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
6. ๊ฑด์ถ์ ์ํ ์์
NodeSecure๋ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ฑฐ๋ ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ํ, ๋ช
ํํ ์ํคํ
์ฒ ์์น์ ๋ณด์ฅํ๊ฑฐ๋ Node.js ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ์ธต ๊ฐ ๊ธด๋ฐํ ๊ฒฐํฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
7. ๊ฒฐ๊ณผ์ ๋ํ ์๋ ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค.
NodeSecure์์ ๋ฐ๊ฒฌ๋ ์์ฌ์ค๋ฌ์ด ์คํฌ๋ฆฝํธ๋ ๋๋
ํ๋ ์ฝ๋ ๋ฑ ๋ง์ ๋ถ๋ถ์ ์๋์ผ๋ก ํด์ํด์ผ ํฉ๋๋ค. ์คํ(false positive)์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ํ์ ํ๋๊ทธ๊ฐ ์ง์ ๋ ํจํค์ง๊ฐ ์ค์ ๋ก ์ํํ์ง ์ฌ๋ถ๋ฅผ ์ฌ๋ก๋ณ๋ก ํ๋จํด์ผ ํฉ๋๋ค.
8. ํ์ ๋ํ ํฌ๊ด์ ์ธ ๋ณด๊ณ ๊ฐ ์์
NodeSecure๋ ์์ธํ ๊ฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ง๋ง ๋๊ท๋ชจ ์กฐ์ง์์ ์ข
์ข
์๊ตฌ๋๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ๋์๋ณด๋, ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๋๋ ํ ์์ค์ ์ถ์ธ ์ถ์ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค.
9. npm ๋ฉํ๋ฐ์ดํฐ์ ํ์ง์ ๋ฐ๋ผ ๋ค๋ฆ
NodeSecure์ ์ผ๋ถ ๋ถ์์ ํจํค์ง ์์ฑ์๊ฐ ์ ๊ณตํ ๋ฉํ๋ฐ์ดํฐ์ ์์กดํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ถ์์ ํ๊ฑฐ๋ ๋ถ์ ํํ๋ฉด ํน์ ์ํ์ ๊ฐ์งํ๋ ๋ฅ๋ ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
10. ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋ณด์ํ์ง๋ง ๋์ฒดํ์ง๋ ์์ต๋๋ค.
NodeSecure๋ ๊ณต๊ธ๋ง ๋ณด์์ ๊ณ ๋๋ก ํนํ๋์ด ์์ต๋๋ค. ํ์ ์์ ํ ์ฝ๋ ํ์ง๊ณผ ๋ณด์ ์ ์ฉ ๋ฒ์๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ๋ฆฐํฐ, ์ ์ ๋ถ์๊ธฐ, SAST ๋๊ตฌ, ๊ทธ๋ฆฌ๊ณ ์ํคํ
์ฒ ์ ์ฉ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ ํ ํ์๋ก ํฉ๋๋ค.
์ฒดํฌ ๋งํฌ์ค
Checkmarx๋ ๊ธฐ์ ์ด ๋ฐฐํฌ ์ ์ ์์ค ์ฝ๋์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ ์ ์๋๋ก ์ง์ํ๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ(SAST) ํ๋ซํผ์ ๋๋ค. JavaScript์ TypeScript๋ฅผ ํฌํจํ ๋ค์ํ ์ธ์ด์ ํ๋ ์์ํฌ๋ฅผ ์ง์ํ๋ฉฐ, ์๊ฒฉํ ๋ณด์ ์๊ตฌ ์ฌํญ๊ณผ ๊ท์ ์ค์๊ฐ ํ์ํ ์ฐ์ ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
Node.js ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, Checkmarx๋ ์๋ฒ ์ธก JavaScript ๋ฐ TypeScript ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ ์ผ๋ฐ์ ์ธ ์ทจ์ฝ์ ๊ณผ ๊ด๋ จ๋ ํจํด์ ํ์งํฉ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ, ๋ฒ์ ์ ์ด ์์คํ ๋ฐ ๊ฐ๋ฐ์ ์ํฌํ๋ก์ ํตํฉ๋์ด ํ ์ ์ฒด์ ์์ ํ ๊ฐ๋ฐ ๊ดํ์ ๊ฐํํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์ฃผ์ ๊ฒฐํจ, ์์ ํ์ง ์์ ์ญ์ง๋ ฌํ, XSS ์ํ๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ฑ์ ํ์ธํ๊ธฐ ์ํด Node.js ๋ฐ TypeScript ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
- ์์ ํ์ง ์์ ๋ฐ์ดํฐ ์ ํ๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด ํ๋ฆ์ ๋ชจ๋ธ๋งํฉ๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ์์ ์ ์ฑ ๊ธฐ๋ฐ ๋ณด์ ๊ฒ์ดํธ๋ฅผ ์ง์ํฉ๋๋ค.
- ์ทจ์ฝ์ฑ ๊ด๋ฆฌ ๋ฐ ์์ ์ถ์ ์ ์ํ ์ค์ ์ง์ค์ ๋์๋ณด๋
- GitHub, GitLab, Jenkins, Azure DevOps ๋ฐ ๊ธฐํ ํ๋ซํผ๊ณผ ํตํฉ๋ฉ๋๋ค.
- OWASP Top 10 ๋ฐ PCI DSS์ ๊ฐ์ ํ์ค์ ๋ํ ๊ท์ ์ค์ ์ง์์ ์ ๊ณตํฉ๋๋ค.
Checkmarx๋ ๋ณด์ ์ค์บ๋์ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด์ ์ง์ ๋ด์ฅํ๊ณ ์ฝ๋ ๋ณด์์ ๋ํ ๊ฐ๋ ฅํ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ ์งํ๋ ค๋ ๋๊ท๋ชจ ์กฐ์ง์์ ์ข ์ข ์ ํ๋ฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ผ๋ฐ์ ์ธ ์ฝ๋ ํ์ง์ด ์๋ ๋ณด์์ ์ฃผ๋ก ์ด์ ์ ๋ง์ถฅ๋๋ค.
Checkmarx๋ ๋ณด์ ์ทจ์ฝ์ ์ ํ์งํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์คํ์ผ ์ง์นจ์ ์ ์ฉํ๊ฑฐ๋, ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ํ์งํ๊ฑฐ๋, ๋ณด์๊ณผ ๊ด๋ จ ์๋ ์ฝ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ต๋๋ค. ํ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ณ๋์ ๋ฆฐํฐ์ ๊ณ ํ์ง ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
2. ์ ํ๋ TypeScript ์ ํ ์์คํ
ํตํฉ
Checkmarx๋ TypeScript๋ฅผ ์ง์ํ์ง๋ง, ๋ถ์ ์์ง์ด TypeScript์ ๊ณ ๊ธ ํ์
์์คํ
์ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํฉ๋๋ค. ์ ๋ค๋ฆญ, ๋ณต์กํ ํ์
์ถ๋ก ๋๋ ํ๋ ์์ํฌ๋ณ ํ์ดํ์ ์ด๋ ค์์ ๊ฒช์ ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ์คํ์ง(false positive) ๋๋ ๋ฌธ์ ๋๋ฝ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
3. ๋๋ฆฐ ํผ๋๋ฐฑ ์ฃผ๊ธฐ
Checkmarx๋ ์ผ๋ฐ์ ์ผ๋ก CI ๋๋ ์์ฝ๋ ๊ฒ์ฌ์ ์ผ๋ถ๋ก ์คํ๋์ด ์ฝ๋๊ฐ ํธ์๋ ํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋๋ฆฐ ํผ๋๋ฐฑ ๋ฃจํ๋ ์ฝ๋ ์์ฑ ์ ๋ฌธ์ ์ ์ ์๋ ค์ฃผ๋ IDE ํตํฉ ๋๊ตฌ์ ๋นํด ๊ฐ๋ฐ์์ ๋์
๋ฅ ์ ๋ฎ์ถ ์ ์์ต๋๋ค.
4. ๋ณต์กํ ๊ตฌ์ฑ ๋ฐ ์จ๋ณด๋ฉ
Node.js ๋ฐ TypeScript ํ๋ก์ ํธ์ Checkmarx๋ฅผ ์ค์ ํ๋ ค๋ฉด ์๋นํ ์ด๊ธฐ ๊ตฌ์ฑ์ด ํ์ํ ์ ์์ต๋๋ค. ๊ฒ์ฌ ๊ท์น, ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ฐ ํ์ดํ๋ผ์ธ ํตํฉ์ ์กฐ์ ํ๋ ค๋ฉด ์ ๋ด ๋ณด์ ์์ง๋์ด๋ง ์๊ฐ์ด ํ์ํ ์ ์์ต๋๋ค.
5. ๋น๋ณด์ ๋ฌธ์ ์ ๋ํ ์ ํ๋ ๋ณด์ฅ
Checkmarx๋ ๋ชจ๋ ๊ฒฝ๊ณ๋ ๋๋ฉ์ธ ๊ณ์ธตํ์ ๊ฐ์ ์ํคํ
์ฒ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋ฆฐ ์ํคํ
์ฒ ์๋ฐ์ ๊ฐ์งํ๊ฑฐ๋ ์ผ๊ด๋ ํ๋ก์ ํธ ์ค๊ณ ์์น์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
6. ๊ฐ๋ฐ์ ๊ต์ก์ด ํ์ํฉ๋๋ค
Checkmarx ๊ฒฐ๊ณผ๋ฅผ ํด์ํ๋ ค๋ฉด ์คํ์ง๋ฅผ ์ ๋ณํ๊ณ ๋ณด์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํ์
ํ๊ธฐ ์ํ ์ ๋ฌธ ์ง์์ด ํ์ํ ์ ์์ต๋๋ค. ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก์ ์ต์ํ์ง ์์ ๊ฐ๋ฐ์๋ ์ถ๊ฐ ์ง์นจ ์์ด ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์กฐ์น๋ฅผ ์ทจํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค.
7. ๋น์ฉ ๋ฐ ๋ผ์ด์ ์ฑ ๋ณต์ก์ฑ
Checkmarx๋ ๊ธฐ์
์ฉ ๊ฐ๊ฒฉ ๋ชจ๋ธ์ ๊ฐ์ถ ์์ฉ ํ๋ซํผ์
๋๋ค. ์๊ท๋ชจ ํ์ด๋ ์คํํธ์
์ ํนํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ด๋ ํตํฉ์ด ํ์ํ ๊ฒฝ์ฐ ๋น์ฉ์ด ๋ถ๋ด์ค๋ฌ์ธ ์ ์์ต๋๋ค.
8. ์ฌ์ฉ์ ์ ์ ๊ท์น ์์ฑ์ ๋ํ ์ ์ฐ์ฑ์ด ๋จ์ด์ง
Checkmarx๋ ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ํ์ง๋ง, ์ฌ์ฉ์ ์ง์ ๊ท์น์ ๋ง๋ค๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ค๋ฉด ์์ฒด ์ฟผ๋ฆฌ ์ธ์ด์ ๋ด๋ถ ๋๊ตฌ ๊ตฌ์กฐ๋ฅผ ์ตํ์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ ์กฐ์ง๋ณ ๋ณด์ ์ ์ฑ
์ ์ํํ๋ ค๋ ํ์๊ฒ ์ฅ์ ๋ฌผ์ด ๋ ์ ์์ต๋๋ค.
9. ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์์ ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
๋๊ท๋ชจ Node.js ๋ชจ๋
ธ๋ ํฌ๋ ์ข
์์ฑ์ด ๋ง์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์ ์คํ ํ๋๊ณผ ์ฆ๋ถ ์ค์บ๋ ์ ๋ต ์์ด๋ ์ค์บ์ ๋ง์ ๋ฆฌ์์ค๊ฐ ํ์ํ๊ณ ๋๋ฆด ์ ์์ต๋๋ค.
10. ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ํ ์ธ๋ถ ํตํฉ์ ์์กด
Checkmarx๋ ์ ๋ฐ์ ์ธ DevSecOps ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ง๋ง, ๊ฐ๋ฐ์ ์ํฌํ๋ก ํตํฉ์ ์ํด์๋ ์ธ๋ถ ํตํฉ์ ์์กดํฉ๋๋ค. ๋ฒ์ ์ ์ด, CI/CD, IDE์์ ๊ธด๋ฐํ ํตํฉ์ด ์๋ค๋ฉด ๋ณด์ ํผ๋๋ฐฑ์ด ๋ถ์ฐ๋์ด ์ ์ํ ์กฐ์น๊ฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค.
์ ๊ทธ๋
Semgrep์ ์ฝ๋ ํจํด์ ์๋ณํ๊ณ , ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ๊ณ , ํจํด ๊ธฐ๋ฐ ์ค์บ๋์ ํตํด ์ฝ๋ ํ์ง์ ํฅ์์ํค๋๋ก ์ค๊ณ๋ ์ ์ฐํ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. JavaScript์ TypeScript๋ฅผ ํฌํจํ ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๋ฉฐ, ๊ฐ๋จํ YAML ํ์์ผ๋ก ์์ฑ๋ ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ๊ท์น์ผ๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค.
Semgrep์ ์ค์บ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์ ์ํฌํ๋ก์ ์ง์ ๋ด์ฅํ๊ณ , ์์ ํ ์ฝ๋ฉ ๊ดํ์ ๊ฐํํ๋ฉฐ, ์ฌ๋ฌ ์ ์ฅ์์์ ์ผ๊ด๋ ์ฝ๋ ํ์ค์ ์ ์งํ๋ ค๋ ๋ณด์ ๋ฐ ๊ฐ๋ฐ ํ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋ก์ปฌ์์ CI ํ์ดํ๋ผ์ธ์ ํตํด ์คํํ ์ ์์ผ๋ฉฐ, ์กฐ๊ธฐ ํผ๋๋ฐฑ์ ์ํด ํ ๋ฆฌํ์คํธ์ ํตํฉํ ์๋ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- JavaScript, TypeScript ๋ฐ ๊ธฐํ ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ํ ํจํด ๊ธฐ๋ฐ ์ ์ ๋ถ์
- ๋ณด์ ๋ฌธ์ , ์ฝ๋ ํ์ง ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ๋ด์ฅ ๊ท์น ์ธํธ
- ํ๋ก์ ํธ๋ณ ๊ฒ์ฌ๋ฅผ ์ํ ์ง๊ด์ ์ธ YAML ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ฌ์ฉ์ ์ ์ ๊ท์น ์์ฑ
- ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ CI/CD ์๋ํ์ ์ ํฉํ ๋น ๋ฅธ ์คํ
- GitHub, GitLab, Bitbucket ๋ฐ ๊ธฐํ ๊ฐ๋ฐ ํ๋ซํผ๊ณผ์ ํตํฉ
- Semgrep Cloud๋ฅผ ํตํ ํ์ฉ ์ค์ ๊ด๋ฆฌ ๋ฐ ๋ณด๊ณ
Semgrep์ Node.js ํ๋ก์ ํธ์์ ์์ ํ์ง ์์ ์ฝ๋ ํจํด์ ํ์งํ๊ณ , ๋ด๋ถ ํ์ค์ ์ ์ฉํ๊ณ , ๊ฒํ ๋ฐ ๋น๋ ์ค์ ์คํ ๊ฐ๋ฅํ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ๋ค์ดํฐ๋ธ ํ์
์์คํ
ํตํฉ ์์
Semgrep์ TypeScript ๊ตฌ๋ฌธ์ ์ง์ํ์ง๋ง, TypeScript ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์
์ ํ์ธํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์
๊ด๊ณ, ๊ณ ๊ธ ์ ๋ค๋ฆญ ๋๋ ๋ณต์กํ ํ์
์ถ๋ก ์ ์์กดํ๋ ๋ฌธ์ ๋ฅผ ํ์
ํ๋ ๋ฅ๋ ฅ์ด ์ ํ๋ฉ๋๋ค.
2. ๊น์ ์๋ฏธ ์ดํด ์์ด ํจํด ๋งค์นญ
Semgrep์ AST ํจํด ๋งค์นญ์ ํตํด ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ์ง๋ง, ์ ์ด ํ๋ฆ์ด๋ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ ํ ๋งฅ๋ฝ์ผ๋ก ๋ชจ๋ธ๋งํ์ง๋ ์์ต๋๋ค. ์ฌ๋ฌ ํจ์๋ ํ์ผ์ ๊ฑธ์ณ ๋ณ์๋ฅผ ์ถ์ ํด์ผ ํ๋ ์ทจ์ฝ์ ์ด๋ ๋
ผ๋ฆฌ ์ค๋ฅ๋ฅผ ๋์น ์ ์์ต๋๋ค.
3. ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ค์ผ ๋ถ์ ์์
Semgrep์ ์ ๋ขฐํ ์ ์๋ ์
๋ ฅ์ด ๋ฏผ๊ฐํ ์์
์ ๋๋ฌํ๋ ๊ฒฝ๋ก๋ฅผ ํ์
ํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ํ๋ ๋ฐฉ์์ ์ถ์ ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๋ ค๋ฉด ์ข
์ข
์ค์ผ ๋ถ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ ์ฉ SAST ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
4. ์ ํ๋ ๊ฑด์ถ์ ์ํ
Semgrep์ ์ฌ์ฉํ๋ฉด ํน์ ๊ฐ์ ธ์ค๊ธฐ ํจํด์ ๋ํ ๊ท์น์ ์์ฑํ ์ ์์ง๋ง Node.js ํ๋ก์ ํธ์์ ๊ณ์ธต์ ์ํคํ
์ฒ๋ ๋ณต์กํ ์ข
์์ฑ ๊ฒฝ๊ณ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์ง์์ด ๋ถ์กฑํฉ๋๋ค.
5. ๊ฑฐ์ง ์์ฑ ๋๋ ๊ฑฐ์ง ์์ฑ์ ๊ฐ๋ฅ์ฑ
Semgrep์ ํจํด ๋งค์นญ์ ์ฌ์ฉ์ ์ ์ ๊ท์น์ ์์กดํ๊ธฐ ๋๋ฌธ์, ์๋ชป ์์ฑ๋๊ฑฐ๋ ์ง๋์น๊ฒ ๊ด๋ฒ์ํ ๊ท์น์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์์ฑํ๊ฑฐ๋ ์ค์ํ ๋ฌธ์ ๋ฅผ ๋์น ์ ์์ต๋๋ค. ์์ ์ ์ธ ๊ท์น ์ธํธ๋ฅผ ์ ์งํ๋ ค๋ฉด ์ ์คํ ์ค๊ณ์ ์ง์์ ์ธ ํ๋์ด ํ์ํฉ๋๋ค.
6. ํ๋ก์ ํธ๋ณ ๊ฒ์ฌ๋ฅผ ์ํด ์๋ ๊ท์น ์์ฑ์ด ํ์ํฉ๋๋ค.
Semgrep์ ๊ฐ๋ ฅํ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ํ์ด ๋๋ฉ์ธ๋ณ ๋ก์ง ๋ฐ ๋ด๋ถ ์ ์ฑ
์ ๋ํ ์์ฒด ๊ท์น์ ๋ง๋ค๊ณ ์ ์งํ๋ ๋ฐ ์๊ฐ์ ํฌ์ํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋๊ตฌ๋ฅผ ์์ ํ ๋์
ํ๋ ๋ฐ ๋๋ ์ค๋ฒํค๋๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
7. ๋ณต์กํ ํ๋ ์์ํฌ์ ๋ํ ์ ํ๋ ๊ธฐ๋ณธ ์ ์ฉ ๋ฒ์
๊ณ ๊ธ ํจํด์ด๋ ๊ณ ๋์ ์ถ์ํ๋ฅผ ์ฌ์ฉํ๋ Node.js ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ, Semgrep์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ๊ธฐ ์ํ ๋ง์ถคํ ๊ท์น์ ์๊ตฌํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ์ปค๋ฎค๋ํฐ ๊ท์น์ ๋ชจ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ง์ง ์์ ์ ์์ต๋๋ค.
8. ์คํ์ผ์ด๋ ์์ ์ ์ฉ์ ์ํด ์ค๊ณ๋์ง ์์์ต๋๋ค.
Semgrep์ ESLint๋ Prettier์ ๊ฐ์ ๋ฆฐํฐ๋ ํฌ๋งทํฐ๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค. ํ์ TypeScript ๋ฐ JavaScript ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ฝ๋ฉ ์คํ์ผ๊ณผ ํฌ๋งท ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ ํ ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
9. ์ ์ฒด ๋ณด์ ๊ท์ ์ค์ ๋ณด๊ณ ์์
Semgrep์ ๋ณด์ ๋ฌธ์ ๋ฐ๊ฒฌ์ ์ ์ฉํ์ง๋ง, ์๋ฒฝํ ๋ณด์ ๊ฑฐ๋ฒ๋์ค ํ๋ซํผ์ ์๋๋๋ค. ์ผ๋ถ ๊ธฐ์
ํ๊ฒฝ์์ ๊ธฐ๋๋๋ ์ ์ฑ
๊ด๋ฆฌ, ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด ๋๋ ๊ท์ ์ค์ ๋์๋ณด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
10. ํจ๊ณผ์ ์ธ ์ฌ์ฉ์ ์ํด์๋ ๊ฐ๋ฐ์ ๊ต์ก์ด ํ์ํฉ๋๋ค.
Semgrep์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๊ฐ๋ฐ์์ ๋ณด์ ํ์ ๊ท์น ๊ตฌ๋ฌธ์ ๋ฐฐ์ฐ๊ณ , AST ํจํด์ ์ดํดํ๊ณ , ๊ฐ๋ฐ์์๊ฒ ๊ด๋ จ ์๋ ๊ฒฐ๊ณผ๋ก ๊ณผ๋ถํ๋ฅผ ์ฃผ์ง ์๊ณ ๊ฒ์ฌ๋ฅผ ์ํฌํ๋ก์ ํตํฉํ๊ธฐ ์ํ ์ ๋ต์ ๊ฐ๋ฐํด์ผ ํฉ๋๋ค.
ํด๋ฆฌ๋.js
Clinic.js๋ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ํน๋ณํ ๊ฐ๋ฐ๋ ๊ฐ๋ ฅํ ์ฑ๋ฅ ํ๋กํ์ผ๋ง ๋ฐ ์ง๋จ ๋๊ตฌ ๋ชจ์์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ , ๋ณ๋ชฉ ํ์์ ํ์ ํ๊ณ , ๋ถํ ๋ฐ์ ์ ์๋ฒ ๋์์ ์ต์ ํํ ์ ์์ต๋๋ค. Clinic.js๋ CPU ์ฌ์ฉ๋, ์ด๋ฒคํธ ๋ฃจํ ์ง์ฐ, ๋ฉ๋ชจ๋ฆฌ ๋์, ๋น๋๊ธฐ ํธ์ถ ํจํด์ ๋ํ ์๊ฐ์ ๋ณด๊ณ ์์ ๊ณ ๊ธ ๋ถ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ Node.js ์๋น์ค์์ ํ๋ก๋์ ํ๊ฒฝ๊ณผ ์ ์ฌํ ๋ฌธ์ ๋ฅผ ์ง๋จํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
์ด ์ ํ๊ตฐ์๋ Doctor, Flame, Bubbleprof, Heap Profiler์ ๊ฐ์ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ Node.js ํ๋ก์ธ์ค์ ๋ฐํ์ ์ฑ๋ฅ์ ๋ํ ์ ๋ฌธ์ ์ธ ๋ทฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- CPU ํ๋กํ์ ๊ธฐ๋กํ๊ณ ์๊ฐํํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ฐพ์ต๋๋ค.
- ์ฐจ๋จ ์์ ์ ๊ฐ์งํ๊ธฐ ์ํด ์ด๋ฒคํธ ๋ฃจํ ์ง์ฐ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- Bubbleprof๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ์ฝ์ ์ฒด์ธ์ ๋ํ ๋น๋๊ธฐ ์์ ์ ๋ถ์ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ถ์ ํ์ฌ ๋์๋ฅผ ๋ฐ๊ฒฌํฉ๋๋ค.
- ๋ก์ปฌ ๋ฐ ํ๋ก๋์ ํ๊ฒฝ์ ์ํ CLI ๊ธฐ๋ฐ ์ํฌํ๋ก
- ๊ทผ๋ณธ ์์ธ ๋ถ์์ ๋๊ธฐ ์ํด ๋ํํ ๋ณด๊ณ ์๋ฅผ ์์ฑํฉ๋๋ค.
Clinic.js๋ ์๋ฒ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์ํํ ํ๋ก๋์ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅํ๋ ค๋ Node.js ๊ฐ๋ฐ์์ ์ด์ ํ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ ์ ๋ถ์์ด ์๋ ๋ฐํ์ ํ๋กํ์ผ๋ง์ ์ํด ์ค๊ณ๋จ
Clinic.js๋ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์๋๋๋ค. ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํด์ผ ํฉ๋๋ค. ์คํ ์์ด๋ ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ ์ ์์ผ๋ฉฐ, TypeScript ๋๋ JavaScript ํ์ผ์ ์ฝ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
2. ์ ํ ๊ฒ์ฌ ๋๋ ๋ฆฐํ
๊ธฐ๋ฅ ์์
Clinic.js๋ TypeScript ์ ํ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ฑฐ๋, ์ฝ๋ฉ ํ์ค์ ์ ์ฉํ๊ฑฐ๋, ์คํ์ผ ์ผ๊ด์ฑ์ ํ์ธํ์ง ์์ต๋๋ค. ์ฝ๋ ์ ํ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์์ด ๋ฆฐํฐ๋ TypeScript ์ปดํ์ผ๋ฌ๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค.
3. ๋ณด์ ์ทจ์ฝ์ ๊ฐ์ง ์์
Clinic.js๋ ์ฃผ์
์ํ, ๊ฒ์ฆ๋์ง ์์ ์
๋ ฅ, ์์ ํ์ง ์์ ์ญ์ง๋ ฌํ์ ๊ฐ์ ๋ณด์ ๊ฒฐํจ์ ์๋ณํ๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. ๋ณด์ ๊ฒ์ฌ๋ ์ ์ฉ SAST ๋๋ ์ข
์์ฑ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
4. ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ ์ด ํ๋ฆ ๊ฒ์ฆ ์์
Clinic.js๋ ๋ฐํ์ ํธ์ถ ๊ทธ๋ํ๋ฅผ ์๊ฐํํ์ง๋ง, ๋ฐ์ดํฐ ์ด๋ ๋ฐฉ์์ด๋ ์ ์ด ํ๋ฆ์ด ์ค๊ณ ๊ธฐ๋์น๋ฅผ ์ถฉ์กฑํ๋์ง ์ฌ๋ถ๋ฅผ ์ ์ ์ผ๋ก ๋ถ์ํ์ง ์์ต๋๋ค. ์คํ๋์ง ์์ ๊ฒฝ๋ก์์ ๋
ผ๋ฆฌ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
5. ์ ํ๋ ๊ฑด์ถ์ ํต์ฐฐ๋ ฅ
Clinic.js๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ณด๋ค๋ ๋ฐํ์ ์ฑ๋ฅ ์งํ์ ์ค์ ์ ๋ก๋๋ค. ์ฝ๋๋ฒ ์ด์ค์์ ์ํคํ
์ฒ ๊ท์น, ๋ชจ๋ ๊ฒฝ๊ณ ๋๋ ๊ณ์ธตํ ์์น์ ๊ฐ์ ํ์ง ์์ต๋๋ค.
6. ์ข
์์ฑ ๋๋ ๊ณต๊ธ๋ง ๋ถ์ ์์
์ด ๋๊ตฌ๋ npm ํจํค์ง์ ์๋ ค์ง ์ทจ์ฝ์ , ๋ผ์ด์ ์ค ์ํ ๋๋ ๊ณต๊ธ๋ง ๊ณต๊ฒฉ์ ํ๊ฐํ์ง ์์ต๋๋ค. ์ข
์์ฑ ์์ ์ ์ํด npm Audit์ด๋ NodeSecure์ ๊ฐ์ ๋๊ตฌ๋ฅผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
7. ๋ํ์ ์์
๋ถํ๊ฐ ํ์ํฉ๋๋ค.
Clinic.js์ ํต์ฐฐ๋ ฅ์ ํ๋กํ์ผ๋ง์ ์ฌ์ฉ๋๋ ํธ๋ํฝ์ด๋ ์ํฌ๋ก๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์๋๋ฆฌ์ค๊ฐ ๋๋ฝ๋๊ฑฐ๋ ๋ํ์ฑ์ด ๋ถ์กฑํ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์ง ์์ ์ ์์ต๋๋ค.
8. ์์ฐ์์์ ์ ์ฌ์ ์ฑ๋ฅ ์ํฅ
์์ธํ ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ฉด ๋ผ์ด๋ธ ์์คํ
์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด์ ํ๊ฒฝ์์ ์์ ํ ๋ชจ๋๋ฅผ ์ ๊ณตํ์ง๋ง, ์ด์ ํ๊ฒฝ์์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ฉ์์๊ฒ ๋ฏธ์น๋ ์ํฅ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ์คํ ๊ณํ์ด ํ์ํฉ๋๋ค.
9. CI ์ ์ ๊ฒ์ฌ์ ํตํฉ๋์ง ์์
Clinic.js๋ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ CI ํ์ดํ๋ผ์ธ์ ๋น๋๊ฐ ์คํจํ๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. ์ฃผ๋ก ์๋ ์์
์ด๋ ๋ก์ปฌ ์ฑ๋ฅ ์กฐ์ฌ์ ์ฌ์ฉ๋ฉ๋๋ค.
10. ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํฉ๋๋ค.
Clinic.js๋ ๋ฐํ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ดํดํ๊ณ ํด๊ฒฐํ๋ ๋ฐ๋ ๋งค์ฐ ์ ์ฉํ์ง๋ง Node.js ๋ฐ TypeScript ํ๋ก์ ํธ์์ ์ ๋ฐ์ ์ธ ์ฝ๋ ํ์ง, ๋ณด์ ๋๋ ์ํคํ
์ฒ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ์๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๋ฑ๋ CI
Lighthouse CI๋ ์ง์์ ํตํฉ ์ํฌํ๋ก์ ์ผ๋ถ๋ก Google Lighthouse ๊ฐ์ฌ๋ฅผ ์คํํ๋ ์๋ํ ๋๊ตฌ์ ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ, ์ ๊ทผ์ฑ, ๋ชจ๋ฒ ์ฌ๋ก, SEO ๋ฐ ์ ์ง์ ์ธ ์น ์ฑ ๊ท์ ์ค์๋ฅผ ํ๊ฐํฉ๋๋ค. Lighthouse CI๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฆฌํ์คํธ, ๋ฐฐํฌ ๋ฐ ํ๋ก๋์ ์ฌ์ดํธ์์ ์ด๋ฌํ ๊ฐ์ฌ๋ฅผ ์๋ํํ์ฌ ์ผ๊ด๋๊ณ ๊ณ ํ์ง์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
Lighthouse ์์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก Chrome DevTools์์ ์๋ ํ ์คํธ์ ์ฌ์ฉ๋์ง๋ง Lighthouse CI๋ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ์ ์๋ฅผ ๋น๊ตํ๊ณ ์ฑ๋ฅ ์์ฐ์ ์ ์ฉํ์ฌ ์๋ํ๋ ํ์ดํ๋ผ์ธ์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์ผ๊ด๋ ํ ์คํธ๋ฅผ ์ํด CI ํ์ดํ๋ผ์ธ์์ Lighthouse ๊ฐ์ฌ๋ฅผ ์๋ํํฉ๋๋ค.
- ์ฑ๋ฅ, ์ ๊ทผ์ฑ, SEO ๋ฑ ์ฃผ์ ์ ์์ ๋ณํ๋ฅผ ์ถ์ ํฉ๋๋ค.
- ๊ฐ์ฌ๊ฐ ์ ์๋ ์๊ณ๊ฐ ์๋๋ก ๋จ์ด์ง๋ฉด ๋น๋๊ฐ ์คํจํฉ๋๋ค.
- GitHub Actions, GitLab CI, CircleCI ๋ฐ ๊ธฐํ ์ผ๋ฐ์ ์ธ CI ๋๊ตฌ๋ฅผ ์ง์ํฉ๋๋ค.
- ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฌ์ดํธ ํ์ง์ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด ์ฐจ์ด์ ๋ฐ ๊ณผ๊ฑฐ ์ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ํ๊ณผ ๋ฐฐํฌ ์ ๋ฐ์ ๊ฑธ์ณ ์ฑ๊ณผ ์์ฐ์ ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Lighthouse CI๋ ๋น ๋ฅด๊ณ ์ ๊ทผ์ฑ์ด ๋ฐ์ด๋๊ณ ์ต์ ํ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์งํ๊ณ ์ ํ๋ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์์ Node.js ๊ธฐ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ , SPA, PWA๋ฅผ ๊ตฌ์ถํ๋ ํ ์ฌ์ด์์ ํนํ ์ธ๊ธฐ๊ฐ ๋ง์ต๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ๋ฐฐํฌ๋ ์น ์ถ๋ ฅ์ ์ง์ค
Lighthouse CI๋ ์์ค ์ฝ๋๊ฐ ์๋ ๋ ๋๋ง๋ ์น์ฌ์ดํธ๋ฅผ ํ๊ฐํฉ๋๋ค. TypeScript ๋๋ JavaScript ํ์ผ์ ๋ฒ๊ทธ, ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋๋ ๋ณด์ ๊ฒฐํจ์ ์ง์ ๋ถ์ํ ์๋ ์์ต๋๋ค.
2. ์ ํ ๊ฒ์ฌ ๋๋ ๋ฆฐํ
์์
Lighthouse CI๋ TypeScript ์ ํ์ด๋ JavaScript ์คํ์ผ ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๋ฅด์ง ์์ต๋๋ค. ํ์ง๋ง ํ์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ณ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ ํ ๋ฆฐํฐ์ ์ปดํ์ผ๋ฌ๊ฐ ํ์ํฉ๋๋ค.
3. ๋ณด์ ์ ์ ๋ถ์ ์์
Lighthouse์๋ ํค๋์ HTTPS์ ๋ํ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ๋ณด์ ๊ฒ์ฌ๊ฐ ํฌํจ๋์ด ์์ง๋ง, ์ฃผ์
์ํ, ์์ ํ์ง ์์ ์
๋ ฅ ์ฒ๋ฆฌ ๋๋ Node.js API์ ์์ ํ์ง ์์ ์ฌ์ฉ๊ณผ ๊ฐ์ ์ฝ๋ ์์ค์ ์ทจ์ฝ์ ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
4. ์ฝ๋ ํ์ง์ด๋ ๋
ผ๋ฆฌ ๊ฒ์ฆ์ด ์์
Lighthouse CI๋ ๋ฐฑ์๋ Node.js ๋๋ TypeScript ์๋น์ค์ ๋ก์ง ๋ฒ๊ทธ, ์ฝ๋ ์ค๋ฉ, ๋๋ ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ธก ์ฑ๋ฅ๊ณผ ๋ ๋๋ง๋ ํ์ด์ง์ ํ์ง๋ง ํ๊ฐํฉ๋๋ค.
5. ๊ฑด์ถ ๊ท์น ์ํ ์์
Lighthouse CI๋ ํ๋ก์ ํธ ๊ตฌ์กฐ, ๋ชจ๋ ๊ฒฝ๊ณ ๋๋ ํด๋ฆฐ ์ํคํ
์ฒ ์์น์ ์ดํดํ์ง ๋ชปํฉ๋๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ ๊ณ์ธตํ๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
6. ๋ฐฐํฌ ๋๋ ๋น๋ ์ถ๋ ฅ์ด ํ์ํฉ๋๋ค.
๊ฐ์ฌ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ๋ ์ฌ์ดํธ ๋๋ URL์์ ์ ๊ณต๋๋ ๋ก์ปฌ ๋น๋์ ๋ํด ์คํ๋ฉ๋๋ค. ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์คํํ์ง ์์ผ๋ฉด ์ ์ฅ์์ ๋น๋๋์ง ์์ ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
7. ์์ ๋ฐฑ์๋ ์๋น์ค์ ์ ํ๋ ๊ฐ์น
์ฌ์ฉ์ ์ธํฐํ์ด์ค๊ฐ ์๋ ์์ ์๋ฒ ์ธก API์ธ Node.js ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, Lighthouse CI๋ ๊ด๋ จ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค. Lighthouse CI์ ๊ฐ์น๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ํ๋ฐํธ์๋๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ง์ค๋์ด ์์ต๋๋ค.
8. TypeScript ์ปดํ์ผ๋ฌ์์ ํตํฉ ์์
Lighthouse CI๋ TypeScript ์ธ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์
์ค๋ฅ, ๋ถ์ ์ ํ ํ์
์ฌ์ฉ ๋๋ ๋๋ฝ๋ ํ์
์ ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
9. ์ข
์์ฑ ๋ณด์์ ์ํด ์ค๊ณ๋์ง ์์
Lighthouse CI๋ npm ํจํค์ง์ ์๋ ค์ง ์ทจ์ฝ์ , ์ค๋๋ ์ข
์์ฑ ๋๋ ๋ผ์ด์ ์ค ์ค์ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ์ง ์์ต๋๋ค. ํ์์๋ ๊ณต๊ธ๋ง ๋ณด์์ ์ํด npm Audit์ด๋ Snyk์ ๊ฐ์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
10. ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํฉ๋๋ค.
Lighthouse CI๋ ๋ฆฐํฐ, ์ ์ ๋ถ์๊ธฐ, SAST ๋๊ตฌ, ์ข
์์ฑ ๊ฒ์ฌ๊ธฐ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. Node.js ๋ฐ TypeScript ์ฝ๋๋ฒ ์ด์ค์ ์ ์ ๋ถ์๋ณด๋ค๋ ํด๋ผ์ด์ธํธ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ค์ ์ ๋ก๋๋ค.
๋งค์ง
Madge๋ JavaScript ๋ฐ TypeScript ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ์ฌ ๋ชจ๋ ์ข ์์ฑ์ ์๊ฐ์ ์ผ๋ก ๊ทธ๋ํ๋ก ์์ฑํ๋ ์ธ๊ธฐ CLI ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด ๋๊ตฌ๋ฅผ ํตํด ๋ชจ๋์ ์ํธ ์ฐ๊ฒฐ ๋ฐฉ์์ ์ดํดํ๊ณ , ์ํ ์ข ์์ฑ์ ๊ฐ์งํ๊ณ , ๋๊ท๋ชจ Node.js ํ๋ก์ ํธ์์ ์ ์ฌ์ ์ธ ์ํคํ ์ฒ ๋ฌธ์ ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค. Madge๋ ๊ฐํธํ ํตํฉ, ๋ช ํํ ์ถ๋ ฅ, ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์จ๊ฒจ์ง ๋ณต์ก์ฑ์ ๋๋ฌ๋ด๋ ๊ธฐ๋ฅ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
TypeScript๋ฅผ ์ฌ์ฉํ๋ Node.js ํ์ ๊ฒฝ์ฐ, Madge๋ ์ต์ ๊ตฌ๋ฌธ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๊ฐ์ ธ์ค๊ธฐ์ ๋ด๋ณด๋ด๊ธฐ๊ฐ ํ๋ก์ ํธ์ ์ ์ฒด ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ํ์ฑํ๋ ๋ฐฉ์์ ๋ํ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- JavaScript ๋ฐ TypeScript ํ๋ก์ ํธ์์ ๋ชจ๋ ์ข ์์ฑ์ ์๊ฐ์ ๊ทธ๋ํ๋ฅผ ์์ฑํฉ๋๋ค.
- ์ํ ์ข ์์ฑ์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๋ณด๊ณ ํฉ๋๋ค.
- CommonJS, ES ๋ชจ๋ ๋ฐ TypeScript ๊ตฌ๋ฌธ์ ์ง์ํฉ๋๋ค.
- ๋น๋ ์คํฌ๋ฆฝํธ ๋ฐ CI ํ์ดํ๋ผ์ธ๊ณผ ์ฝ๊ฒ ํตํฉ๋๋ CLI ์ธํฐํ์ด์ค
- ์ฌ์ฉ์ ์ ์ ๋ถ์ ๋๋ ๋ค๋ฅธ ๋๊ตฌ์์ ํตํฉ์ ์ํ JSON ์ถ๋ ฅ
- ํ์ด ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๊ณ ๋ช ํํ ๋ชจ๋์ ๊ฒฝ๊ณ๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Madge๋ ์ข ์์ฑ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์์ง๊ณ ์ํคํ ์ฒ ์นจ์์ ๋ฐฉ์งํ๋ ๊ฒ์ด ์ฐ์ ์์์ธ ๋๊ท๋ชจ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ข
์์ฑ ๊ทธ๋ํ์๋ง ์ง์ค
Madge๋ ๋ชจ๋ ๊ด๊ณ๋ฅผ ๋ถ์ํ๊ณ ์๊ฐํํ์ง๋ง, ์์ค ์ฝ๋์์ ๋ก์ง ์ค๋ฅ, ๋ฒ๊ทธ ๋๋ ๋ณด์ ๋ฌธ์ ๋ฅผ ๊ฒ์ฌํ์ง๋ ์์ต๋๋ค. ํจ์ ๊ตฌํ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๊ฑฐ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
2. ์ ํ ๊ฒ์ฌ ๋๋ TypeScript ๊ฒ์ฆ ์์
Madge๋ TypeScript ๊ตฌ๋ฌธ ๋ถ์์ ์ง์ํ์ง๋ง TypeScript ์ปดํ์ผ๋ฌ์ ํตํฉ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์
์ค๋ฅ, ๋ถ์ ์ ํ ํ์
์ฌ์ฉ, ์ ๋ค๋ฆญ ๋ฐ ํ์
์ถ๋ก ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
3. ์ฝ๋ ์คํ์ผ์ด๋ ๋ฆฐํ
์ ์ฉ ์์
Madge๋ ๋ฆฐํฐ๊ฐ ์๋๋๋ค. ์ฝ๋ ํ์, ๋ช
๋ช
๊ท์น ๋๋ ์คํ์ผ ์ผ๊ด์ฑ์ ํ์ธํ์ง ์์ต๋๋ค. ํ์์๋ ์คํ์ผ ์ง์นจ์ ์ ์ฉํ๊ธฐ ์ํด ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
4. ๋ณด์ ์ทจ์ฝ์ ๊ฐ์ง ์์
Madge๋ ์ฃผ์
์ํ, ๊ฒ์ฆ๋์ง ์์ ์
๋ ฅ๊ฐ, ์ข
์์ฑ ๊ด๋ จ CVE์ ๊ฐ์ ์ทจ์ฝ์ ์ ๊ฒ์ฌํ์ง ์์ต๋๋ค. ๋ํ ๋ณด์ ๊ฐ์ฌ๋ ํ
์ธํธ ๋ถ์ ๊ธฐ๋ฅ๋ ์ ๊ณตํ์ง ์์ต๋๋ค.
5. ์ ์ด ํ๋ฆ ๋๋ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ ์์
Madge๋ ์ ์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๋ด๋ณด๋ด๊ธฐ์ ์ค์ ์ ๋ก๋๋ค. ํจ์ ๋ด์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ด๋ํ๋์ง ๋ถ์ํ๊ฑฐ๋ ๋ณ์์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ์ถ์ ํ์ง ์์ต๋๋ค. ์์ ํ์ง ์์ ์
๋ ฅ ์ ํ์ ๊ฐ์ ๋ฐํ์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
6. ์ ํ๋ ๊ฑด์ถ์ ์ํ
Madge๋ ์ํ ์ข
์์ฑ์ ์๊ฐํํ๊ณ ๊ฐ์งํ ์ ์์ง๋ง, ์ฌ์ฉ์ ์ง์ ์ํคํ
์ฒ ๊ท์น์ด๋ ๊ณ์ธต ๊ฒฝ๊ณ๋ฅผ ์๋์ผ๋ก ์ ์ฉํ์ง๋ ์์ต๋๋ค. ์ํ์ ๋์ด์๋ ์๋์น ์์ ๊ฒฐํฉ์ ๋ฐฉ์งํ๋ ค๋ฉด ์๋ ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค.
7. ๊ทธ๋ํ์ ์๋ ํด์์ด ํ์ํฉ๋๋ค.
๊ฐ๋ฐ์๋ ์์ฑ๋ ๊ทธ๋ํ ๋๋ JSON ๋ณด๊ณ ์๋ฅผ ๊ฒํ ํ๊ณ ํด์ํ์ฌ ๋ฌธ์ ๊ฐ ์๋ ํจํด์ ํ์
ํด์ผ ํฉ๋๋ค. Madge๋ ๋ณต์กํ ์ํคํ
์ฒ ๋ฌธ์ ์ ๋ํ ์๋ํ๋ ์ ์์ด๋ ์์ ์ฌํญ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
8. ์ธ๋ผ์ธ ํผ๋๋ฐฑ์ ์ํ IDE ํตํฉ ์์
Madge๋ ๊ธฐ๋ณธ์ ์ผ๋ก CLI ๋๊ตฌ์
๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋๋ ํธ์ง๊ธฐ์ ์ฐ๋๋์ง ์์ ์ฝ๋ ์์ฑ ์ ์ค์๊ฐ์ผ๋ก ์ข
์์ฑ ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ์ง ์์ ๊ฐ๋ฐ์์ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ด ์ ํ๋ฉ๋๋ค.
9. ๋งค์ฐ ํฐ ํ๋ก์ ํธ์ ์ฑ๋ฅ ๊ณ ๋ ค ์ฌํญ
์์ฒ ๊ฐ์ ๋ชจ๋์ด ์๋ ๋งค์ฐ ํฐ ๋จ์ผ ๋ฆฌํฌ์ ๊ฒฝ์ฐ ์ข
์์ฑ ๊ทธ๋ํ๋ฅผ ์์ฑํ๋ ์์
์ด ๋๋ ค์ง๊ฑฐ๋ ํํฐ๋ง์ด๋ ์ ์คํ ํ์์ด ํ์ํ ์์ฒญ๋ ์์ ์ถ๋ ฅ์ด ์์ฑ๋ ์ ์์ต๋๋ค.
10. ๋ค๋ฅธ ๋ถ์ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํ๋ ๊ฒ
Madge๋ ๋ฆฐํฐ, ํ์
์ฒด์ปค, ๋ณด์ ์ค์บ๋, ์ ์ ๋ถ์๊ธฐ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ข
์์ฑ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ๊ด๋ฆฌํ๋ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง๋ง, ์ ์ฒด์ ์ธ ์ ์ ๋ถ์ ๋ฒ์๋ฅผ ์ ๊ณตํ์ง๋ ์์ต๋๋ค.
Nx
Nx๋ ์ต์ JavaScript ๋ฐ TypeScript ๊ฐ๋ฐ์ ์ํด ์ค๊ณ๋ ๊ฐ๋ ฅํ ๋น๋ ์์คํ ์ด์ ๋ชจ๋ ธ๋ ํฌ ๊ด๋ฆฌ ํดํท์ ๋๋ค. ํ์ด ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋ ๋ณต์กํ ์ ์ฅ์๋ฅผ ๊ณต์ ์ข ์์ฑ์ ํตํด ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์๋ Angular ํ๋ก์ ํธ์ฉ์ผ๋ก ๊ฐ๋ฐ๋์๋ Nx๋ ์ด์ React, Node.js, NestJS ๋ฐ ๊ธฐํ ์ฌ๋ฌ ํ๋ ์์ํฌ๋ฅผ ์ง์ํฉ๋๋ค.
Node.js ํ์ ์ํด Nx๋ ์ข ์์ฑ ๊ทธ๋ํ ์๊ฐํ, ์์ ์ค์ผ์คํธ๋ ์ด์ , ์ฝ๋ ์์ฑ ๋ฐ ํ๋ก์ ํธ ๊ฒฝ๊ณ ์ ์ฉ์ ์ํ ๊ณ ๊ธ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๊ณ ๊ฐ๋ฐ์ ํ์ ์ ํฅ์์ํค๊ธฐ ์ํด ๋ชจ๋ ธ๋ ํฌ ์ ๋ต์ ๋์ ํ๋ ๋๊ท๋ชจ ์กฐ์ง์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์ฌ๋ฌ Node.js ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฅ ๊ฐ๋ฅํ ๋ชจ๋ ธ๋ฆฌํฌ๋ฅผ ์ง์ํฉ๋๋ค.
- ๋ชจ๋ ๊ด๊ณ๋ฅผ ๋๋ฌ๋ด๊ณ ๊น๋ํ ์ํคํ ์ฒ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ์๊ฐํํฉ๋๋ค.
- ์ผ๊ด๋ ์ค์บํด๋ฉ์ ์ํ ์ฝ๋ ์์ฑ๊ธฐ ๋ฐ ํ๋ก๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ์ ๊ฐ์ํํ๊ธฐ ์ํด ์บ์ฑ ๋ฐ ์ฆ๋ถ ๋น๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- React, Angular, NestJS ๋ฑ์ ์ํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
- ๋ ์ด์ด ๊ฐ ์๋์น ์์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ก์ ํธ ๊ฒฝ๊ณ๋ฅผ ์ ์ฉํฉ๋๋ค.
Nx๋ ์๊ฒฉํ ๊ฒฝ๊ณ์ ์ผ๊ด๋ ์ํฌํ๋ก์ฐ๋ฅผ ํตํด ์ด์ ์ ์ป๋ ๋๊ท๋ชจ ๋ชจ๋ํ Node.js ์์คํ ์ ์ ์ง ๊ด๋ฆฌํ๋ ํ์ ํนํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ ์ ๋ถ์ ์์ง์ด ์๋๋๋ค
Nx๋ ์ ์ ๋ถ์๊ธฐ๊ฐ ์๋ ๋น๋ ๋ฐ ์ค์ผ์คํธ๋ ์ด์
๋๊ตฌ์
๋๋ค. ์์ค ํ์ผ ๋ด์ ๋
ผ๋ฆฌ ์ค๋ฅ, ๋ณด์ ์ทจ์ฝ์ ๋๋ ์์ ํ์ง ์์ ํจํด์ ๊ฒ์ฌํ์ง ์์ต๋๋ค. ํ์ ์ฝ๋ ์์ค ๊ฒ์ฆ์ ์ํด ์ ์ฉ ๋ฆฐํฐ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
2. Linting ๋ฐ ์ ํ ๊ฒ์ฌ๋ฅผ ์ํ ์ธ๋ถ ๋๊ตฌ์ ์์กด
Nx๋ ESLint์ TypeScript ์ปดํ์ผ๋ฌ๋ฅผ ํตํฉํ์ง๋ง, ์์ฒด์ ์ธ ๊ท์น์ด๋ ๋ถ์ ๋ก์ง์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋จ์ํ ์ด๋ฌํ ๋๊ตฌ๋ค์ ์์
์ผ๋ก ์คํํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ํ์ง์ ์ ์ ์ผ๋ก ์ธ๋ถ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
3. ๋ฐ์ดํฐ ํ๋ฆ ๋๋ ์ ์ด ํ๋ฆ ๋ถ์ ์์
Nx๋ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ ๋ชจ๋ ๊ฐ ๋ฐ์ดํฐ ์ด๋ ๋ฐฉ์์ ๋ถ์ํ ์ ์์ต๋๋ค. ๋
ผ๋ฆฌ์ ๊ฒฐํจ, ์์ ํ์ง ์์ ๋น๋๊ธฐ ํจํด, ๋๋ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ ์ ์๋ ๋ณต์กํ ๋ถ๊ธฐ ์ค๋ฅ๋ฅผ ๊ฐ์งํ์ง ๋ชปํฉ๋๋ค.
4. ๋ณด์ ์ทจ์ฝ์ ๊ฐ์ง ์์
Nx๋ ์ฃผ์
์ํ, ์์ ํ์ง ์์ ์
๋ ฅ ์ฒ๋ฆฌ, ์ข
์์ฑ ์ทจ์ฝ์ ๊ณผ ๊ฐ์ ๋ณด์ ๋ฌธ์ ๋ฅผ ๊ฒ์ฌํ์ง ์์ต๋๋ค. ํ์ Snyk, npm ๊ฐ์ฌ ๋๋ ๊ธฐํ SAST ์๋ฃจ์
๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ํตํฉํ์ฌ ๋ณด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
5. ๊ฒฝ๊ณ์ ๋ํ ์ ์คํ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค.
Nx๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฆฐ ์ํคํ
์ฒ๋ฅผ ๊ตฌํํ๋ ค๋ฉด ํ๋ก์ ํธ ๊ฒฝ๊ณ๋ฅผ ์๋์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค. ์ง์์ ์ธ ์ ์ง ๊ด๋ฆฌ๊ฐ ์์ผ๋ฉด ํ์ ์๋์น ์์ ๊ฒฐํฉ์ด๋ ๊ณ์ธต ์๋ฐ์ ์ ๋ฐํ ์ ์์ผ๋ฉฐ, Nx๋ง์ผ๋ก๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ๋ฐฉ์งํ ์ ์์ต๋๋ค.
6. ์์
์ด์ธ์ ๊ฑด์ถ ๊ท์ ์ํ ์์
Nx๋ ํ๋ก์ ํธ ๊ฐ ๊ธ์ง๋ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋ฐฉ์งํ์ง๋ง, ๋๋ฉ์ธ ๊ธฐ๋ฐ ์ค๊ณ ๊ณ์ธต์ด๋ ์๋น์ค ๊ฒฉ๋ฆฌ์ ๊ฐ์ ์์ ๋ ๋ฒจ ์ํคํ
์ฒ ํจํด์ ๋ชจ๋ธ๋งํ๊ฑฐ๋ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ํ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ๋๋ฉ์ธ ๊ท์น์ ์ ํจ์ฑ์ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
7. ์ฝ๋ ํ์ง์ด๋ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ ๋ํ ๋ถ์์ด ์์
Nx๋ ๋ณต์ก์ฑ, ์ค๋ณต, ๋๋ ์ฝ๋ ์
์ทจ๋ฅผ ์ธก์ ํ์ง ์์ต๋๋ค. ์ถ๊ฐ ๋๊ตฌ ์์ด๋ ํ์ด ์ ์ง ๊ด๋ฆฌ ์ํ์ ํ์
ํ๊ฑฐ๋ ์คํ์ผ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
8. ํ์ต ๊ณก์ ๋ฐ ์ค์ ๋ณต์ก์ฑ
๋๊ท๋ชจ Node.js ํ๋ก์ ํธ์์ Nx๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋์
ํ๋ ค๋ฉด ์๋นํ ๊ณํ์ด ํ์ํ ์ ์์ต๋๋ค. ํ์ Nx์ ๊ตฌ์ฑ, ํ๋ฌ๊ทธ์ธ ์์คํ
, ๊ทธ๋ฆฌ๊ณ ์์
๊ณต๊ฐ ๊ท์น์ ์์งํ์ฌ ์๋ชป๋ ๊ตฌ์ฑ์ด๋ ๊ธฐ๋ฅ ํ์ฉ ๋ถ์กฑ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค.
9. ์์ฒด์ ์ผ๋ก ์ ํ๋ IDE ํผ๋๋ฐฑ
Nx๋ CLI์ CI์์ ์คํ๋์ง๋ง ESLint์ TypeScript ํตํฉ๊ณผ ๊ฒฐํฉํ์ง ์๊ณ ๋ ๊ท์น ์๋ฐ์ด๋ ๊ฒฝ๊ณ ๋ฌธ์ ์ ๋ํ ์ค์๊ฐ ํธ์ง์ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
10. ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํฉ๋๋ค.
Nx๋ ํ๋ก์ ํธ ์์ค์์ ๋ชจ๋
ธ๋ฆฌํฌ ๊ด๋ฆฌ ๋ฐ ์ข
์์ฑ ๊ฒฝ๊ณ ์ ์ฉ์ ๋งค์ฐ ํจ๊ณผ์ ์ด์ง๋ง, ๋ฆฐํฐ, ์ ์ ๋ถ์๊ธฐ, ๋ณด์ ์ค์บ๋ ๋๋ ํฌ๋งทํฐ๋ฅผ ๋์ฒดํ์ง๋ ์์ต๋๋ค. ํ์ ์์ ํ ์ ์ ๋ถ์ ์ ์ฉ ๋ฒ์๋ฅผ ์ํด ์ด๋ฌํ ๋๊ตฌ๋ฅผ ํตํฉํด์ผ ํฉ๋๋ค.
๋์ถ
Leakage๋ Node.js์ฉ ํ ์คํธ ์ ํธ๋ฆฌํฐ๋ก, ๊ฐ๋ฐ์๊ฐ ์ฝ๋์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์๋ณํ๊ณ ๋ฐฉ์งํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ์ฌ ๊ฐ์ฒด๋ ๋ฆฌ์์ค๊ฐ ์ ๋๋ก ๊ฐ๋น์ง ์ปฌ๋ ์ ๋์ง ์๋ ์ํฉ์ ๊ฐ์งํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ก ์ธํด ์์ ์ฑ์ด ์ ํ๋๊ฑฐ๋ ์ธํ๋ผ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์๋ ์ฑ๋ฅ์ ๋ฏผ๊ฐํ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค.
Leakage๋ ๊ฐ๋ณ๊ณ ๊ธฐ์กด ํ ์คํธ ๋ชจ์๊ณผ ์ฝ๊ฒ ํตํฉํ ์ ์์ด ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์๋น์ค๋ฅผ ์ ์งํ๋ ค๋ Node.js ํ์ด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ๋์ ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ํ ์คํธํฉ๋๋ค.
- ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ๋ณด๊ด๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด ํ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- ์ธ๊ธฐ ์๋ ํ ์คํธ ๋ฌ๋์ ํตํฉ๋๋ ๊ฐ๋จํ API
- ๋์ถ ์์ ์ ์ํด ๊ฐ๋ณ ๋ชจ๋์ด๋ ๊ธฐ๋ฅ์ ๋จ์ ํ ์คํธ์ ์ ์ฉํฉ๋๋ค.
- CI ํ์ดํ๋ผ์ธ์์ ์๋ํ๋ ํ ์คํธ๋ฅผ ์ง์ํ์ฌ ํ๊ท๋ฅผ ์กฐ๊ธฐ์ ํฌ์ฐฉํฉ๋๋ค.
- ์๊ฐ์ด ์ง๋๋ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ถํ์ ์์ ์ ์ผ๋ก ์ ์ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
๋์๋ ์ฅ๊ธฐ์ ์ผ๋ก ์คํ๋๋ ์๋ฒ ํ๋ก์ธ์ค, ๋ง์ดํฌ๋ก์๋น์ค ๋๋ API๋ฅผ ๊ตฌ์ถํ๋ ํ์ ํนํ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ํ์์๋ ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ผ๋ ํ๋ก๋์ ์์ ์ถฉ๋์ด๋ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
Node.js ๋ฐ TypeScript์ ์ ์ ๋ถ์์ ๋ํ ์ ํ ์ฌํญ
1. ์ ์ ๋ถ์์ด ์๋ ๋ฐํ์ ํ
์คํธ๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค.
๋์๋ ๋ฐํ์์ ์ฝ๋๋ฅผ ์คํํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ธก์ ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ์ง ์๊ณ ๋ ์์ค ์ฝ๋์ ์ค๋ฅ, ์์ ํ์ง ์์ ํจํด ๋๋ ๋ฒ๊ทธ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
2. TypeScript ์ ํ ๊ฒ์ฌ ์์
๋์๋ TypeScript ์ปดํ์ผ๋ฌ๋ ํ์
์์คํ
๊ณผ ์ํธ ์์ฉํ์ง ์์ต๋๋ค. TypeScript ์ฝ๋์์ ํ์
์ค๋ฅ, ์๋ชป๋ ์ ๋ค๋ฆญ ์ฌ์ฉ ๋๋ ์์ ํ์ง ์์ ์บ์คํธ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
3. ๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ์ง์๋ง ๊ตญํ๋จ
Leakage๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ์๋ณ์๋ง ์ง์คํฉ๋๋ค. ๋
ผ๋ฆฌ ์ค๋ฅ, ๋ณด์ ์ทจ์ฝ์ , ๋ฐ์ดํฐ ๊ฒ์ฆ ๋ฌธ์ ๋ฑ ๋ค๋ฅธ ์ข
๋ฅ์ ๋ฒ๊ทธ๋ ๋ฐ๊ฒฌํ์ง ์์ต๋๋ค.
4. ์ฝ๋ ํ์ง์ด๋ ์คํ์ผ ์ ์ฉ์ด ์์
๋์ถ์ ์ฝ๋ ๋ฆฐํธ(lint)๋ฅผ ์ ์ฉํ๊ฑฐ๋, ๋ช
๋ช
๊ท์น์ ์ ์ฉํ๊ฑฐ๋, ์ผ๊ด๋ ํ์์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ฝ๋ฉ ํ์ค๊ณผ ๊ฐ๋
์ฑ์ ์ ์งํ๋ ค๋ฉด ๋ณ๋์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
5. ๋ณด์ ๋ถ์์ ์ ํฉํ์ง ์์
๋์ถ์ ์ฃผ์
์ํ, ๊ฒ์ฆ๋์ง ์์ ์
๋ ฅ ์ฒ๋ฆฌ, ์์ ํ์ง ์์ API ์ฌ์ฉ๊ณผ ๊ฐ์ ์ทจ์ฝ์ ์ ํ์งํ์ง ๋ชปํฉ๋๋ค. ๋ณด์ ์ค์ฌ ์ ์ ๋ถ์์๋ ์ ์ฉ SAST ๋๋ ์ข
์์ฑ ๊ฒ์ฌ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
6. ์ ์ด ํ๋ฆ ๋๋ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ ์์
๋์ถ์ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ด๋ํ๋์ง, ์ ์ด ๊ตฌ์กฐ๊ฐ ์๋ํ ๋๋ก ์๋ํ๋์ง ๋ชจ๋ธ๋งํ ์ ์์ต๋๋ค. ๋ํ ๋๋ฌํ ์ ์๋ ์ฝ๋๋ ์๋ชป๋ ๋ถ๊ธฐ ๋
ผ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
7. ์๋ฏธ ์๋ ํ
์คํธ ์๋๋ฆฌ์ค๊ฐ ํ์ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์์ ํจ๊ณผ๋ ํ
์คํธ ์ผ์ด์ค์ ํ์ง์ ๋ฌ๋ ค ์์ต๋๋ค. ํ
์คํธ๊ฐ ์ฌ๋ฐ๋ฅธ ์ฝ๋ ๊ฒฝ๋ก๋ ์ํฌ๋ก๋๋ฅผ ์คํํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๊ฐ์ง๋์ง ์์ ์ ์์ต๋๋ค.
8. ๊ฑด์ถ ๊ท์น ์ํ ์์
๋์ถ์ ๋ชจ๋์ฑ์ ์ ์งํ๊ฑฐ๋ ๊น๋ํ ์ํคํ
์ฒ ์์น์ ์ ์ฉํ๋ ๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค. Node.js ํ๋ก์ ํธ์์ ๊ธด๋ฐํ ๊ฒฐํฉ์ ๋ฐฉ์งํ๊ฑฐ๋ ์ข
์์ฑ ๊ฒฝ๊ณ๋ฅผ ์ ์ฉํ์ง๋ ์์ต๋๋ค.
9. ์๋ ํด์ ํ์
๋์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ๋ฅผ ๊ฐ์กฐํ ์ ์์ง๋ง, ๊ฐ๋ฐ์๋ ๊ฒฐ๊ณผ๋ฅผ ํด์ํ๊ณ ๊ทผ๋ณธ ์์ธ์ ํ์
ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ํ๋กํ์ผ๋ฌ๋ ํ ์ค๋
์ท์ ์ด์ฉํ ์ฌ์ธต์ ์ธ ๋๋ฒ๊น
์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
10. ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํฉ๋๋ค.
Leakage๋ ๋ฆฐํฐ, ํ์
์ฒด์ปค, ์ ์ ๋ถ์๊ธฐ, ๋ณด์ ์ค์บ๋, ํ๋กํ์ผ๋ง ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋์๋ผ๋ ํน์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง, ์ฝ๋ ํ์ง์ด๋ ๋ณด์์ ๋ํ ์ ์ฒด์ ์ธ ๋ด์ฉ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
Node.js ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ํด๊ฒฐํ๋ ์ฃผ์ ๋ฌธ์ ๋ฐ ๊ณผ์
์ต์ Node.js ๋ฐ TypeScript ๊ฐ๋ฐ์ ๋จ์ํ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ํผํ๋ ๊ฒ ์ด์์ ๋ณต์ก์ฑ์ ์ผ๊ธฐํฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ํ์ ์ฝ๋ ํ์ง, ๋ณด์, ์ฑ๋ฅ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ธก๋ฉด์์ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ํด๊ฒฐํ๊ณ , ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ , ํ ์ ์ฒด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์๋์์๋ ์ด๋ฌํ ๋๊ตฌ๊ฐ ํด๊ฒฐํ๋ ์ฃผ์ ๋ฌธ์ ์ ๊ฐ ์ ํ์ ๋ํ ์ค๋ช ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฝ๋ ์คํ์ผ ๋ฐ ์ผ๊ด์ฑ
์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ํ์ ๊ฐ๋ฐ์ ํ์์ ์ ๋๋ค. ์๋ํ๋ ์ ์ฉ์ด ์๋ค๋ฉด ํ์ ๊ฒํ ๊ณผ์ ์์ ๋ค์ฌ์ฐ๊ธฐ, ๋ช ๋ช ๊ท์น, ์์ ๋ฑ์ ๋๊ณ ๋ ผ์ํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ๊ฒ ๋ฉ๋๋ค. ๋ฆฐํฐ(linter)๋ ํฌ๋งคํฐ(formatter)์ ๊ฐ์ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๋ช ํํ๊ณ ์ผ๊ด๋ ์คํ์ผ ๊ท์น์ ์๋์ผ๋ก ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ณต์กํ ์ฝ๋๋ฅผ ๋ฐฉ์งํ๊ณ , ๋ณํฉ ์ถฉ๋์ ์ค์ด๋ฉฐ, ์๋ก์ด ํ์๋ค์ด ๊ธฐ์กด ๊ท์น์ ์ค์ํ์ฌ ๋ ์ฝ๊ฒ ์ ์ํ ์ ์๋๋ก ๋์์ค๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก์ ํธ์์ "์ข์ ์ฝ๋"๊ฐ ์ด๋ค ๋ชจ์ต์ธ์ง์ ๋ํ ๊ณตํต๋ ์ดํด๋ฅผ ํ์ฑํฉ๋๋ค.
๊ตฌ๋ฌธ ์ค๋ฅ ๋ฐ ์ ํ ์์ ์ฑ
JavaScript์ ๋์ ํน์ฑ์ผ๋ก ์ธํด ๊ฐ๋ฐ ๊ณผ์ ์์ ๊ฐ์ง๋์ง ์๋ ๋ฐํ์ ์ค๋ฅ๊ฐ ์ฝ๊ฒ ๋ฐ์ํ ์ ์์ต๋๋ค. TypeScript๋ ์ ์ ํ์ดํ์ ํตํด ์์ ์ฑ์ ํฅ์์ํค์ง๋ง, ์ด๋ฌํ ํ์ ์์คํ ์ ์ผ๊ด๋ ์ ์ฉ์ด ํ์ํฉ๋๋ค. ํ์ ๊ฒ์ฌ ๋๊ตฌ๋ ์ฝ๋์์ ์๋ชป๋ ํ์ ์ฌ์ฉ, ๋๋ฝ๋ ์ ๋ ธํ ์ด์ , ์์ ํ์ง ์์ ํ๋ณํ์ ๋ถ์ํฉ๋๋ค. ํธํ๋์ง ์๋ ํจ์ ์ธ์, ์ ์๋์ง ์์ ์์ฑ ์ ๊ทผ, null ํ์ธ ๋๋ฝ๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ํ๋ก๋์ ํ๊ฒฝ์์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ธฐ ์ ์ ์ด๋ฅผ ํฌ์ฐฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ ๋๊ท๋ชจ Node.js ๋ฐฑ์๋์์ ๊ฐ๋ ฅํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
์ฝ๋ ํ์ง ๋ฐ ์ ์ง ๊ด๋ฆฌ์ฑ
๋๊ท๋ชจ ํ๋ก์ ํธ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ธฐ์ ๋ถ์ฑ๊ฐ ๋์ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ ์ง ๊ด๋ฆฌ์ ๊ฐ์ ์ด ๋์ฑ ์ด๋ ค์์ง๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ก๋ ์ง๋์น๊ฒ ๋ณต์กํ ํจ์, ๊น์ด ์ค์ฒฉ๋ ์ฝ๋ฐฑ, ์ค๋ณต ๋ก์ง, ์ฌ์ฉ๋์ง ์๋ ์ฝ๋ ๋ฑ์ด ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ๋ณต์ก์ฑ์ ์ธก์ ํ๊ณ , ์ธ๋ชจ์๋ ์ฝ๋๋ฅผ ํ์ํ๊ณ , ์ค๋ณต์ ์๋ณํ์ฌ ์ด๋ฌํ ํจํด์ ๊ฐ์งํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ํด๊ฒฐํ๋ฉด ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ฌด๋ถ๋ณํ๊ฒ ํ์ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ์ฅ๊ธฐ์ ์ธ ๋ณ๊ฒฝ ๋น์ฉ์ ์ค์ฌ ํ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌํฉํ ๋งํ๊ณ ํ์ฅํ๋ ๋ฐ ๋ ์ฝ๊ฒ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
๋ ผ๋ฆฌ์ ์ค๋ฅ ๋ฐ ๋ฐํ์ ๋ฒ๊ทธ
์คํ์ผ๊ณผ ์ ํ ์ธ์๋ ๋ง์ ๋ฒ๊ทธ๋ ์๋ชป๋ ๋ ผ๋ฆฌ์์ ๋น๋กฏ๋ฉ๋๋ค. ์๋ชป๋ ์กฐ๊ฑด๋ฌธ, ๋ฃจํ์ ์ค๋ฅ(off-by-one error), ์๋์น ์์ ๋น๋๊ธฐ ๋์ ๋ฑ์ด ๊ทธ ์์ ๋๋ค. ๊ณ ๊ธ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ ์ด ํ๋ฆ๊ณผ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ชจ๋ธ๋งํ์ฌ ๋๋ฌํ ์ ์๋ ์ฝ๋, ๋ชจ์๋๋ ์กฐ๊ฑด, ๊ทธ๋ฆฌ๊ณ null ์ญ์ฐธ์กฐ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์ค์ ๊ฒ์ฌ๋ Node.js ์๋น์ค์์ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋จ ํ๋์ ๋ฏธ๋ฐ๊ฒฌ ๋ฒ๊ทธ๋ก ์ธํด API๊ฐ ๋ค์ด๋๊ฑฐ๋ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์์๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ณด์ ์ทจ์ฝ์
Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฏผ๊ฐํ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ API์ ํตํฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฃผ์ ์ทจ์ฝ์ , ์์ ํ์ง ์์ ์ญ์ง๋ ฌํ, ํ๋์ฝ๋ฉ๋ ๋น๋ฐ๊ณผ ๊ฐ์ ์ํํ ํจํด์ ํ์งํ ์ ์์ต๋๋ค. ๋ณด์ ์ค์ฌ ๋ถ์์ ๋ฐ์ดํฐ ํ๋ฆ์ ์ถ์ ํ์ฌ ์ ๋ขฐํ ์ ์๋ ์ ๋ ฅ์ด ์ค์ ์์ ์ ๋๋ฌํ๊ธฐ ์ ์ ์ ์ ํ๊ฒ ์ ์ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ณด์ ์ฝ๋ฉ ๊ดํ์ ์กฐ๊ธฐ์ ์ ์ฉํจ์ผ๋ก์จ ์๋ ๊ฒํ ์ ๋ถ๋ด์ ์ค์ด๊ณ ๊ท์ ์ค์ ๊ธฐ์ค์ ์ถฉ์กฑํ์ฌ ์ฌ์ฉ์์ ๋น์ฆ๋์ค ๋ชจ๋๋ฅผ ๋ณดํธํฉ๋๋ค.
์ข ์์ฑ ์ทจ์ฝ์ฑ ๋ฐ ๊ณต๊ธ๋ง ์ํ
Node.js ํ๋ก์ ํธ๋ ์คํ์์ค ํจํค์ง์ ํฌ๊ฒ ์์กดํ๋๋ฐ, ์ด๋ ์๋ ค์ง ์ทจ์ฝ์ , ์
์ฑ ์ฝ๋ ๋๋ ์ ์ง ๊ด๋ฆฌ ์ค๋จ์ผ๋ก ์ธํด ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ถ์ ๋๊ตฌ package.json package-lock.json ํ์ด ์ค๋๋์๊ฑฐ๋ ์์ ํ์ง ์์ ํจํค์ง๋ฅผ ๊ฐ์งํ๊ณ , ์์ ํ ๋ฒ์ ์ ๊ถ์ฅํ๋ฉฐ, ์์ฌ์ค๋ฌ์ด ์ค์น ์คํฌ๋ฆฝํธ๋ ๋๋
ํ๋ ์ฝ๋์ ๊ฐ์ ์ํํ ํจํด์ ์๋ณํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. CI์ ์๋ ์ข
์์ฑ ๊ฒ์ฌ๋ ๋ฐฐํฌ ์ ์ ๊ณต๊ธ๋ง ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ํคํ ์ฒ ์ผ๊ด์ฑ ๋ฐ ๋ชจ๋ ๊ฒฝ๊ณ
Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฑ์ฅํจ์ ๋ฐ๋ผ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๋ณต์ก์ฑ์ ํผํ๊ธฐ ์ํด ๊น๋ํ ์ํคํ ์ฒ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๊ฒฝ๊ณ๋ฅผ ๊ฐํํ์ง ์์ผ๋ฉด ๊ฐ๋ฐ์๊ฐ ์๋์น ์์ ๊ณ์ธต ๊ฐ ์ข ์์ฑ์ ๋ฐ์์์ผ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ์์น์ ์๋ฐํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ์๊ฐํํ๊ณ , ์ํ ์ํฌํธ๋ฅผ ๊ฐ์งํ๊ณ , ์ ์๋ ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๊ณผ ์ฝ๋๋ฒ ์ด์ค๊ฐ ํ์ฅ๋๋๋ผ๋ ์ํคํ ์ฒ ๊ท์น์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
์ฑ๋ฅ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์
์ฑ๋ฅ ๋ฒ๊ทธ๋ ์ค์ ์ด์ ํ๊ฒฝ ์ด์ ์๋ ๊ฐ์งํ๊ธฐ ์ด๋ ค์ธ ์ ์์ง๋ง, ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์ธํ๋ผ ๋น์ฉ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. Node.js์ ๋จ์ผ ์ค๋ ๋ ์ด๋ฒคํธ ๋ฃจํ๋ ๋ธ๋กํน ํธ์ถ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ฏผ๊ฐํฉ๋๋ค. ํ๋กํ์ผ๋ง ๋๊ตฌ๋ ๊ฐ๋ฐ์๊ฐ ๋๋ฆฐ ๊ฒฝ๋ก๋ฅผ ํ์ ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ๊ณ , ์ฝ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ ํ ์ฌ์ฉ๋์ ์๊ฐํํ์ฌ ๋์๋ฅผ ๊ฐ์งํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํจ์ผ๋ก์จ ํ์ ์์ ์ ์ด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๊ท๋ชจ๋ก ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์ ์์ฐ์ฑ ๋ฐ ์๋ํ ๋ชฉํ
์ ์ ๋ถ์ ๋๊ตฌ๋ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๋ ๊ฒ ์ธ์๋ ๋น ๋ฅด๊ณ ์๋ํ๋ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์ ์ํฌํ๋ก๋ฅผ ์ง์ํฉ๋๋ค. IDE ํตํฉ์ ์ฝ๋ ์์ฑ ์ ๋ฌธ์ ์ ์ ๊ฐ์กฐํ๊ณ , CI ํตํฉ์ ๋ฌธ์ ๊ฐ ์๋ ์ฝ๋์ ๋ณํฉ์ ๋ฐฉ์งํ๋ฉฐ, ์๋ ์์ ๊ธฐ๋ฅ์ ๋ฐ๋ณต์ ์ธ ์์ ์ ์์๋๋ ์๊ฐ์ ์ค์ฌ์ค๋๋ค. ์ด๋ฌํ ๊ฒ์ฌ๋ฅผ ์๋ํํจ์ผ๋ก์จ ํ์ ์ฝ๋ ์คํ์ผ์ ์ธ์ธํ๊ฒ ๋ฐ์ง๊ฑฐ๋ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ฅผ ๋์น๋ ๋์ ๋์์ธ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ์ฌ ์ฝ๋ ๊ฒํ ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์ ์ ๋ถ์์ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ผ ๋ฟ๋ง ์๋๋ผ, ์์ ๊ฐ์ ๊ฐ์ง๊ณ ํ์ฅ ๊ฐ๋ฅํ ์์ ํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฉฐ ๊ณ ํ์ง์ Node.js ๋ฐ TypeScript ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ ๊ดํ์ ๋๋ค.
Node.js ์ฑ๊ณต์ ์ํ ์๋ฒฝํ ์ ์ ๋ถ์ ์ ๋ต
๊ณ ํ์ง, ๋ณด์์ฑ, ํ์ฅ์ฑ์ ๊ฐ์ถ Node.js ๋ฐ TypeScript ํ๋ก์ ํธ๋ฅผ ์ ์งํ๋ ค๋ฉด ์ ์ ํ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ๊ฐ๋ฐํ์ด ์ฑ์ฅํ๊ณ ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋์ฑ ๋ณต์กํด์ง์ ๋ฐ๋ผ, ์๋ ๊ฒํ ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฆฐํ ์๋ง ์์กดํ๋ ๊ฒ์ ๋ ์ด์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
์ฝ๋ ์คํ์ผ, ํ์ ์์ ์ฑ, ๋ณด์ ์ค์บ๋, ์ข ์์ฑ ๊ฐ์ฌ, ์ํคํ ์ฒ ์ ์ฉ, ์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ์ํ ์ ๋ฌธ ๋๊ตฌ๋ฅผ ๊ฒฐํฉํ์ฌ ์ ์ฒด ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด์ ๊ฑธ์ณ ํฌ๊ด์ ์ธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์ด๋ฌํ ๊ณ์ธต์ ์ ๊ทผ ๋ฐฉ์์ ํตํด ํ์ ๋ฏธ๋ฌํ ๋ก์ง ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ๊ณ , ๋ณด์ ์ทจ์ฝ์ ์ ๋ฐฉ์งํ๊ณ , ์ํคํ ์ฒ ๊ฒฝ๊ณ๋ฅผ ๊ฐํํ๊ณ , ๋์ฑ ํ์ ์ ๊ฐ์ง๊ณ ์ ๋ขฐํ ์ ์๋ ์ํํธ์จ์ด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ฐ๋ณ ๋๊ตฌ๊ฐ ํน์ ์์ญ์์ ํ์ํ ์ฑ๋ฅ์ ๋ฐํํ๋ ๊ฒ์ ์ฌ์ค์ด์ง๋ง, ์ ์คํ ์ ์ ๋ถ์ ์ ๋ต์ ์ผํ์ผ๋ก ์ด๋ฌํ ๋๊ตฌ๋ค์ ํตํฉํ๋ฉด ์ค์ง์ ์ธ ๊ฐ์น๋ฅผ ์ฐฝ์ถํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ ์ ํ์ง ๊ด๋ฆฌ ๊ดํ์ ํฌ์ํ๋ฉด ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ด๊ณ , ๊ฐ๋น์ผ ํ๋ก๋์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ฉฐ, ํ๋ก์ ํธ๊ฐ ํ์ฅ๋จ์ ๋ฐ๋ผ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ง๋๋ค. ์ ๋ฌธ์ ์ธ ํ๋ก๋์ ๊ธ Node.js ์๋น์ค ๊ตฌ์ถ์ ์ ๋ ํ๋ ํ์๊ฒ ์ ์ ๋ถ์์ ํ์ ํ์ฉํ๋ ๊ฒ์ ๋จ์ํ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ์๋๋ผ ํ์์ ์ ๋๋ค.