์ค์ ์ด์ ํ๊ฒฝ์ ๋ฐฐํฌ๋๋ ๋ชจ๋ ์ฝ๋๋ ์๊ฐ์ ์๋ฐ, ๋ถ์์ ํ ๋งฅ๋ฝ, ๋ฏธ๋นํ ๋ฌธ์, ๊ทธ๋ฆฌ๊ณ ๋๊ท๋ชจ ์์คํ ์ ์ค์๊ฐ์ผ๋ก ๋ถ์ํด์ผ ํ๋ ์ด๋ ค์ ๋ฑ ์ฌ๋ฌ ์ ์ฝ ์กฐ๊ฑด ํ์์ ์ฌ๋์ด ์ง์ ์์ฑํ ๊ฒ์ ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์์ ์์ค ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ฒด๊ณ์ ์ผ๋ก ๊ฒํ ํ๋ ๋ถ์ผ๋ก, ์๋ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋์ด ๊ฒํ ํ ๋ ๋์น๊ธฐ ์ฌ์ด ๋ถ๋ถ, ์ฆ ๋ณด์ ์ทจ์ฝ์ , ๋ ผ๋ฆฌ ์ค๋ฅ, ์ฝ๋ฉ ํ์ค ์๋ฐ, ์ฌ์ฉ๋์ง ์๋ ์ฝ๋, ๊ทธ๋ฆฌ๊ณ ํฅํ ์ ์ง๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์๋ ๊ตฌ์กฐ์ ํจํด ๋ฑ์ ์ฐพ์๋ ๋๋ค. ์ด๋ ํ ์คํธ, ์ค๊ณ ๊ฒํ ๋๋ ์์ง๋์ด์ ํ๋จ์ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋๋ค. ๋ชจ๋ ํ์ผ, ๋ชจ๋ ์ปค๋ฐ, ๋ชจ๋ ๋น๋์ ๋ํด ์๋ํ๋ ๊ฒํ ๋ฅผ ์ํํ๋ฉฐ, ์ด๋ค ์๋ ํ๋ก์ธ์ค๋ ๋ฐ๋ผ์ฌ ์ ์๋ ์๋์ ์ผ๊ด์ฑ์ ์ ๊ณตํฉ๋๋ค.
์ ์๋ ๊ฐ๋จํด ๋ณด์ด์ง๋ง, ์ค์ ๋ก๋ ์ ์ ๋ถ์์ ๊ด๋ฒ์ํ ๊ธฐ๋ฒ์ ํฌ๊ดํ๋ฉฐ, ๊น์ด์ ์ ํ๋ ์์ค์ด ๋ค์ํ๊ณ , ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ์ ์ฌ๋ฌ ๋จ๊ณ์ ์ ์ฉ๋๋ฉฐ, ๊ฐ ๋๊ตฌ๊ฐ ํ์งํ ์ ์๋ ๋ฒ์ ๋ํ ์๋นํ ๋ค๋ฆ ๋๋ค. ํฌ๋งทํ ๊ท์น์ ์ ์ฉํ๋ ๋ฆฐํฐ๋ ๊ธฐ์ ์ ์ผ๋ก๋ ์ ์ ๋ถ์์ ์ํํ๋ ๊ฒ์ ๋๋ค. ์์ ํ ํธ์ถ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ค์ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ์ทจ์ฝ์ ๊น์ง ์ถ์ ํ๊ณ , ๋๋ฌํ ์ ์๋ ๋ถ๊ธฐ๋ฅผ ์๋ณํ๊ณ , ๋ค๊ตญ์ด ์ํฐํ๋ผ์ด์ฆ ์์คํ ์์ ํ๋ ์์ค์ ์ข ์์ฑ์ ๋งคํํ๋ ๋๊ตฌ ๋ํ ์ ์ ๋ถ์์ ์ํํ์ง๋ง, ๋ ๋๊ตฌ๋ ๊ธฐ์ ์ ๊น์ด์ ์ค์ ํ์ฉ๋ ์ธก๋ฉด์์ ์์ ํ ๋ค๋ฅธ ์์ค์ ๋ณด์ ๋๋ค. ์ด๋ฌํ ๊ด๋ฒ์ํ ์คํํธ๋ผ์ ์ดํดํ๋ ๊ฒ์ด ์ ์ ๋ถ์์ ํจ๊ณผ์ ์ผ๋ก ์ ํํ๊ณ ์ฌ์ฉํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
์ ์ ๋ถ์์ด๋ ๋ฌด์์ด๋ฉฐ ๋ฌด์์ด ์๋๊ฐ
์ ์ ๋ถ์์ ์์ค ์ฝ๋๋ฅผ ๊ตฌ์กฐํ๋ ์ํฐํฉํธ๋ก ๊ฐ์ฃผํ์ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ๊ณผ ์๋ฏธ๋ก ์ ํ์ฉํด ์ฝ๋์ ๋์์ ๋ชจ๋ธ๋งํ ๋ค์, ํด๋น ๋ชจ๋ธ์์ ๊ด์ฌ ์๋ ์์ฑ์ ์ฟผ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ถ์์ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ํ๋ฉ๋๋ค. ๋ฐํ์ ํ๊ฒฝ์ด๋ ํ ์คํธ ์ ๋ ฅ์ด ํ์ํ์ง ์์ผ๋ฉฐ, ์คํ ์ถ์ ๋ ๊ด์ฐฐ๋์ง ์์ต๋๋ค. ์์ค ํ์ผ์ด ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ถ์ ๊ฒฐ๊ณผ๋ ์ ์ ์ผ๋ก ์ฝ๋์ ๊ตฌ์กฐ, ๋ด์ฉ ๋ฐ ๊ด๊ณ์์ ๋์ถ๋ฉ๋๋ค.
์ ์ ๋ถ์์ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ ๊ฐ์น์ ํ๊ณ๋ฅผ ๋ชจ๋ ๊ฐ์ต๋๋ค. ์ฝ๋๋ฅผ ์คํํ์ง ์์ผ๋ฏ๋ก ์ ์ ๋ถ์์ ํ ์คํธ์์ ๊ฑฐ์ ์ ๊ทผํ์ง ์๋ ๊ฒฝ๋ก๊น์ง ํฌํจํ์ฌ ๋ชจ๋ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฑฐ์ ์คํ๋์ง ์๋ ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ, ํน์ ๋ฐ์ดํฐ ๊ตฌ์ฑ์ ์ํด์๋ง ํ์ฑํ๋๋ ์กฐ๊ฑด ๋ถ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์๋ ๋์ ํ ์คํธ๋์ง ์์ ๋ ๊ฑฐ์ ์ฝ๋ ๊ฒฝ๋ก ๋ฑ์ด ์์ต๋๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ์คํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐํ์ ๋์์ ๊ด์ฐฐํ ์ ์๊ณ , ๋ฐํ์์๋ง ๊ฒฐ์ ๋๋ ๊ฐ์ ๋ํด ์ถ๋ก ํ ์ ์์ผ๋ฉฐ, ์ฝ๋ ๋์์ด ์ ๊ทผํ ์ ์๋ ์คํ ์ปจํ ์คํธ์ ์์กดํ๋ ๊ฒฝ์ฐ ๊ทผ์ฌ์น๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ค์ง์ ์ผ๋ก ์ ์ ๋ถ์์ ๊ตฌ์กฐ์ ๋ฌธ์ , ์ ์ฑ ์๋ฐ, ์๋ ค์ง ์ทจ์ฝ์ ์ ํ๊ณผ ๊ด๋ จ๋ ํจํด, ์ฝ๋์ ํ ์คํธ์ ๊ตฌ์กฐ์ ํํ๋ ์์กด์ฑ ๊ด๊ณ์ ๊ฐ์ ํน์ ํ๊ณ ๊ฐ์น ์์ผ๋ฉฐ ๋ช ํํ๊ฒ ์ ์๋ ๋ฌธ์ ์ ํ์ ์ฐพ์๋ ๋๋ค. ํน์ ๋ฐํ์ ์กฐ๊ฑด์์๋ง ๋ฐ์ํ๋ ๋ฌธ์ , ๋์ ์คํ์ด ํ์ํ ๊ฒฝ์ ์กฐ๊ฑด, ๋๋ ์ฝ๋์ ๋์์ ๋ํ ์๋ฏธ๋ก ์ ์ง์์ ์์กดํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ค๋ฅ๋ ์ฐพ์๋ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ ์ ์ ๋ถ์์ ๊ฐ์น๋ฅผ ๋จ์ด๋จ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ, ๊ทธ ๋ฒ์๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋ฒ์๋ฅผ ์ดํดํจ์ผ๋ก์จ ํ์ ์ ์ ๋ถ์์ ํ ์คํธ, ์ฝ๋ ๊ฒํ ๋ฐ ๋ฐํ์ ๋ชจ๋ํฐ๋ง์ ๋์ฒด์ฌ๋ก ์ฌ๊ธฐ๋ ๋์ , ์ด๋ฌํ ์์๋ค๊ณผ ํจ๊ป ์ ์ ํ๊ฒ ํตํฉํ ์ ์์ต๋๋ค.
์ ์ ๋ถ์๊ณผ ๋์ ๋ถ์์ ์ฐจ์ด์
๋์ ๋ถ์์ ์ฝ๋๋ฅผ ์คํํ์ฌ ํ๊ฐํฉ๋๋ค. ์ด ๋๊ตฌ๋ ๋ฐํ์ ๋์, ์ฆ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ , ์ฝ๋ ๊ฒฝ๋ก๋ณ ์คํ ์๊ฐ, ํน์ ์์ ์ ๋ณ์ ๊ฐ, ๋์ ์คํ ํจํด ๋ฐ ์์คํ ํธ์ถ์ ๊ด์ฐฐํฉ๋๋ค. ๋์ ๋ถ์์ ์คํ ์ค์๋ง ๋ฐ์ํ๋ ๋ฌธ์ , ์๋ฅผ ๋ค์ด ์ฅ์๊ฐ ์คํ ์ ๋์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋์, ๋์์ ์คํ๋๋ ์ค๋ ๋ ๊ฐ์ ๊ฒฝ์ ์กฐ๊ฑด, ํน์ ๋ถํ ํจํด์์์ ์ฑ๋ฅ ์ ํ, ์์์น ๋ชปํ ์ ๋ ฅ ๊ฐ์ผ๋ก ์ธํ ์ถฉ๋ ๋ฑ์ ์ฐพ์๋ ๋๋ค.
๋ ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝ์์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์ํธ ๋ณด์์ ์ ๋๋ค. ์๋ ๋น๊ตํ๋ ๊ฐ ๋ฐฉ์์ ์ค์ ์ ์ฉ ๋ฒ์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
| ๋ถ๋์ฐ | ์ ์ ๋ถ์ | ๋์ ๋ถ์ |
|---|---|---|
| ์คํ์ด ํ์ํฉ๋๋ค | ์๋ | ๊ฐ๋ฅ |
| ์ฝ๋ ๊ฒฝ๋ก ์ปค๋ฒ๋ฆฌ์ง | ์ด๋ํ์ง ์์ ๊ฒฝ๋ก๋ฅผ ํฌํจํ ๋ชจ๋ ๊ฒฝ๋ก | ์คํ๋ ๊ฒฝ๋ก๋ง |
| ๋ฐํ์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๋ฅผ ์ฐพ์ต๋๋ค. | ๋ถ๋ถ์ ์ผ๋ก (ํจํด๋ง ํด๋น) | ๋ค, ๋ฐ๋ก์. |
| ์ฝ๋ ๊ตฌ์กฐ์์ ๋ณด์ ์ทจ์ฝ์ ์ ์ฐพ์๋ ๋๋ค. | ๊ฐ๋ฅ | ๋ถ๋ถ์ ์ผ๋ก |
| ๋์์ฑ ๋ฒ๊ทธ๋ฅผ ์ฐพ์๋ ๋๋ค. | ๋ถ๋ถ์ ์ผ๋ก (ํจํด๋ง ํด๋น) | ๋ค, ๋ฐ๋ก์. |
| ๋ถ์์ ํ ์ฝ๋์ ๋ํ ์์ | ๊ฐ๋ฅ | ์๋ |
| ํ ๋ฒ์ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ๋ง๊ฒ ํ์ฅ ๊ฐ๋ฅ | ๊ฐ๋ฅ | ํ ์คํธ ๋ฒ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. |
| ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ๊ฐ์งํฉ๋๋ค. | ๊ฐ๋ฅ | ์๋ |
| ๊ตฌ์ฑ ์์ ๊ฐ์ ์ข ์์ฑ์ ์๋ณํฉ๋๋ค. | ๊ฐ๋ฅ | ๋ถ๋ถ์ ์ผ๋ก |
๊ฐ์ฅ ํจ๊ณผ์ ์ธ ํ์ง ๋ณด์ฆ ํ๋ก๊ทธ๋จ์ ๋ ๊ฐ์ง ๋ชจ๋๋ฅผ ํ์ฉํฉ๋๋ค. ์ ์ ๋ถ์์ ์ฝ๋ ์คํ ์ ์ ๊ตฌ์กฐ์ ๋ฌธ์ ์ ์ ์ฑ ์๋ฐ ์ฌํญ์ ์กฐ๊ธฐ์ ํฌ๊ด์ ์ผ๋ก ํ์ ํ ์ ์๋๋ก ํด์ค๋๋ค. ๋์ ๋ถ์์ ์คํ ์ค์ ๊ฒ์ฆ๋ ๋์ ํ์ธ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์ด๋ ํ์ชฝ๋ง์ผ๋ก๋ ํ์ง ๋ฐ ๋ณด์์ ๋ชจ๋ ์ธก๋ฉด์ ํฌ๊ดํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ์์ ์ ์ ๋ถ์์ ์์น
์ ์ ๋ถ์์ ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ์์ ๊ฐ๋ฅํ ํ ๊ฐ์ฅ ์ด๊ธฐ ๋จ๊ณ, ์ฆ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ IDE ๋ด์์, ์ฝ๋๊ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ ์ฅ๋๊ธฐ ์ ์ ์คํ๋๋ pre-commit ํ ์์, ๊ทธ๋ฆฌ๊ณ ๋ณํฉ ์ ์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒ์ฆํ๋ CI ํ์ดํ๋ผ์ธ์์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ด๋ฌํ ์์น ์ ์ ๋๋ถ์ ์ ์ ๋ถ์์ ํ์ง ๋ฉ์ปค๋์ฆ์ด ์๋ ์๋ฐฉ ๋ฉ์ปค๋์ฆ์ผ๋ก ์์ฉํฉ๋๋ค. IDE์์ ๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ ์์ ํ๋ ๋ฐ ๋ช ๋ถ๋ฐ์ ๊ฑธ๋ฆฌ์ง ์์ง๋ง, pre-commit ๋จ๊ณ์์ ๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ ๋ช ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ , ๋ฐฐํฌ ํ์ ๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ ์๊ฐ๊ณผ ์ํ ์ธก๋ฉด์์ ํจ์ฌ ๋ ๋ง์ ๋น์ฉ์ ์ด๋ํฉ๋๋ค.
์ด ์์น์ ๋๋๋ก "์ข์ธก ์ด๋(shift left)"์ด๋ผ๊ณ ๋ถ๋ฆฌ๋๋ฐ, ์ด๋ ์ผ๋ฐ์ ์ธ ์ข์ธก์์ ์ฐ์ธก์ผ๋ก ์งํ๋๋ SDLC ํ์๋ผ์ธ์์ ํ์ง ๊ฒ์ฌ๋ฅผ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๋ฐ, ์ฆ ์ข์ธก์ผ๋ก ์ด๋์ํค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ ์ ๋ถ์์ ๋ณด์ ๋ฐ ํ์ง ๊ฒ์ฌ๋ฅผ ์ข์ธก์ผ๋ก ์ด๋์ํค๋ ์ฃผ์ ๊ธฐ์ ์ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์๋ํ๋ฉด ์ ์ ๋ถ์์ ์ฝ๋๊ฐ ์คํ ๊ฐ๋ฅํ ์ ๋๋ก ์์ฑ๋๊ธฐ ์ , ํ ์คํธ ์ค์ํธ๊ฐ ์์ฑ๋๊ธฐ ์ , ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ๋์ด ๊ฒํ ํ๊ธฐ ์ ์ ์คํ๋ ์ ์๋ ์ ์ผํ ์๋ํ๋ ์ ๊ทผ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฝ๋ ํ์ง์ ์ํ DevOps ํตํฉ ์ ๋งฅ๋ฝ์์ ์ค๋ช ํ๋ฏ์ด , ์๋ํ๋ ๋ถ์์ ์ผ์์ ์ธ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํ๋ ๊ฒ์ ํ ๊ท๋ชจ์ ๋น๋กํ์ฌ ์๋ ๊ฒํ ๋ ธ๋ ฅ์ ๋๋ฆฌ์ง ์๊ณ ๋ ๋๊ท๋ชจ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ค๋ ์กฐ์ง์๊ฒ ํ์์ ์ธ ์ค์ฒ ๋ฐฉ์์ ๋๋ค.
์ ์ ๋ถ์์ ์๋ ๋ฐฉ์: ๊ธฐ์ ์ ๊ตฌ์ฑ ์์
์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ์ ์ ์์ค์์ ์๋ํ๋ฉฐ, ๊ฐ ์์ค์ ์๋ก ๋ค๋ฅธ ์ ํ์ ๋ถ์์ ์ ๊ณตํ๊ณ ์๋ก ๋ค๋ฅธ ์ ํ์ ๋ฌธ์ ๋ฅผ ํ์งํฉ๋๋ค. ์ด๋ฌํ ์์ค์ ์ดํดํ๋ ๊ฒ์ ์ค์ํฉ๋๋ค. ์๋ํ๋ฉด ๊ฐ ๋๊ตฌ๋ ์๋ก ๋ค๋ฅธ ์์ค์์ ์๋ํ๋ฉฐ, ํด๋น ์์ค์ ๋ฐ๋ผ ๋๊ตฌ๊ฐ ๋ฌด์์ ์ฐพ์ ์ ์๊ณ ๋ฌด์์ ์ฐพ์ ์ ์๋์ง๊ฐ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ดํ ๋ถ์: ํ๋ฉด์ ์ธ ์ธก๋ฉด
์ดํ ๋ถ์์ ์ ์ ๋ถ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ค์ ๋๋ค. ์์ค ์ฝ๋๋ฅผ ๋ฌธ์์ด๋ก ๊ฐ์ฃผํ์ฌ ํค์๋, ์๋ณ์, ์ฐ์ฐ์, ๋ฆฌํฐ๋ด, ๊ตฌ๋ถ ๊ธฐํธ์ ๊ฐ์ ํ ํฐ์ผ๋ก ๋ถํดํฉ๋๋ค. ๋ช ๋ช ๊ท์น, ๊ณต๋ฐฑ ๊ท์น, ์ต๋ ์ค ๊ธธ์ด, ๊ธ์ง๋ ํค์๋ ์ฌ์ฉ ๋ฑ์ ๊ฐ์ ํ๋ ๋ฆฐํ ๋๊ตฌ๋ ์ฃผ๋ก ์ดํ ์์ค์์ ์๋ํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ์๋๊ฐ ๋น ๋ฅด๊ณ ์ต์ํ์ ์ค์ ๋ง ํ์ํ๋ฉฐ, ํ๋ฉด์ ์ธ ์ ์ฑ ์๋ฐ ์ฌํญ์ ์ผ๊ด๋๊ฒ ์ก์๋ ๋๋ค.
์ดํ ๋ถ์์ ์ฝ๋์ ์ค์ ๋์์ ๋ํด์๋ ์ถ๋ก ํ ์ ์์ต๋๋ค. ๋ณ์ ์ด๋ฆ์ด ํน์ ๋ฐฉ์์ด๋ผ๋ ๊ฒ์ ์์ง๋ง, ๊ทธ ๋ณ์๊ฐ ๋ฌด์์ ๋ํ๋ด๋์ง, ๋๋ ๊ทธ ๊ฐ์ด ํ๋ก๊ทธ๋จ์์ ์ด๋ป๊ฒ ํ๋ฅด๋์ง๋ ์ ์ ์์ต๋๋ค. ์ดํ ๋ถ์์ ๋ด์ฉ์ ๋ํ ์ดํด ์์ด ํ์๋ง ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ์ดํ ๋ถ์์ ํ์ํ์ง๋ง, ๋ ๋ฆฝ์ ์ธ ํ์ง ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ผ๋ก์๋ ๋ถ์ถฉ๋ถํฉ๋๋ค. ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ๋ ๋์์ด ๋์ง๋ง, ๋ ผ๋ฆฌ ์ค๋ฅ, ๋ณด์ ์ทจ์ฝ์ ๋๋ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ฅผ ์ฐพ์๋ผ ์๋ ์์ต๋๋ค.
๊ตฌ๋ฌธ ๋ถ์: ์๋ฏธ๋ก ์๋ ๊ตฌ์กฐ ๋ถ์
๊ตฌ๋ฌธ ๋ถ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฐ๋ผ ์์ค ์ฝ๋๋ฅผ ํ์ฑํ์ฌ ์ฝ๋์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST)๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํธ๋ฆฌ๋ ์ด๋ค ํํ์์ด ๋ค๋ฅธ ํํ์์ ํ์ ํํ์์ธ์ง, ์ด๋ค ๋ฌธ์ฅ์ด ์ด๋ค ๋ธ๋ก์ ์ํ๋์ง, ์ด๋ค ์๋ณ์๊ฐ ์ ์ธ์ด๊ณ ์ด๋ค ์๋ณ์๊ฐ ์ฐธ์กฐ์ธ์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๋ง์ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฃผ๋ก ๊ตฌ๋ฌธ ์์ค์์ ์๋ํ๋ฉฐ, AST ํจํด ๋งค์นญ์ ์ฌ์ฉํ์ฌ ์๋ ค์ง ๋ฌธ์ ์ ๊ด๋ จ๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ํ์งํฉ๋๋ค.
ํจ์๊ฐ ํน์ ๋ณต์ก๋ ์๊ณ๊ฐ์ ์ด๊ณผํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ํ๋ ๊ท์น์ ๊ตฌ๋ฌธ์ ์ผ๋ก ์๋ํฉ๋๋ค. ์ฆ, ํจ์ ๋ณธ๋ฌธ์ AST(์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ)์์ ๊ฒฐ์ ์ง์ ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๋ ์ญ์ฐธ์กฐ ํจํด์ ๊ฐ์งํ๋ ๊ท์น๋ ๊ตฌ๋ฌธ์ ์ผ๋ก ์๋ํฉ๋๋ค. ์ฆ, ๋์ผ ์ ์๋ ๊ฐ์ด ๋ ๊ฒ์ฌ ์์ด ์ฌ์ฉ๋๋ AST ํจํด์ ์ฐพ์ต๋๋ค. ์ด๋ฌํ ๊ฐ์ง ๋ฐฉ์์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ดํ ๋ถ์๋ณด๋ค ๊ฐ๋ ฅํ์ง๋ง, ์ฌ์ ํ ์๋ฏธ๋ก ์ด ์๋ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค. ๋ ์ญ์ฐธ์กฐ ํจํด ์ผ์น๋ ํด๋น ๋ณ์๊ฐ ์ฌ์ฉ๋๋ ์ปจํ ์คํธ์์ ์ค์ ๋ก ๋์ผ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์์ง ๋ชปํฉ๋๋ค. ๋จ์ง ํจํด์ด ์กด์ฌํ๋ค๋ ์ฌ์ค๋ง ์ ๋ฟ์ ๋๋ค.
์๋ฏธ ๋ถ์: ์๋ฏธ์ ์ ํ
์๋ฏธ ๋ถ์์ ์ฝ๋์ ํด์๋ ์๋ฏธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค. ์ฆ, ๊ฐ ํํ์์ ํ์ , ๊ฐ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ ์ธ, ํธ์ถ๋๋ ์ค๋ฒ๋ก๋๋ ๋ฉ์๋, ๊ทธ๋ฆฌ๊ณ ํ์ ์์คํ ์ด ํ๋ก๊ทธ๋จ ๋ด์์ ํ๋ฅด๋ ๊ฐ์ ๋ํด ์ฆ๋ช ํ ์ ์๋ ๋ด์ฉ ๋ฑ์ ๋ถ์ํฉ๋๋ค. ํ์ ๊ฒ์ฌ๋ ์๋ฏธ ๋ถ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํํ์ ๋๋ค. ์ปดํ์ผ๋ฌ์ ํ์ ๊ฒ์ฌ๊ธฐ๋ ์ ์๊ฐ ์์๋๋ ์์น์ ๋ฌธ์์ด์ ์ ๋ฌํ๋ ์ฝ๋๋ฅผ ๊ฑฐ๋ถํ ๋ ์ ์ ๋ถ์์ ์ํํฉ๋๋ค.
๋ณด๋ค ์ ๊ตํ ์๋ฏธ ๋ถ์์๋ ๋ช ์์ ์ผ๋ก ์ฃผ์์ด ๋ฌ๋ฆฌ์ง ์์ ํํ์์ ์ ํ์ ๊ฒฐ์ ํ๋ ์ ํ ์ถ๋ก ๊ณผ, null์ผ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฐ์ด ์ฌ์ฉ ์ ์ ์์ ํ๊ฒ ๊ฒ์ฌ๋๋์ง ์ฌ๋ถ๋ฅผ ์ถ์ ํ๋ null ์์ ์ฑ ๋ถ์์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ๋ถ์์ ์์ ํ ์ฌ๋ณผ ํด์๋๋ฅผ ํ์๋ก ํ๋ฏ๋ก ์ธ์ด๋ณ๋ก ํนํ๋์ด ์์ผ๋ฉฐ ์์ ํ๊ฑฐ๋ ๊ฑฐ์ ์์ ํ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค. ์ฆ, ์ ํ ์ ์๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ์ข ์์ฑ์ ์ ์๋ ์ฌ๋ณผ์ ์ฐธ์กฐํ๋ ์ฝ๋ ์กฐ๊ฐ์์๋ ์๋ํ ์ ์์ต๋๋ค. ๋ ๊ฑฐ์ ํ๋ํ ๊ณํ ์ ๋ํ ๋ ๊ด๋ฒ์ํ ๋ ผ์์์ ์ดํด๋ณธ ๋ฐ์ ๊ฐ์ด , ๋ถ์์ ํ๊ฑฐ๋ ๋ฌธ์ํ๋์ง ์์ ์ข ์์ฑ์ ๊ฐ์ง ์ ์๋ ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์์ ํ ์๋ฏธ ๋ถ์์ ์ํํ๋ ค๋ฉด ํด๋น ํ๊ฒฝ์ ํน์ ๊ตฌ์กฐ์ ํจํด์ ์ฒ๋ฆฌํ ์ ์๋ ํน์ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
๋ฐ์ดํฐ ํ๋ฆ ๋ถ์: ์คํ์ ํตํ ๊ฐ์น ๋์ถ
๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ํ๋ก๊ทธ๋จ ๋ด์์ ๊ฐ์ด ์ด๋ป๊ฒ ์ด๋ํ๋์ง ์ถ์ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ฉฐ, ์คํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ณ์ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ ํํ๊ณ ๊ฐ์ด ์ด๋์์ ์์ฑ๋๊ณ , ์ด๋์์ ์์ ๋๊ณ , ์ด๋์์ ์๋น๋๋์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ํตํด ์ด๊ธฐํ๋์ง ์์ ๋ณ์ ์ฝ๊ธฐ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์์์ ํด์ ํ ์ฌ์ฉ(use-after-free), ์ฌ์ฉ์ ์ ๋ ฅ์์ ๋ณด์์ ๋ฏผ๊ฐํ ์์ ์ผ๋ก ์ค์ผ์ด ์ ํ๋๋ ๋ฑ์ ๋ฌธ์ ๋ฅผ ํ์งํ ์ ์์ต๋๋ค.
์ค์ผ ๋ถ์์ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ํน์ ํํ๋ก, ์ ๋ขฐํ ์ ์๋ ์ถ์ฒ(์ฌ์ฉ์ ์ ๋ ฅ, ๋คํธ์ํฌ ๋ฐ์ดํฐ, ํ์ผ ๋ด์ฉ)์์ ๋ฐ์ํ๋ ๊ฐ์ ์ถ์ ํ๊ณ ์ด๋ฌํ ๊ฐ์ด ๊ฒ์ฆ ์์ด ๋ณด์์ ๋ฏผ๊ฐํ ์์ (SQL ์ฟผ๋ฆฌ, ์์คํ ํธ์ถ, ์ถ๋ ฅ ์์ )์ ๋๋ฌํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์๋ณํฉ๋๋ค. ์ค์ผ๋ ๊ฐ์ด ๊ฒ์ฆ ์์ด ๋ณด์ ์ง์ ์ ๋๋ฌํ๋ฉด ๋ถ์์์ ์ ์ฌ์ ์ธ ์ธ์ ์ ์ทจ์ฝ์ ์ผ๋ก ํ์๋ฉ๋๋ค. ์ด๋ ์ ์ ๋ถ์ ๋๊ตฌ์์ ๋ฐ๊ฒฌ๋๋ ๋๋ถ๋ถ์ SQL ์ธ์ ์ , ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๋ฐ ๋ช ๋ น ์ธ์ ์ ์ทจ์ฝ์ ์ ์๋ ํ์ง ๋ฉ์ปค๋์ฆ์ ๋๋ค.
์ฝ๋์์ ๋ ๊ฒฝ๋ก ์ฐจ์ด๋ ๋ฏธ๋ฏธํ์ง๋ง, ๋ณด์ ๊ฒฐ๊ณผ๋ ์์ ํ ๋ค๋ฆ ๋๋ค.
# Vulnerable: user input reaches SQL query without sanitization (tainted path)
def get_user(username):
query = "SELECT * FROM users WHERE name = '" + username + "'"
return db.execute(query) # sink: tainted value reaches SQL execution
# Safe: sanitization breaks the taint chain before the sink
def get_user_safe(username):
query = "SELECT * FROM users WHERE name = ?"
return db.execute(query, (username,)) # parameterized: taint neutralized
์ ์ ์ค์ผ ๋ถ์์ ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ , ์ ์์ ์ธ ํ ์คํธ ์ ๋ ฅ ์์ด๋ ์ฒซ ๋ฒ์งธ ํจ์์์ ์ทจ์ฝํ ํจํด์ ํ์งํฉ๋๋ค. ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ์ ํ๋์ ์ฑ๋ฅ ๊ฐ์ ๊ทผ๋ณธ์ ์ธ ์์ถฉ ๊ด๊ณ์ ์ง๋ฉดํฉ๋๋ค. ๋ชจ๋ ๊ฐ๋ฅํ ์คํ ๊ฒฝ๋ก๋ฅผ ๊ณ ๋ คํ๋ ์ ํํ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์๋ ๋นํ์ค์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋๋ถ๋ถ์ ๋๊ตฌ๋ ์ ํ๋๋ฅผ ๋ค์ ํฌ์ํ๋ฉด์ ํ์ฅ์ฑ์ ํ๋ณดํ๋ ๊ทผ์ฌ์น๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ ๊ฒฐ๊ณผ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋์ ๊ฒํ ๊ฐ ํ์ํ ์คํ๋ฅ ์ด ํฌํจ๋ฉ๋๋ค. ์คํ ๊ฒฝ๋ก์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ํ ์ฝ๋ ์๊ฐํ๋ ๊ฐ๋ฐ์๊ฐ ํ๋๊ทธ๊ฐ ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ์ค์ ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์์ ์ ์ฉ ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋๋ก ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ํด์ค๋๋ค.
์ ์ด ํ๋ฆ ๋ถ์: ์คํ ๊ฒฝ๋ก
์ ์ด ํ๋ฆ ๋ถ์์ ์ฝ๋์ ๋ชจ๋ ๊ฐ๋ฅํ ์คํ ๊ฒฝ๋ก๋ฅผ ๊ทธ๋ํ๋ก ๋ํ๋ด์ด, ์ด๋ค ๋ฌธ์ฅ์ด ๋๋ฌ ๊ฐ๋ฅํ์ง, ์ด๋ค ๋ฌธ์ฅ์ด ์คํ๋์ง ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ถ๊ธฐ๊ฐ ์คํ๋๊ธฐ ์ํด ์ด๋ค ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ด์ผ ํ๋์ง๋ฅผ ์๋ณํฉ๋๋ค. ์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ ๋ค๋ฅธ ์ฌ๋ฌ ๋ถ์์ ๊ธฐ์ด๊ฐ ๋ฉ๋๋ค. ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ์ ์ด ํ๋ฆ ๊ทธ๋ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๊ณ , ๋๋ฌ ๊ฐ๋ฅ์ฑ ๋ถ์์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋์ง ์๋ ์ฝ๋๋ฅผ ์๋ณํ๋ฉฐ, ์ํ ๋ณต์ก๋์ ๊ฐ์ ๋ณต์ก๋ ์งํ๋ ์ ์ด ํ๋ฆ ๊ทธ๋ํ์์ ๋์ถ๋ฉ๋๋ค.
์ ์ด ํ๋ฆ ๋ถ์์ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋(๋ฐ๋ ์ฝ๋)๋ฅผ ํ์งํ๋ ํต์ฌ ์์์ ๋๋ค. ์ ์๋ ๋์ด ์์ง๋ง ์ด๋ค ์ง์ ์ ์์๋ ๋๋ฌํ ์ ์๋ ์ฝ๋๋ ์ ์ด ํ๋ฆ ๊ทธ๋ํ์ ์ธ๋ฐ์ด๋ ์ฃ์ง๊ฐ ์์ผ๋ฏ๋ก ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ก ์๋ณํ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ์ ํ์ด ํ๋ํ ์ ์ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ข ์์ฑ ๋งคํ ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์์ต๋๋ค . ์ด๋ค ์ฝ๋ ๊ฒฝ๋ก๊ฐ ํ์ฑ ์ํ์ด๊ณ ์ด๋ค ๊ฒฝ๋ก๊ฐ ์ฌ์ฉ๋์ง ์๋์ง ํ์ ํ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ๊ณผ์ ์์ ์์ ํ๊ฒ ์ ๊ฑฐํ ์ ์๋ ์ฝ๋์ ๋ณด์กดํด์ผ ํ๋ ์ฝ๋๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
ํธ์ถ ๊ทธ๋ํ ๋ถ์: ๊ตฌ์ฑ ์์ ๊ฐ ๊ด๊ณ
ํธ์ถ ๊ทธ๋ํ ๋ถ์์ ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์์ ์ด๋ค ํจ์๊ฐ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๋์ง ๋ณด์ฌ์ฃผ๋ ๋ชจ๋ธ์ ๊ตฌ์ถํฉ๋๋ค. ์์ ํ ํธ์ถ ๊ทธ๋ํ๋ ํธ์ถ์ ์ด๊ฑฐ, ํผํธ์ถ์ ์ด๊ฑฐ, ์ ์ด์ ์ข ์์ฑ ๋ถ์, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ง์ ์ ์์๋ ํธ์ถ๋์ง ์๋ ํจ์ ์๋ณ์ ์ง์ํฉ๋๋ค. ์ฌ๋ฌ ํ์ผ, ๋ชจ๋, ํจํค์ง์ ๊ฑธ์ณ ์๋ ๊ตฌ์ฑ ์์ ๊ฐ ํธ์ถ ๊ทธ๋ํ ๋ถ์์ ์ํฅ ๋ถ์์ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค. ์ํฅ ๋ถ์์ด๋ ํน์ ํจ์๋ ์ธํฐํ์ด์ค๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ด๋ค ๋ถ๋ถ์ด ์ํฅ์ ๋ฐ์์ง ํ๋จํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋จ์ผ ์ธ์ด, ๋จ์ผ ์ ์ฅ์ ์ฝ๋๋ฒ ์ด์ค์์๋ ๋๋ถ๋ถ์ ์ฑ์ํ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ํธ์ถ ๊ทธ๋ํ ๊ตฌ์ถ์ ์ ์ง์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ค์ค ์ธ์ด ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์๋ ์์ ํ ํธ์ถ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ์์คํ ๋ด ๋ชจ๋ ์ธ์ด๋ฅผ ์์งํ๊ณ ์ธ์ด ๊ฐ ํธ์ถ ๊ด๊ณ๋ฅผ ํด๊ฒฐํ๋ ํตํฉ ๋ถ์ ํ๋ซํผ์ด ํ์ํฉ๋๋ค. JavaScript ๋ฐ Node.js ์ฝ๋๋ฒ ์ด์ค ์ ๊ฒฝ์ฐ ๋์ ๋ชจ๋ ๋ก๋ฉ, ํ๋กํ ํ์ ๊ธฐ๋ฐ ๋์คํจ์น, ์ฝ๋ฐฑ ํจํด์ผ๋ก ์ธํด ๋์ฑ ๋ณต์กํด์ง๋๋ค. COBOL, JCL, SQL ๋ฐ ์ต์ ์๋น์ค ๊ณ์ธต์ด ํผํฉ๋ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๊ฒฝ์ฐ, ๋ฌธ์ ๋ ํจ์ฌ ๋ ์ฌ๊ฐํด์ง๋ฉฐ, ์ธ์ด๋ณ ํ์์ ์ ์ฒด ์์คํ ์ ํํํ๋ ๊ต์ฐจ ์ธ์ด ๊ทธ๋ํ ๋ชจ๋ธ์ด ํ์ํฉ๋๋ค.
์ ์ ๋ถ์์ด ๊ฐ์งํ๋ ๊ฒ: ์ค์ฉ์ ์ธ ๋ถ๋ฅ ์ฒด๊ณ
์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ํ์งํ๋ ๋ฌธ์ ์ ํ์ ๋งค์ฐ ๊ด๋ฒ์ํ๋ฉฐ, ๊ฐ ๋๊ตฌ๋ ์ด๋ฌํ ๋ฒ์์ ํ์ ์งํฉ์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ๋ค๋ฃน๋๋ค. ๋ถ๋ฅ ์ฒด๊ณ๋ฅผ ์ดํดํ๋ฉด ํ์ ๋๊ตฌ์ ๊ธฐ๋ฅ์ ํน์ ํ์ง ์๊ตฌ ์ฌํญ์ ๋ง์ถฐ ์ ํํ ์ ์์ต๋๋ค.
ํจํด ๋ฐ ์ค์ผ ๋ถ์์ ํตํด ๋ฐ๊ฒฌ๋ ๋ณด์ ์ทจ์ฝ์ :
- SQL ์ธ์ ์ , ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ , ๋ช ๋ น ์ธ์ ์ ์ ์ฌ์ฉ์ ์ ์ด ์์ค์์ ๋ณด์ ์ฑํฌ๋ก ์ค์ผ ์ ํ๋ฅผ ํตํด ๋ฐ์ํฉ๋๋ค.
- ์์ ํ์ง ์์ ์ํธํ ์ฌ์ฉ: ์ทจ์ฝํ ์๊ณ ๋ฆฌ์ฆ, ๋ถ์ถฉ๋ถํ ํค ๊ธธ์ด, ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ํธํ ๋ชจ๋
- ์์ค ์ฝ๋์ ํ๋์ฝ๋ฉ๋ ์๊ฒฉ ์ฆ๋ช , API ํค ๋ฐ ๋น๋ฐ ๊ฐ
- ์์ ํ์ง ์์ ์ญ์ง๋ ฌํ ํจํด ๋ฐ ์์ ํ์ง ์์ XML ๊ตฌ๋ฌธ ๋ถ์ ๊ตฌ์ฑ
- ํ์ผ ์ ๊ทผ ์์ ์์์ ๊ฒฝ๋ก ํ์ ์ทจ์ฝ์
๊ตฌ์กฐ ๋ถ์์ ํตํด ๋ฐ๊ฒฌ๋ ์ฝ๋ ํ์ง ๋ฐ ์ ์ง๋ณด์์ฑ ๋ฌธ์ :
- ๊ณผ๋ํ ์ํ ๋ณต์ก๋๋ ์ฝ๋๋ฅผ ์์ ํ๊ฒ ํ ์คํธํ๊ณ ์์ ํ๊ธฐ ์ด๋ ต๋ค๋ ๊ฒ์ ๋ํ๋ ๋๋ค.
- ํจ์์ ํด๋์ค๊ฐ ๋๋ฌด ๊ธธ์ด์ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐํ๋ ๊ฒฝ์ฐ
- ์ค๋ณต๋ ์ฝ๋ ๋ธ๋ก์ ํ์ชฝ์ ์ ๋ฐ์ดํธ๋์์ง๋ง ๋ค๋ฅธ ์ชฝ์ ์ ๋ฐ์ดํธ๋์ง ์์์ ๋ ์ ์ง ๊ด๋ฆฌ ์ํ์ ์ด๋ํฉ๋๋ค.
- ์ฌ์ฉ๋์ง ์๋ ๋ณ์, ๋งค๊ฐ๋ณ์ ๋ฐ ๊ฐ์ ธ์ค๊ธฐ๋ ๋์์ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ์ผ๊ด์ฑ ์๋ ๋ช ๋ช ๊ท์น๊ณผ ์คํ์ผ ์๋ฐ์ผ๋ก ์ธํด ๊ฐ๋ ์ฑ์ด ์ ํ๋จ
์๋ฏธ๋ก ์ ๋ถ์ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ํตํด ๋ฐ๊ฒฌ๋ ์ ํ์ฑ ๋ฌธ์ :
- null ์์ ์ฑ ๊ฐ์ ๊ฐ ์๋ ์ธ์ด์์์ null ์ญ์ฐธ์กฐ
- ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ฅผ ์ฝ์ผ๋ฉด ์ ์๋์ง ์์ ๋์์ด ๋ฐ์ํฉ๋๋ค.
- ์ฐ์ ์ฐ์ฐ์์ ๋ฐ์ํ๋ ์ ์ ์ค๋ฒํ๋ก ๋ฐ ์ธ๋ํ๋ก
- ํ๋ํ ๋ฆฌ์์ค๊ฐ ๋ชจ๋ ์ฝ๋ ๊ฒฝ๋ก์์ ํด์ ๋์ง ์๋ ๋ฆฌ์์ค ๋์ ํ์
- ์ค๋ฅ๋ฅผ ๋ฌต์ดํ๋ ์๋ชป๋ ์์ธ ์ฒ๋ฆฌ
ํธ์ถ ๊ทธ๋ํ ๋ฐ ์์กด์ฑ ๋ถ์์ ํตํด ๋ฐ๊ฒฌ๋ ๊ตฌ์กฐ์ ๋ฌธ์ ์ :
- ์ด๋ค ์ง์ ์ ์์๋ ๋ฐ์ ์์ ์ฐ๊ฒฐ๋์ง ์๋ ํตํ ๋ถ๊ฐ ์ํ์ ๋๋ค.
- ๋ชจ๋ ๊ฐ์ ์ํ ์ข ์์ฑ์ ์ํคํ ์ฒ ๋ถ๋ฆฌ๊ฐ ๋ฏธํกํจ์ ๋ํ๋ ๋๋ค.
- ๋์ฒด ๊ตฌํ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋ ์ฝ๋๋ฒ ์ด์ค์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ํจ์ ์ฌ์ฉ
- ๋ฌด์กฐ๊ฑด ๋ฐํ ๋๋ ์์ธ ๋ฐ์ ํ ๋๋ฌํ ์ ์๋ ์ฝ๋
- null์ ๋ฐํํ ์ ์๋ ํจ์์์ ๋ฐํ๋ ๊ฐ์ ๋ํด ์ญ์ฐธ์กฐ ์ ์ null ๊ฒ์ฌ๊ฐ ๋๋ฝ๋์์ต๋๋ค.
Node.js ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๊ธฐํ ๋์ ๋ฐํ์ ํ๊ฒฝ ์ ๊ฒฝ์ฐ , ํ์ง ๋ฒ์ฃผ๋ ๋น๋๊ธฐ ํจํด๊น์ง ํ์ฅ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ๋ก๋ฏธ์ค ๊ฑฐ๋ถ ํธ๋ค๋ฌ ๋๋ฝ, ์ฝ๋ฐฑ ์ค๋ฅ ์ฐ์ ํจํด ์๋ฐ, ์ด๋ฒคํธ ์ด๋ฏธํฐ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. Rust ๋ฐ ์์คํ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ์๋ฒฝํ๊ฒ ๊ฒ์ฆํ ์ ์๋ ์๋ช ์ฃผ๊ธฐ ์๋ฐ, ์์ ํ์ง ์์ ๋ธ๋ก ์ฌ์ฉ, ๋์์ฑ ์์ ์ฑ ์์ฑ์ ๋ํ ๋ถ์์ ์ค์ ์ ๋ก๋๋ค.
์ ์ ๋ถ์์ผ๋ก๋ ๊ฐ์งํ ์ ์๋ ๊ฒ
์ ์ ๋ถ์์ ํ๊ณ๋ฅผ ์ดํดํ๋ ๊ฒ์ ๊ทธ ๊ธฐ๋ฅ์ ์ดํดํ๋ ๊ฒ๋งํผ ์ค์ํฉ๋๋ค. ์ ์ ๋ถ์์ด ๋ชจ๋ ๋ฒ๊ทธ๋ฅผ ์ก์๋ผ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ๋ ํ์ ์ค๋งํ ์ ์์ผ๋ฉฐ, ๊น๋ํ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ๋ฅผ ์๋ชป ์ค์ ํ ์๋ ์์ต๋๋ค. ์ฌ๋ฌ ์ ํ์ ๋ฌธ์ ๋ ๊ตฌ์กฐ์ ์ผ๋ก ์ ์ ๋ถ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
์คํ ์ค์๋ง ๋ฐ์ํ๋ ๋์์ ์ ์ ๋ถ์์ผ๋ก๋ ํ์งํ ์ ์์ต๋๋ค. ์ฅ์๊ฐ ์คํ ํ์๋ง ๋ํ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋์, ํน์ ๋ถํ ํจํด์์์ ์ฑ๋ฅ ์ ํ, ๋น๊ฒฐ์ ์ ์ธ ์ค๋ ๋ ์ค์ผ์ค๋ง์ ์์กดํ๋ ๋์์ฑ ๋ฒ๊ทธ, ๊ทธ๋ฆฌ๊ณ ์์์น ๋ชปํ ๋ฐํ์ ์ํ ์กฐํฉ์ผ๋ก ์ธํ ํฌ๋์ ๋ฑ์ ๋ชจ๋ ์คํ์ ํตํด์๋ง ํ์งํ ์ ์์ต๋๋ค. ๋์ ๋ถ์, ํ๋กํ์ผ๋ง, ์คํธ๋ ์ค ํ ์คํธ๊ฐ ์ด๋ฌํ ์์ญ์ ๋ค๋ฃน๋๋ค.
๋๋ฉ์ธ ์ง์์ ์์กดํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ค๋ฅ๋ ์ ์ ๋ถ์์ผ๋ก๋ ํ์งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ชป๋ ๊ณต์์ผ๋ก ์ธํด ์ด์๋ฅผ ์๋ชป ๊ณ์ฐํ๋ ํจ์, ์๋ชป๋ ์๊ฐ ๋ฒ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๋ ๋ณด๊ณ ์, ๋๋ ์๋ชป๋ ์ฌ์ฉ์ ์งํฉ์ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ๊ถํ ํ์ธ ๋ฑ์ ์ฝ๋์ ๋์ ์๋์ ๋ํ ์๋ฏธ๋ก ์ ์ง์์ด ํ์ํ ์ ํ์ฑ ์ค๋ฅ์ ๋๋ค. ์ ์ ๋ถ์์ ์ฝ๋๊ฐ ๊ตฌ์กฐ์ ํจํด์ ์ค์ํ๋์ง ์ฌ๋ถ๋ ๊ฒ์ฆํ ์ ์์ง๋ง, ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅธ ๋น์ฆ๋์ค ๋์์ ๊ตฌํํ๋์ง๋ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ถ์ ๊ธฐ๋ฅ ํ ์คํธ์ ๋ช ์ธ ๊ฒํ ๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค.
์์ค ์ฝ๋๊ฐ ์๋ ๋ฐฐํฌ ์ํฐํฉํธ, ์ธํ๋ผ ์ ์ ๋ฐ ํ๊ฒฝ ์ค์ ์ ์กด์ฌํ๋ ๊ตฌ์ฑ ์ทจ์ฝ์ ์ ์ธํ๋ผ ์ฝ๋ ๋ถ์์ ํตํ ์ต์ ์ ์ ๋ถ์์ผ๋ก ๋ถ๋ถ์ ์ผ๋ก ํ์ ํ ์ ์์ง๋ง, ๋ง์ ๊ตฌ์ฑ ๋ฌธ์ ๋ ๋ฐํ์ ์ ๋๋ ์ฝ๋์ ์คํ ํ๊ฒฝ ๊ฐ์ ์ํธ ์์ฉ์์๋ง ๋๋ฌ๋ฉ๋๋ค.
์ฌ๋ฌ ๊ตฌ์ฑ ์์์ ๊ฑธ์ณ ์๊ฑฐ๋, ์ธ์ ์ํ๋ฅผ ํฌํจํ๊ฑฐ๋, ํธ์ถ ์ฒด์ธ ์ ์ฒด์ ๊ฑธ์ณ ์ฌ๋ฌ ๋ณด์ ๊ฒ์ฌ์ ์ํธ ์์ฉ์ ์์กดํ๋ ๋ณต์กํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๊ฒฐํจ์ ์ ์ ๋ถ์์ผ๋ก ์ ํํ๊ฒ ์ถ๋ก ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฌํ ๋ฒ์ฃผ์์๋ ์คํ๊ณผ ๋ฏธํ์ด ํํ ๋ฐ์ํ๋ฉฐ, ๋ฐ๊ฒฌ๋ ๊ฒฐํจ์ ์ ํํ๊ฒ ํ๊ฐํ๋ ค๋ฉด ์ ๋ฌธ๊ฐ์ ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค.
์ ์ ๋ถ์ ๋๊ตฌ ํ๊ฐ ๋ฐ ์ ํ
์ ์ ๋ถ์ ๋๊ตฌ ์ ํ์ ์ ํฉ์ฑ ํ๊ฐ ๋ฌธ์ ์ ๊ฐ์ต๋๋ค. ์ด๋ค ๋๊ตฌ์ ๊ธฐ๋ฅ์ด ์ฝ๋๋ฒ ์ด์ค, ํ, ๊ทธ๋ฆฌ๊ณ ์กฐ์ง์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ๋ถํฉํ๋์ง๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ๋๊ตฌ๋ค์ด ํฌ๊ฒ ์ฐจ์ด๊ฐ ๋๋ ๋ถ๋ถ์ ์ธ์ด ์ง์, ๋ถ์ ๊น์ด, ์คํ๋ฅ , ํตํฉ ์ง์, ๊ทธ๋ฆฌ๊ณ ํ์ฅ์ฑ์ ๋๋ค.
์ธ์ด ์ง์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ์ฝ ์กฐ๊ฑด์ ๋๋ค. ์ฝ๋๋ฒ ์ด์ค์ ์ฌ์ฉ๋ ์ธ์ด๋ฅผ ์ง์ํ์ง ์๋ ๋๊ตฌ๋ ํด๋น ์ฝ๋๋ฒ ์ด์ค์ ์๋ฌด๋ฐ ๊ฐ์น๋ฅผ ์ ๊ณตํ์ง ๋ชปํฉ๋๋ค. ๋ค๊ตญ์ด ํ๊ฒฝ์์๋ ๊ฐ ์ธ์ด์ ํนํ๋ ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ, ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๊ณ ์ธ์ด ๊ฐ ์ข ์์ฑ ํด๊ฒฐ ๊ธฐ๋ฅ์ ํตํฉํ ํตํฉ ํ๋ซํผ์ ์ฌ์ฉํ๋ ๊ฒ ์ค์์ ์ ํํด์ผ ํฉ๋๋ค. ์ต์ ๊ตฌ์ฑ ์์์ ํจ๊ป ์๋นํ ์์ ๋ ๊ฑฐ์ ์ฝ๋๊ฐ ์กด์ฌํ๋ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ๊ฒฝ์ฐ, ์ธ์ด ๊ฐ ์ข ์์ฑ ๊ด๊ณ๋ ๋จ์ผ ์ธ์ด ๋๊ตฌ๋ก๋ ํํํ ์ ์๋ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ํตํฉ ํ๋ซํผ ๋ฐฉ์์ด ์ผ๋ฐ์ ์ผ๋ก ํ์์ ์ ๋๋ค.
๋ถ์ ๊น์ด๋ ๋๊ตฌ๊ฐ ์ฐพ์๋ผ ์ ์๋ ๋ฌธ์ ๋ฒ์ฃผ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ดํ ๋ฐ ๊ตฌ๋ฌธ ์์ค์์๋ง ์๋ํ๋ ๋๊ตฌ๋ ๋ฐ์ดํฐ ํ๋ฆ ์ทจ์ฝ์ ์ด๋ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ฐพ์ง ๋ชปํฉ๋๋ค. ์ ์ฒด ํ๋ก์์ ๊ฐ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ๊ตฌํํ๋ ๋๊ตฌ๋ ๋ ๋ง์ ์ทจ์ฝ์ ์ ์ฐพ์ง๋ง, ์คํ์ด ๋ ๋ง์ด ๋ฐ์ํ๊ณ ๋ ๋ง์ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ํ์๋ก ํฉ๋๋ค. ์ ์ ํ ๋ถ์ ๊น์ด๋ ์ฝ๋๋ฒ ์ด์ค์ ์ํ ํ๋กํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ณด์์ด ๋งค์ฐ ์ค์ํ ๊ธ์ต ๋๋ ์๋ฃ ์์คํ ์ ๊ฒฝ์ฐ ์ฌ์ธต์ ์ธ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ด ์ผ๋ฐ์ ์ผ๋ก ํ์ํ์ง๋ง, ๋ด๋ถ ๋๊ตฌ ์ฝ๋๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ๊ฐ๋ฒผ์ด ๊ตฌ์กฐ ๋ถ์์ผ๋ก๋ ์ถฉ๋ถํ ์ ์์ต๋๋ค.
์คํ๋ฅ ์ ์ค์ง์ ์ธ ๋์ ์ ์ฝ ์กฐ๊ฑด์ ๋๋ค. ๋ถ์ํ๋ ๋ชจ๋ ์ฝ๋๋ฒ ์ด์ค์์ ์๋ง์ ๋น๋ฌธ์ ๋ฅผ ์๋ชป๋ ๊ฒ์ผ๋ก ํ์ํ๋ ๋๊ตฌ๋ ํด๋น ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๋๋ก ์ค์ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด๋ ํ์ด ๋ถ์ ๊ท์น์ ์ด์ ์ ์๋ ๋์์ ์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ฌด์ํ๋ ๋ฐ ๋๋ ์ง์์ ์ธ ๋น์ฉ์ ๋ถ๋ดํ๊ฒ ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์คํ๋ฅ ์ ๋๊ตฌ์ ๋ถ์ ํ์ง๊ณผ ์ ์ฉ๋๋ ๊ท์น์ ํน์ด์ฑ ๋ชจ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋๊ตฌ๋ฅผ ํ๊ฐํ๋ ํ์ ๊ณต๊ธ์ ์ฒด๊ฐ ์ ๊ณตํ๋ ํฉ์ฑ ์ฝ๋๋ฒ ์ด์ค ๊ธฐ๋ฐ ๋ฒค์น๋งํฌ์ ์์กดํ๋ ๋์ , ์์ฌ ์ฝ๋์ ๋ํ ์ํ์ ์ฌ์ฉํ์ฌ ๋๊ตฌ๋ฅผ ์คํํ๊ณ ์กฐ์น ๊ฐ๋ฅํ ๊ฒฐ๊ณผ์ ๋ฌด์๋ ๊ฒฐ๊ณผ์ ๋น์จ์ ์ธก์ ํด์ผ ํฉ๋๋ค.
CI/CD ๋ฐ IDE ํตํฉ์ ํด๋น ๋๊ตฌ๊ฐ ์ค์ ๋ก ํ์ฉ๋ ์ง ์๋๋ฉด ์ผํ์ฑ ๊ฐ์ฌ ํ๋์ผ๋ก๋ง ์ทจ๊ธ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ค์ํ ์์์ ๋๋ค. ๋ณ๋์ ์๋ ์คํ์ด ํ์ํ๊ณ ๊ฒฐ๊ณผ๊ฐ ๋ณ๋์ ์ธํฐํ์ด์ค์ ํ์๋๋ ๋๊ตฌ๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ IDE์ ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ํ์ํ๊ณ ์๋ก์ด ์๋ฐ ์ฌํญ์ ํฌํจํ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ์คํจ ์ฒ๋ฆฌํ๋ ๋๊ตฌ๋ณด๋ค ํ์ฉ๋๊ฐ ๋จ์ด์ง ๊ฒ์ ๋๋ค. ํตํฉ ํ์ง์ ์ผ๊ด๋ ์ ์ฉ ๋ฒ์๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ์์ด ๋ถ์ ํ์ง๋งํผ์ด๋ ์ค์ํ ์ค์ง์ ์ธ ๋์ ์์ธ์ ๋๋ค.
๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์๋ ํ์ฅ์ฑ์ด ์ค์ํ ์ ์ฝ ์กฐ๊ฑด์ด ๋ฉ๋๋ค. ๋ฐฑ๋ง ์ค์ง๋ฆฌ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ๋ ๋ฐ ๋ช ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๋๊ตฌ๋ ์ปค๋ฐ์ด๋ ํ ๋ฆฌํ์คํธ ์ํฌํ๋ก์ ํตํฉ๋ ์ ์์ต๋๋ค. ๋งค๋ฒ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ถ์ํ๋ ๋์ ๋ณ๊ฒฝ๋ ํ์ผ๊ณผ ๊ทธ ์ข ์์ฑ๋ง ์ฌ๋ถ์ํ๋ ์ฆ๋ถ ๋ถ์์ ์ปค๋ฐ๋ณ ์ ์ ๋ถ์์ ๋๊ท๋ชจ๋ก ๊ตฌํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ๋ฐ๋ผ์ ๋๊ตฌ๋ ์ ์ฒด ์ค์บ ์ฑ๋ฅ๋ฟ๋ง ์๋๋ผ ์ฆ๋ถ ๋ถ์ ๊ธฐ๋ฅ๋ ํจ๊ป ํ๊ฐํด์ผ ํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๋ค๊ตญ์ด ํ๊ฒฝ์์์ ์ ์ ๋ถ์
์ฌ๋ฌ ์ธ์ด, ์ฌ๋ฌ ํ๋ซํผ, ๊ทธ๋ฆฌ๊ณ ์์ญ ๋ ์ ๊ฑธ์ณ ์ถ์ ๋ ์ฝ๋๋ก ๊ตฌ์ฑ๋ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์๋ ์ ์ ๋ถ์์ ์ด๋ ค์์ด ํฌ๊ฒ ์ฆ๊ฐํฉ๋๋ค. ๋จ์ผ ์ธ์ด๋ก ์์ฑ๋ ์๋ก์ด ์ฝ๋๋ฒ ์ด์ค์์๋ ํจ๊ณผ์ ์ธ ๋ถ์ ์ ๊ทผ ๋ฐฉ์์ด ์ด๋ฌํ ํ๊ฒฝ์์๋ ์ ๋๋ก ์๋ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ด๋ ๋๊ตฌ๊ฐ ํด๋น ์ธ์ด๋ฅผ ์ง์ํ์ง ์๊ฑฐ๋, ์ธ์ด ๊ฐ ์ข ์์ฑ์ ๋ชจ๋ธ๋งํ ์ ์๊ฑฐ๋, ๋ ๊ฑฐ์ ์ฝ๋์ ๊ตฌ์กฐ์ ํจํด์ด ์ต์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ํด ์ค๊ณ๋ ๋๊ตฌ์ ๊ฐ์ ๊ณผ ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด COBOL ํ๋ก๊ทธ๋จ์ ๋๋ถ๋ถ์ ์ ์ ๋ถ์ ํ๋ ์์ํฌ๊ฐ ๊ฐ์ ํ๋ ํจ์-ํด๋์ค ๋ชจ๋ธ๊ณผ๋ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ, ๋๋น์ , ์น์ , ๋จ๋ฝ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ ๋ชจ๋ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์นดํผ๋ถ ๊ธฐ๋ฐ์ ๊ณต์ ์ ์, PERFORM-THRU ๋จ๋ฝ ๋ฒ์, ๊ทธ๋ฆฌ๊ณ camelCase๋ ๋ฐ์ค ๋์ ํ์ดํ์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๋ช ๋ช ๊ท์น์ COBOL์ ๊ตฌ์กฐ์ ํน์ง์ธ๋ฐ, ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์๋ ๋๊ตฌ๋ค์ ์ด๋ฌํ ํน์ง๋ค์ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ๊ฑฐ๋ ์์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฉ์ธํ๋ ์ ๋ฐฐ์น ํ๋ก๊ทธ๋จ์ ์คํ์ ์กฐ์จํ๊ณ ํ๋ก๊ทธ๋จ ๊ฐ์ ํ๋ฅด๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ์ํ๋ JCL์ ์ด๋ค ๋ฒ์ฉ ์ ์ ๋ถ์ ํ๋ซํผ์์๋ ์ ํ ๋ถ์๋์ง ์์ต๋๋ค.
๋ฉ์ธํ๋ ์ ๋ฐ ๋ ๊ฑฐ์ ํ๋ซํผ๊ณผ ์ต์ ์๋น์ค๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ์กฐ์ง์์๋ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง์ ๊ตฌ์กฐ์ ์ธ ๊ฒฉ์ฐจ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์ต์ ์ฝ๋๋ ์ฒ ์ ํ๊ฒ ๋ถ์ํ์ง๋ง ๋ ๊ฑฐ์ ์ฝ๋๋ ์ ํ ๋ถ์ํ์ง ์๊ฑฐ๋, ๊ฐ ์ธ์ด๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋ถ์ํ์ฌ ์ธ์ด ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฉ์ฐจ๋ ํนํ ํด๊ฒฐํ๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด ๋ถ๋ถ, ์ฆ COBOL ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํด๋น ์ถ๋ ฅ์ ์ฝ๋ Java ์๋น์ค์ ์ํฅ์ ๋ฏธ์น๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ณ๊ฒฝ์ด ๋ ๊ฑฐ์ ๋ฐฐ์น ์ฒ๋ฆฌ์ ์ต์ API ๊ณ์ธต ๋ชจ๋์ ๋์์ ์ํฅ์ ๋ฏธ์น๋ ์ธ์ด ๊ฐ ์ธํฐํ์ด์ค์์ ๊ฐ์ฅ ์ฌ๊ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค. ๋ฉ์ธํ๋ ์ ํ๋ํ ๊ณํ ๋ฐ IBM i RPG ํ๋ซํผ ์ ํ ์ฌ๋ก์์ ์ค๋ช ํ๋ฏ์ด , ๋ ๊ฑฐ์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ํฌํธํด๋ฆฌ์ค์ ํํฉ์ ํ์ ํ๋ ๊ฒ์ ๊ธฐ์กด ์ํ์ ํด๊ฒฐํ๋ฉด์ ์๋ก์ด ์ํ์ ์ด๋ํ์ง ์๋ ๋ชจ๋ ํ๋ํ ํ๋ก๊ทธ๋จ ๊ณํ์ ํ์ ์กฐ๊ฑด์ ๋๋ค.
๋ฐฉ๋ฒ SMART TS XL ๊ธฐ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ ์ฝ๋ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
SMART TS XL ์ด ํ๋ซํผ์ ์ํฐํ๋ผ์ด์ฆ ์ฝ๋๋ฒ ์ด์ค๋ ํ์ผ ์์ค์ด๋ ์ ์ฅ์ ์์ค์ด ์๋ ์์คํ ์์ค์์ ๋ถ์ํด์ผ ํ๋ค๋ ์ ์ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ์ํํธ์จ์ด ์ธํ ๋ฆฌ์ ์ค ํ๋ซํผ์ COBOL, JCL, Java, .NET, Python, JavaScript, TypeScript, SQL ๋ฑ ํ๊ฒฝ ๋ด ๋ชจ๋ ์ธ์ด์ ํ๋ซํผ์ ์์ค ์ฝ๋๋ฅผ ์์งํ๊ณ , ์ธ์ด๋ณ ๋ถ์์ ํตํด ๊ฐ ์ฝ๋๋ฅผ ํตํฉ๋ ์ํธ ์ฐธ์กฐ ๋ชจ๋ธ๋ก ํ์ฑํฉ๋๋ค. ์ด ๋ชจ๋ธ์ ์ ์ฒด ์์คํ ์ ๊ตฌ์กฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค. ์ฌ๊ธฐ์๋ ์ธ์ด ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ํธ์ถ ๊ทธ๋ํ, COBOL ์ ์์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์ ๊ฑฐ์ณ Java ์๋น์ค๋ก ์ ๋ฌ๋๋ ๊ฐ์ ์ถ์ ํ๋ ํ๋ ์์ค ๋ฐ์ดํฐ ํ๋ฆ ์ถ์ , ํ์ฑ ์ฝ๋ ๊ฒฝ๋ก์ ๋นํ์ฑ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ ์ด ํ๋ฆ ๊ทธ๋ํ, ๊ทธ๋ฆฌ๊ณ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ์๋ณํ๋ ์ข ์์ฑ ๋งต์ด ํฌํจ๋ฉ๋๋ค.
The ์ ์ ์ฝ๋ ๋ถ์ ์๋ฃจ์ ๊ทธ SMART TS XL provides๋ ๊ณตํต ๋์๋ณด๋๋ฅผ ํตํด ์กฐ์ ๋๋ ์ธ์ด๋ณ ๋ฆฐํฐ ๋ชจ์์ด ์๋๋๋ค. ์์คํ ์ ์ฒด๋ฅผ ๋ชจ๋ธ๋งํ๋ ํตํฉ ๋ถ์ ํ๋ซํผ์ผ๋ก, ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ ํ์ํ ์ธ์ด ๋ฐ ๊ตฌ์ฑ ์์ ๊ฐ ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ "์ด ํจ์๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ด๋ค ์ํฅ์ ๋ฐ์๊น์?"๋ผ๊ณ ์ง๋ฌธํ๋ฉด, ํ์ฌ ๋ณด๊ณ ์๋ ํ์ผ๋ง ๋ถ์ํ๋ ๋จ์ผ ์ธ์ด ๋๊ตฌ์ ๋ถ๋ถ์ ์ธ ๋ต๋ณ์ด ์๋, ํตํฉ๋ ์ข ์์ฑ ๊ทธ๋ํ์์ ๋์ถ๋ ์์ ํ ๋ต๋ณ์ ์ป์ ์ ์์ต๋๋ค. ๋ณด์ ๋ถ์๊ฐ๋ ์ค์ผ ๋ถ์์ ์ํํ ๋ ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ๋ง์ ์ธ์ด ๊ฒฝ๊ณ๋ฅผ ๋๋๋ค๋ ์๊ด์์ด ์์คํ ์ ์ฒด์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ถ์ฒ๋ถํฐ ์ต์ข ๋ชฉ์ ์ง๊น์ง ์ถ์ ํ ์ ์์ต๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ณํํ๋ ํ๋ํ ํ์ ์ต์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ์ฑ ์์์๋ง ๊ตญํ๋ ๋ณด๊ธฐ๊ฐ ์๋๋ผ, ๊ณ์ธต๋ณ, ์ธ์ด๋ณ, ํน์ ๊ด๊ณ ์ ํ๋ณ๋ก ๊ตฌ์ฑ๋ ๊ตฌ์ฑ ์์ ๊ฐ ์ข ์์ฑ์ ์๋ฒฝํ๊ฒ ํ์ ํ ์ ์์ต๋๋ค.
SMART TS XL์ด ํ๋ซํผ์ ์ํฐํ๋ผ์ด์ฆ ๊ฒ์ ๊ธฐ๋ฅ์ ์กฐ์ฌ ์ง์ ์ ์ ์ ๊ณตํ๋ฉฐ, ๋ฌธ์์ด ๋ฐ์ ๋น๋๊ฐ ์๋ ๊ตฌ์กฐ์ ๊ด๊ณ ์ ํ๋ณ๋ก ์ ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์ ์, ํธ์ถ, ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์นดํผ๋ถ ํฌํจ, SQL ์ฐธ์กฐ ๋ฐ API ๋ ธ์ถ์ด ๊ฒฐ๊ณผ ์งํฉ์์ ๊ตฌ๋ถ๋๋ฏ๋ก ๊ฐ๋ฐ์๋ ํ ์คํธ ์ผ์น ๋ชฉ๋ก์ ํํฐ๋งํ ํ์ ์์ด ํ์ํ ํน์ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ํ ์ฝ๋ ์๊ฐํ ๊ธฐ๋ฅ์ ์ฌ์ธต์ ์ธ ๊ตฌ์กฐ ๋ถ์์ ํ์ ๊ฐ๋ฅํ ์์๋ ๋ฐ ์ข ์์ฑ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณํํ์ฌ ๊ฐ๋ฐ์๊ฐ ๋ชจ๋ ์ฝ๋ ์ค์ ์์ฐจ์ ์ผ๋ก ์ฝ์ง ์๊ณ ๋ ๋ณต์กํ ์์คํ ์ ์ดํดํ ์ ์๋๋ก ํฉ๋๋ค.
์ ์ ๋ถ์์ ๊ธฐ์ด์ด์ง, ์ต์ข ๋ชฉ์ ์ง๊ฐ ์๋๋๋ค.
์ ์ ๋ถ์์ ๋๊ตฌ๊ฐ ์๋ ์ธํ๋ผ๋ก ํ์ฉ๋ ๋ ๊ฐ์ฅ ํฐ ๊ฐ์น๋ฅผ ๋ฐํํฉ๋๋ค. ์ฆ, ๋ชจ๋ ์ฝ๋์์ ์ง์์ ์ผ๋ก ์คํ๋์ด ์ฒด๊ณ์ ์ผ๋ก ๊ฒํ ๋๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํตํฉํ์ฌ ํ์์ ๋ฐ๋ผ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ํ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์์ค์ ํตํฉ์ ๋ฌ์ฑํ ์กฐ์ง์ ์ ์ ๋ถ์์ ํตํด ํ์ง ๋ฐ ๋ณด์ ๊ด๋ฆฌ ๋ฐฉ์์ ์ ์ง์ ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค. ์ฆ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌํ ๋์ ๋ฐฉ์์์, ๋ฌธ์ ์ ๊ด๋ จ๋ ํจํด์ ์ฌ์ ์ ์ ๊ฑฐํ์ฌ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ๋ ์ฌ์ ์๋ฐฉ ๋ฐฉ์์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
๋ชฉํ ๋ฌ์ฑ์ ์ํ ํฌ์๋ ์ฃผ๋ก ๋๊ตฌ ํฌ์์ ๊ทธ์น์ง ์์ต๋๋ค. ๋ ์ด๋ ค์ด ๊ณผ์ ๋ ๋ฌธํ ๋ฐ ํ๋ก์ธ์ค ์ฐจ์์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์ฆ, ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฌต์ดํ๋ ๋์ ํด๊ฒฐํด์ผ ํ๋ค๋ ๊ธฐ๋์น๋ฅผ ํ๋ฆฝํ๊ณ , ํน์ ์ฝ๋๋ฒ ์ด์ค์ ๋ง์ถฐ ๋ถ์ ๊น์ด์ ์คํ๋ฅ ์ ๊ท ํ์ ์ ์งํ๋๋ก ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํ๊ณ , ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ IDE ๋ฐ CI ์ํฌํ๋ก์ ํตํฉํ์ฌ ๋ณ๋์ ๊ฒํ ๋จ๊ณ๊ฐ ์๋ ๊ฐ๋ฐ ๋จ๊ณ์์ ๋ฐ๋ก ํ์ธํ ์ ์๋๋ก ํ๊ณ , ์ฝ๋๋ฒ ์ด์ค๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ตฌ์ฑ์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๋๊ตฌ๋ ์ด๋ฌํ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง, ์กฐ์ง์ ์ค์ฒ์ ์ด๋ฅผ ์ง์์ํค๋ ์ญํ ์ ํฉ๋๋ค. ์ฌ๋ฌ ์ธ์ด, ์ฌ๋ฌ ํ๋ซํผ, ๊ทธ๋ฆฌ๊ณ ์์ญ ๋ ์ ๊ฑธ์ณ ์ถ์ ๋ ์ฝ๋๋ฅผ ์์ฐ๋ฅด๋ ์ด์ ์ฒด์ ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ, ๋๊ตฌ ๊ธฐ๋ฐ์ ์ด๋ฌํ ์ ์ฒด ๋ฒ์๋ฅผ ํฌ๊ดํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฝ๋๋ฒ ์ด์ค์ 80%๋ฅผ ๋ถ์ํ๋ ์ ์ ๋ถ์์ ๊ฐ์น๋ ์ ์ฒด ๋ถ์ ๊ฐ์น์ 80%์ ๋ถ๊ณผํ ๊ฒ์ด ์๋๋ผ, ๋ถ์๋์ง ์์ 20%์ ๋ด์ฌ๋ ์ํ์ ์ํด ์ ํ๋ฉ๋๋ค.