์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฝ๋ ๊ฒํ ์ํฌํ๋ก์ ํตํฉํ์ฌ ์ฝ๋ ํ์ง์ ํฌ๊ฒ ํฅ์์ํค๊ณ , ๋ฒ๊ทธ๋ฅผ ์ค์ด๋ฉฐ, ๊ธ๋ก๋ฒ ํ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
์ฝ๋ ํ์ง ๊ฐ์ํ: ์ฝ๋ ๊ฒํ ์๋ํ์์ ์ ์ ๋ถ์์ ํ
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ณ ํ์ง ์ฝ๋๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ํ๋ก์ ํธ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ํ์ด ์ง๋ฆฌ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด ํ์ฅ๋จ์ ๋ฐ๋ผ ์ผ๊ด๋ ์ฝ๋ ํ์ง์ ์ ์งํ๋ ๊ฒ์ด ์ ์ ๋ ์ค์ํ ๊ณผ์ ๊ฐ ๋๊ณ ์์ต๋๋ค. ๊ท์คํ์ง๋ง ๊ธฐ์กด์ ์๋ ์ฝ๋ ๊ฒํ ๋ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค. ์ด ์ง์ ์์ ์ ์ ๋ถ์์ ์ฝ๋ ๊ฒํ ์๋ํ์ ์ ๋ต์ ์ผ๋ก ํตํฉํ๋ ๊ฒ์ด ๊ธ๋ก๋ฒ ๊ฐ๋ฐ ํ์ ์ํ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ผ๋ก ๋ถ์ํฉ๋๋ค.
ํต์ฌ ๊ฐ๋ ์ดํด
ํตํฉ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ฃผ์ ์ฉ์ด๋ฅผ ๋ช ํํ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ฝ๋ ๊ฒํ ๋ ๋ฌด์์ ๋๊น?
์ฝ๋ ๊ฒํ ๋ ์์ค ์ฝ๋๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ฒ์ฌํ๋ ๊ฒ์ ๋๋ค. ์๋ ์์ฑ์๊ฐ ์๋ ๊ฐ๋ฐ์๊ฐ ์ ์ฌ์ ์ธ ์ค๋ฅ, ๋ณด์ ์ทจ์ฝ์ , ์คํ์ผ ๋ถ์ผ์น ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก ์ค์ ์ฌ๋ถ๋ฅผ ์ฝ๋๋ฅผ ํ์ธํ๋ ํ๋ก์ธ์ค์ ๋๋ค. ์ฃผ์ ๋ชฉํ๋ ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๊ณ , ์ง์์ ๊ณต์ ํ๊ณ , ๊ฒฐํจ์ด ํ๋ก๋์ ์ ๋๋ฌํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค.
์ ์ ๋ถ์์ด๋ ๋ฌด์์ ๋๊น?
์ ์ ๋ถ์์ ์ค์ ๋ก ์คํํ์ง ์๊ณ ์์ค ์ฝ๋๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ ์ ๋ถ์๊ธฐ๋ผ๊ณ ํ๋ ๋๊ตฌ๋ ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๋ฏธ๋ฆฌ ์ ์๋ ๊ท์น ์ธํธ๋ฅผ ์ ์ฉํ์ฌ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ตฌ๋ฌธ ์ค๋ฅ ๋ฐ ์ธ์ด ์๋ฐ.
- Null ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋ฆฌ์์ค ๋์ ๋ฐ off-by-one ์ค๋ฅ์ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ฒ๊ทธ.
- SQL ์ฝ์ , ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๋ฐ ์์ ํ์ง ์์ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๋ณด์ ์ทจ์ฝ์ .
- ์ฝ๋ ์คํ์ผ ๋ฐ ํฌ๋งท ๋ถ์ผ์น.
- ์ ์ฌ์ ์ธ ์ค๊ณ ๊ฒฐํจ ๋๋ ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ์ฝ๋ ๋์.
์ ์ ๋ถ์์ ์ฌ๋์ด ๊ฒํ ํ๊ธฐ ์ ์ ์ค์ ๋ ํ์ค์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๊ผผ๊ผผํ๊ฒ ๊ฒ์ฌํ๋ ์๋ํ๋ ๊ฐ์ฌ๊ด์ด๋ผ๊ณ ์๊ฐํ์ญ์์ค.
์ฝ๋ ๊ฒํ ์๋ํ๋ ๋ฌด์์ ๋๊น?
์ฝ๋ ๊ฒํ ์๋ํ๋ ์ฝ๋ ๊ฒํ ์ํฌํ๋ก์ ์ผ๋ถ๋ฅผ ์๋ํํ๋ ๋๊ตฌ ๋ฐ ํ๋ก์ธ์ค์ ๊ตฌํ์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ ์ธ๊ฐ ๊ฒํ ์๋ฅผ ์์ ํ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ์คํ๋ ค ๊ทธ๋ค์ ๊ธฐ๋ฅ์ ๊ฐํํ๊ณ ๋ฐ๋ณต์ ์ด๊ณ ๊ฐ๊ด์ ์ธ ๊ฒ์ฌ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์์์๋ ์๋ํ๋ ํ ์คํธ, ์ ์ ๋ถ์ ๋ฐ CI/CD ํ์ดํ๋ผ์ธ๊ณผ์ ํตํฉ์ด ํฌํจ๋ฉ๋๋ค.
์๋์ง: ์ฝ๋ ๊ฒํ ์๋ํ์ ์ ์ ๋ถ์
์ง์ ํ ํ์ ์ด๋ฌํ ๊ฐ๋ ์ ๊ฒฐํฉํ๋ ๋ฐ ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์๋ํ๋ ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค์ ํตํฉํ๋ฉด ํ์ด ํ์ง ๋ณด์ฆ์ ์ ๊ทผํ๋ ๋ฐฉ์์ด ๋ฐ๋๋๋ค.
์ฝ๋ ๊ฒํ ์๋ํ์ ์ ์ ๋ถ์์ ํตํฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ด์ ์ ๋ค๋ฉด์ ์ด๋ฉฐ ํนํ ๋ถ์ฐ๋๊ณ ๋ค์ํ ํ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ์กฐ๊ธฐ ๊ฒฐํจ ๊ฐ์ง: ์ ์ ๋ถ์๊ธฐ๋ ์ธ๊ฐ ๊ฒํ ์๊ฐ ์ฝ๋๋ฅผ ๋ณด๊ธฐ ์ ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ์๋น ๋ถ๋ถ์ ๋ฒ๊ทธ์ ์ทจ์ฝ์ ์ ํฌ์ฐฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋๋ ๋น์ฉ๊ณผ ๋ ธ๋ ฅ์ด ํฌ๊ฒ ์ค์ด๋ญ๋๋ค.
- ํ์ค์ ์ผ๊ด๋ ์ํ: ์ธ๊ฐ ๊ฒํ ์๋ ์ฝ๋ฉ ํ์ค์ ๋ํด ๋ค๋ฅธ ํด์์ ๊ฐ์ง ์ ์๊ฑฐ๋ ์ฌ์ํ ์คํ์ผ ์๋ฐ์ ๊ฐ๊ณผํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ๊ฐ๋ฐ์ ๋๋ ๊ฒํ ์์ ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ํด ์ด๋ฌํ ๊ท์น์ ๊ท ์ผํ๊ฒ ์ ์ฉํ์ฌ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ฒํ ์ ํผ๋ก ๊ฐ์: ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ๋ํด ์ฝ๋๋ฅผ ์ฌ์ ๊ฒ์ฌํจ์ผ๋ก์จ ์ ์ ๋ถ์์ ์ธ๊ฐ ๊ฒํ ์๊ฐ ๋ก์ง, ์ํคํ ์ฒ ๋ฐ ๋์์ธ๊ณผ ๊ฐ์ ์ฝ๋์ ๋ ๋ณต์กํ ์ธก๋ฉด์ ์ง์คํ ์ ์๋๋ก ํด์ค๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฒํ ํผ๋ก๋ฅผ ๋ฐฉ์งํ๊ณ ๋ ์ฌ์ธต์ ์ด๊ณ ๊ฐ์น ์๋ ํผ๋๋ฐฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ ์ฃผ๊ธฐ ๊ฐ์ํ: ์๋ํ๋ ๊ฒ์ฌ๋ ๊ฐ๋ฐ์์๊ฒ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค. ํ ๋ฆฌํ์คํธ๊ฐ ์ ์ถ๋๋ฉด ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฆ์ ์คํํ์ฌ ์ธ๊ฐ ๊ฒํ ์๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ๊ฐ์กฐ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ฌธ์ ๋ฅผ ์ฌ์ ์ ํด๊ฒฐํ์ฌ ๋ณํฉ ํ๋ก์ธ์ค์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
- ๋ณด์ ํ์ธ ๊ฐํ: ๋ณด์ ์ทจ์ฝ์ ์ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ์์๋ ์ ์์ต๋๋ค. ๋ง์ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์ผ๋ฐ์ ์ธ ๋ณด์ ๊ฒฐํจ์ ์๋ณํ๋๋ก ํน๋ณํ ์ค๊ณ๋์ด ์ค์ํ ์ฒซ ๋ฒ์งธ ๋ฐฉ์ด์ ์ญํ ์ ํฉ๋๋ค.
- ํฅ์๋ ์ง์ ๊ณต์ : ์ ์ ๋ถ์์์ ๊ฐ์กฐ ํ์๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ผ๊ด๋๊ฒ ์ ์ฉํ๋ฉด ํนํ ์๋ก์ด ํ ๊ตฌ์ฑ์์ด๋ ์ต์ํ์ง ์์ ์ฝ๋๋ฒ ์ด์ค๋ก ์์ ํ๋ ๊ฐ๋ฐ์๋ฅผ ๋ฏธ๋ฌํ๊ฒ ๊ต์กํ ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ํ์ ์ํ ํ์ฅ์ฑ: ๋ค๋ฅธ ์๊ฐ๋์ ๋ถ์ฐ๋์ด ์๊ณ ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์์ ์์ ํ๋ ํ์ ๊ฒฝ์ฐ ์๋ ๊ฒํ ๊ฐ ์ฌ๊ฐํ ๋ณ๋ชฉ ํ์์ด ๋ ์ ์์ต๋๋ค. ์๋ํ๋ฅผ ํตํด ํ ์์น ๋๋ ๊ทผ๋ฌด ์๊ฐ์ ๊ด๊ณ์์ด ํ์ง ๊ฒ์ฌ๊ฐ ์ผ๊ด๋๊ณ ํจ์จ์ ์ผ๋ก ์ํ๋ฉ๋๋ค.
์ ์ ๋ถ์ ํตํฉ์ ์ฃผ์ ๊ตฌ์ฑ ์์
์ ์ ๋ถ์์ ์ฑ๊ณต์ ์ผ๋ก ํตํฉํ๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ์ ํํ๊ณ ๊ฐ๋ฐ ์ํฌํ๋ก ๋ด์์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
1. ์ฌ๋ฐ๋ฅธ ์ ์ ๋ถ์ ๋๊ตฌ ์ ํ
์์ฅ์ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ด๋ฒ์ํ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋๊ตฌ๋ฅผ ์ ํํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ธ์ด ์ง์: ๋๊ตฌ๊ฐ ํ์์ ์ฌ์ฉํ๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๋์ง ํ์ธํฉ๋๋ค.
- ๋ถ์ ์ ํ: ์ผ๋ถ ๋๊ตฌ๋ ๋ณด์(SAST - ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ)์ ์ค์ ์ ๋๊ณ , ๋ค๋ฅธ ๋๊ตฌ๋ ๋ฒ๊ทธ ํ์ง์ ์ค์ ์ ๋๊ณ , ์ผ๋ถ ๋๊ตฌ๋ ์ฝ๋ ์คํ์ผ ๋ฐ ๋ณต์ก์ฑ์ ์ค์ ์ ๋ก๋๋ค. ์กฐํฉ์ด ํ์ํ ์ ์์ต๋๋ค.
- ํตํฉ ๊ธฐ๋ฅ: ๋๊ตฌ๋ ๋ฒ์ ์ ์ด ์์คํ (์: Git, GitHub, GitLab, Bitbucket), CI/CD ํ์ดํ๋ผ์ธ(์: Jenkins, GitHub Actions, GitLab CI, CircleCI) ๋ฐ IDE์ ์ํํ๊ฒ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ง์ : ๊ท์น ์งํฉ์ ๊ตฌ์ฑํ๊ณ , ์คํ์ ์ต์ ํ๊ณ , ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ถ์์ ์กฐ์ ํ๋ ๊ธฐ๋ฅ์ด ์ค์ํฉ๋๋ค.
- ๋ณด๊ณ ๋ฐ ๋์๋ณด๋: ์ถ์ธ๋ฅผ ์ถ์ ํ๊ณ ๊ฐ์ ์์ญ์ ์๋ณํ๋ ๋ฐ ๋ช ํํ๊ณ ์คํ ๊ฐ๋ฅํ ๋ณด๊ณ ์ ๋ฐ ๋์๋ณด๋๊ฐ ํ์์ ์ ๋๋ค.
- ์ปค๋ฎค๋ํฐ ๋ฐ ์ง์: ์คํ ์์ค ๋๊ตฌ์ ๊ฒฝ์ฐ ํ๋ฐํ ์ปค๋ฎค๋ํฐ๋ ์ง์์ ์ธ ๊ฐ๋ฐ ๋ฐ ์ง์์ ๋ํ๋ด๋ ์ข์ ์งํ์ ๋๋ค. ์์ฉ ๋๊ตฌ์ ๊ฒฝ์ฐ ๊ฐ๋ ฅํ ๊ณต๊ธ์ ์ฒด ์ง์์ด ์ค์ํฉ๋๋ค.
์ธ๊ธฐ ์๋ ์ ์ ๋ถ์ ์นดํ ๊ณ ๋ฆฌ ๋ฐ ๋๊ตฌ์ ์:
- ๋ฆฐํฐ: ์คํ์ผ ์ค๋ฅ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ๋ฅผ ํ์ธํ๋ ๋๊ตฌ. ์๋ก๋ ESLint(JavaScript), Flake8(Python), Checkstyle(Java), Pylint(Python)๊ฐ ์์ต๋๋ค.
- ํฌ๋งทํฐ: ์คํ์ผ ์ง์นจ์ ์ค์ํ๋๋ก ์ฝ๋๋ฅผ ์๋์ผ๋ก ๋ค์ ํฌ๋งทํ๋ ๋๊ตฌ. ์๋ก๋ Prettier(JavaScript), Black(Python), ktlint(Kotlin)๊ฐ ์์ต๋๋ค.
- ๋ณด์ ์ค์บ๋(SAST): ๋ณด์ ์ทจ์ฝ์ ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ฐพ๋ ๋๊ตฌ. ์๋ก๋ SonarQube, Veracode, Checkmarx, Bandit(Python), OWASP Dependency-Check๊ฐ ์์ต๋๋ค.
- ๋ณต์ก์ฑ ๋ถ์๊ธฐ: ์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ๋ํ๋ผ ์ ์๋ ์ฝ๋ ๋ณต์ก์ฑ(์: ์ํ ๋ณต์ก์ฑ)์ ์ธก์ ํ๋ ๋๊ตฌ. ๋ง์ ๋ฆฐํฐ์ SonarQube์ ๊ฐ์ ํฌ๊ด์ ์ธ ํ๋ซํผ์์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
2. ๊ท์น ์งํฉ ๊ตฌ์ฑ ๋ฐ ์ฌ์ฉ์ ์ง์
์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ์ ์ข์ ์์์ ์ด์ง๋ง ํจ๊ณผ์ ์ธ ํตํฉ์๋ ์ฌ์ฉ์ ์ง์ ์ด ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ํ๋ก์ ํธ ํ์ค ์ ์: ํ๊ณผ ํ๋ก์ ํธ์ ๋ํ ๋ช ํํ ์ฝ๋ฉ ํ์ค๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ ํฉ๋๋ค.
- ๊ด๋ จ ๊ท์น ํ์ฑํ: ์ ์๋ ํ์ค ๋ฐ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๋ง๋ ๊ท์น์ ํ์ฑํํฉ๋๋ค. ๋ชจ๋ ๊ท์น์ ํ์ฑํํ์ง ๋ง์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฒญ๋ ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์คํ ๋นํ์ฑํ ๋๋ ์ต์ : ์ ์ ๋ถ์ ๋๊ตฌ๋ ์๋ฒฝํ์ง ์์ผ๋ฉฐ ์ค์ ๋ก ์ฌ๋ฐ๋ฅธ ์ฝ๋(์คํ)๋ฅผ ํ๋๊ทธํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ต์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ฐํ์ฌ ์ต์ ์ ๋ํ ์ ์ ํ ๋ฌธ์๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์ฌ์ฉ์ ์ง์ ๊ท์น ๋ง๋ค๊ธฐ: ๋งค์ฐ ๊ตฌ์ฒด์ ์ธ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ ๋๋ ๋๋ฉ์ธ๋ณ ์ทจ์ฝ์ ์ ๊ฒฝ์ฐ ์ผ๋ถ ๋๊ตฌ์์๋ ์ฌ์ฉ์ ์ง์ ๊ท์น์ ๋ง๋ค ์ ์์ต๋๋ค.
3. ๋ฒ์ ์ ์ด ์์คํ (VCS)๊ณผ์ ํตํฉ
์ ์ ๋ถ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํตํฉ ์ง์ ์ ํ ๋ฆฌํ์คํธ(PR) ๋๋ ๋ณํฉ ์์ฒญ(MR) ์ํฌํ๋ก ๋ด์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- PR์ ๋ํ ์๋ํ๋ ๊ฒ์ฌ: ์ ๋ถ๊ธฐ๊ฐ ์์ฑ๋๊ฑฐ๋ PR์ด ์ด๋ฆด ๋๋ง๋ค ์ ์ ๋ถ์ ์ค์บ์ ์๋์ผ๋ก ํธ๋ฆฌ๊ฑฐํ๋๋ก VCS(์: GitHub, GitLab)๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- PR์์ ์ํ ๋ณด๊ณ : ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ PR ์ธํฐํ์ด์ค ๋ด์์ ๋ช ํํ๊ฒ ํ์๋์ด์ผ ํฉ๋๋ค. ์ด๋ ์ํ ๊ฒ์ฌ, ์ฝ๋์ ๋ํ ์ฃผ์ ๋๋ ์ ์ฉ ์์ฝ์ ํตํด ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค.
- ๋ณํฉ ์ฐจ๋จ: ์ฌ๊ฐํ ๊ท์น ์๋ฐ(์: ์ฌ๊ฐ๋๊ฐ ๋์ ๋ณด์ ์ทจ์ฝ์ , ์ปดํ์ผ ์ค๋ฅ)์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๋๊น์ง PR์ด ๋ณํฉ๋์ง ์๋๋ก VCS๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ์:
- GitHub Actions: ๋ฆฐํฐ์ ๋ณด์ ์ค์บ๋๋ฅผ ์คํํ ๋ค์ ์ํ๋ฅผ PR๋ก ๋ค์ ๋ณด๊ณ ํ๋ ์ํฌํ๋ก๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- GitLab CI/CD: GitHub Actions์ ์ ์ฌํ๊ฒ GitLab CI๋ ๋ถ์ ์์ ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณํฉ ์์ฒญ ์์ ฏ์ ํ์ํ ์ ์์ต๋๋ค.
- Bitbucket Pipelines: ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํตํฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
4. CI/CD ํ์ดํ๋ผ์ธ๊ณผ์ ํตํฉ
์ง์์ ์ธ ํตํฉ ๋ฐ ์ง์์ ์ธ ๋ฐฐํฌ(CI/CD) ํ์ดํ๋ผ์ธ์ ์ต์ ์ํํธ์จ์ด ์ ๊ณต์ ํต์ฌ์ ๋๋ค. ์ ์ ๋ถ์์ ์ด๋ฌํ ํ์ดํ๋ผ์ธ ๋ด์ ์๋ฒฝํ๊ฒ ๋ค์ด๋ง์ต๋๋ค.
- ๊ฒ์ดํธํคํ: ์ ์ ๋ถ์์ CI ํ์ดํ๋ผ์ธ์์ ํ์ง ๊ฒ์ดํธ ์ญํ ์ ํ ์ ์์ต๋๋ค. ๋ถ์์ด ์คํจํ๋ฉด(์: ๋๋ฌด ๋ง์ ์ค์ํ ๊ฒฐ๊ณผ, ์๋ก์ด ์ทจ์ฝ์ ๋์ ) ํ์ดํ๋ผ์ธ์ด ์ค๋จ๋์ด ๊ฒฐํจ ์๋ ์ฝ๋๊ฐ ์งํ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์ฝ๋ ํ์ง ๋ฉํธ๋ฆญ: CI ํ์ดํ๋ผ์ธ์ ์ฝ๋ ๋ณต์ก์ฑ, ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง(์ปค๋ฒ๋ฆฌ์ง๋ ๋์ ๋ถ์์ ๊ฐ๊น์ง๋ง), ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ์ง๋ ๋ฌธ์ ์์ ๊ฐ์ด ์ ์ ๋ถ์ ๋๊ตฌ์์ ์์ฑ๋ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ ๋ณด๊ณ ํ ์ ์์ต๋๋ค.
- ์์ฝ๋ ์ค์บ: PR ์ธ์๋ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ ์ฒด ์ ์ ๋ถ์ ์ค์บ์ ์ ๊ธฐ์ ์ผ๋ก ์์ฝํ์ฌ ๊ธฐ์ ๋ถ์ฑ์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
- ์: ์ผ๋ฐ์ ์ธ CI ํ์ดํ๋ผ์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฝ๋ ์ปดํ์ผ โ ๋จ์ ํ ์คํธ ์คํ โ ์ ์ ๋ถ์ ์คํ โ ํตํฉ ํ ์คํธ ์คํ โ ๋ฐฐํฌ. ์ ์ ๋ถ์์ด ์คํจํ๋ฉด ํ์ ๋จ๊ณ๊ฐ ๊ฑด๋๋๋๋ค.
5. IDE ํตํฉ
๊ฐ๋ฐ์์๊ฒ IDE(ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ)์์ ์ง์ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ ๊ฒ์ ํ์ง์ ํจ์ฌ ๋ ์ผ์ชฝ์ผ๋ก ์ด๋์ํค๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ค์๊ฐ ํผ๋๋ฐฑ: ๋ง์ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ธ๊ธฐ ์๋ IDE(์: VS Code, IntelliJ IDEA, Eclipse)์ฉ ํ๋ฌ๊ทธ์ธ ๋๋ ํ์ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๊ฐ๋ฐ์๊ฐ ์ ๋ ฅํ ๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๊ฐ์กฐ ํ์ํ์ฌ ์ฆ์ ์์ ํ ์ ์์ต๋๋ค.
- ์ปจํ ์คํธ ์ ํ ๊ฐ์: ๊ฐ๋ฐ์๋ CI ์์ ์ด ์คํ๋๊ฑฐ๋ PR ๊ฒํ ๊ฐ ์ด๋ฆด ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค. ๊ฐ๋จํ ์ค๋ฅ๋ฅผ ์ฆ์ ์์ ํ์ฌ ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ฝ๋ ๊ฒํ ์์ ์ ์ ๋ถ์์ ๊ตฌํํ๊ธฐ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ด์ ์ ๊ทน๋ํํ๊ณ ์ ์ฌ์ ์ธ ๋ง์ฐฐ์ ์ต์ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
- ์๊ฒ ์์ํ๊ณ ๋ฐ๋ณต: ๋ชจ๋ ๋๊ตฌ์ ๊ท์น์ ํ ๋ฒ์ ๊ตฌํํ๋ ค๊ณ ํ์ง ๋ง์ญ์์ค. ๊ธฐ๋ณธ ์ธ์ด์ ๋ํ ํต์ฌ ํ์ ๊ฒ์ฌ ์ธํธ๋ถํฐ ์์ํ์ฌ ์ ์ฐจ์ ์ผ๋ก ํ์ฅํฉ๋๋ค.
- ํ ๊ต์ก: ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ ์ ๋ถ์์ด ๊ตฌํ๋๋ ์ด์ , ๋๊ตฌ๊ฐ ์ํํ๋ ์์ ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ํด์ํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋์ง ํ์ธํฉ๋๋ค. ๊ต์ก ์ธ์ ๊ณผ ๋ฌธ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ช ํํ ์ ์ฑ ์๋ฆฝ: ๋ณํฉํ๊ธฐ ์ ์ ์์ ํด์ผ ํ๋ ์ค์ํ ๋ฌธ์ , ํฅํ ์คํ๋ฆฐํธ์์ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ฐ ์คํ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
- ๋ณด๊ณ ์ ์์ฑ ๋ฐ ์๋ฆผ ์๋ํ: ๋ณด๊ณ ์๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ์ค์ํ ๊ฒฐ๊ณผ ๋๋ ํ์ดํ๋ผ์ธ ์คํจ์ ๋ํด ๊ด๋ จ ์ดํด ๊ด๊ณ์์๊ฒ ์๋ฆฌ๋ ์์คํ ์ ์ค์ ํฉ๋๋ค.
- ๊ท์น ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ๋ฐ ์ ๋ฐ์ดํธ: ํ๋ก์ ํธ๊ฐ ๋ฐ์ ํ๊ณ ์๋ก์ด ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ๋ํ๋๋ฉด ์ ์ ๋ถ์ ๊ท์น ์งํฉ์ ๊ฒํ ํ๊ณ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๊ฒฐ๊ณผ ์ฐ์ ์์ ์ง์ : ๋ชจ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ ๊ฒ์ ์๋๋๋ค. ๋จผ์ ์ค์ํ ๋ณด์ ์ทจ์ฝ์ ๊ณผ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ง์คํ ๋ค์ ์คํ์ผ ๋ฌธ์ ์ ์ฝ๋ ๋์๋ก ์ด๋ํฉ๋๋ค.
- ์ถ์ธ ๋ชจ๋ํฐ๋ง: ์ ์ ๋ถ์ ๋๊ตฌ์์ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต์ ์ธ ๋ฌธ์ , ํ์ ๋ ๋ง์ ๊ต์ก์ด ํ์ํ ์์ญ ๋๋ ํ์ง ์ด๋์ ํฐ๋ธ์ ํจ๊ณผ๋ฅผ ์๋ณํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ํ์ ์ํ ํด์ฒด์ธ ๋ค์์ฑ ๊ณ ๋ ค: ์ผ๊ด์ฑ์ด ์ค์ํ์ง๋ง ๋ค๋ฅธ ์ง์ญ์ ํ์ ๋ค๋ฅธ ๋ก์ปฌ ์ธํ๋ผ ๋๋ ์ ํธํ๋ ๋๊ตฌ๋ฅผ ๊ฐ์ง ์ ์์์ ์ธ์ ํฉ๋๋ค. ์ํธ ์ด์ฉ์ฑ์ ๋ชฉํ๋ก ํ๊ณ ์ ํํ ์๋ฃจ์ ์ด ๋ค์ํ ํ๊ฒฝ์ ์์ฉํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
- ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์์ ์ฑ๋ฅ ์ฒ๋ฆฌ: ๋งค์ฐ ํฐ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ ์ฒด ์ ์ ๋ถ์ ์ค์บ์ด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ฆ๋ถ ์ค์บ ๊ธฐ์ (๋ณ๊ฒฝ๋ ํ์ผ๋ง ๋ถ์)์ ํ์ํ๊ฑฐ๋ CI/CD ์ธํ๋ผ๋ฅผ ์ต์ ํํฉ๋๋ค.
๊ณผ์ ๋ฐ ๊ทน๋ณต ๋ฐฉ๋ฒ
๊ฐ๋ ฅํ์ง๋ง ์ ์ ๋ถ์ ํตํฉ์๋ ์ด๋ ค์์ด ๋ฐ๋ฆ ๋๋ค.
1. ์คํ ๋ฐ ๋ฏธํ
๊ณผ์ : ๋๊ตฌ๊ฐ ํฉ๋ฒ์ ์ธ ์ฝ๋๋ฅผ ์ค๋ฅ(์คํ)๋ก ํ๋๊ทธํ๊ฑฐ๋ ์ค์ ๋ฌธ์ (๋ฏธํ)๋ฅผ ๋์น ์ ์์ต๋๋ค.
ํด๊ฒฐ์ฑ : ์ธ์ฌํ ๊ท์น ๊ตฌ์ฑ, ๋ช ํํ ์ ๋น์ฑ์ ๊ฐ์ง๊ณ ํน์ ๊ฒฐ๊ณผ ์ต์ , ์ง์์ ์ธ ๋๊ตฌ ํ๊ฐ. ์ธ๊ฐ ๊ฐ๋ ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ ๋ฐ ์ฌ์ ํ ์ค์ํฉ๋๋ค.
2. ์ฑ๋ฅ ์ค๋ฒํค๋
๊ณผ์ : ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ ์ฒด ์ค์บ์ ๋๋ฆด ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์ ์์ฐ์ฑ๊ณผ CI/CD ํ์ดํ๋ผ์ธ ์๊ฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
ํด๊ฒฐ์ฑ : ์ฆ๋ถ ๋ถ์(๋ณ๊ฒฝ๋ ํ์ผ๋ง ๋ถ์)์ ๊ตฌํํ๊ณ CI/CD ์คํ๊ธฐ๋ฅผ ์ต์ ํํ๊ณ ์บ์ฑ์ ํ์ฉํฉ๋๋ค. PR ๋จ๊ณ์์ ์ค์ํ ๊ฒ์ฌ์ ์ง์คํ๊ณ ์ผ๊ฐ ๋น๋ ์ค์ ๋ ํฌ๊ด์ ์ธ ์ค์บ์ ์ํํฉ๋๋ค.
3. ๋๊ตฌ ํ์ฐ ๋ฐ ๋ณต์ก์ฑ
๊ณผ์ : ๋๋ฌด ๋ง์ ์ด์ง์ ์ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ์์ฝ์์คํ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
ํด๊ฒฐ์ฑ : ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํตํฉํฉ๋๋ค. ์ฌ๋ฌ ๋ถ์ ์ ํ์ ์ ๊ณตํ๋ SonarQube์ ๊ฐ์ ํฌ๊ด์ ์ธ ํ๋ซํผ์ ์ ํํฉ๋๋ค. ์ธ์ด๋น ๋ช ๊ฐ์ ๊ณ ํ์ง ๋๊ตฌ๋ฅผ ํ์คํํฉ๋๋ค.
4. ๋ณํ์ ๋ํ ์ ํญ
๊ณผ์ : ๊ฐ๋ฐ์๋ ์๋ํ๋ ๊ฒ์ฌ๋ฅผ ๋ฐฉํด๋ฌผ ๋๋ ๋ถ์ ์ ํ์๋ก ๊ฐ์ฃผํ ์ ์์ต๋๋ค.
ํด๊ฒฐ์ฑ : ๊ฐ๋ฐ์๋ฅผ ์ํ ์ด์ (์๋ ์์ ๊ฐ์, ํ๋ก๋์ ์ ๋๋ฌํ๋ ๋ฒ๊ทธ ๊ฐ์, ๋ ๋น ๋ฅธ ํผ๋๋ฐฑ)์ ๊ฐ์กฐํฉ๋๋ค. ๋๊ตฌ ์ ํ ๋ฐ ๊ท์น ๊ตฌ์ฑ ํ๋ก์ธ์ค์ ๊ฐ๋ฐ์๋ฅผ ์ฐธ์ฌ์ํต๋๋ค. ๊ต์ก ๋ฐ ํ์ ์ ์ง์คํฉ๋๋ค.
5. ๋ค์ํ ์ธ์ด ๋ฐ ์คํ์์ ์ผ๊ด์ฑ ์ ์ง
๊ณผ์ : ๊ธ๋ก๋ฒ ํ์ ์ข ์ข ๋ค๊ตญ์ด ํ๊ฒฝ์์ ์์ ํ๋ฏ๋ก ํตํฉ๋ ํ์ง ์ ๋ต์ ์ ์งํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
ํด๊ฒฐ์ฑ : ๋ชจ๋์ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํฉ๋๋ค. ๊ฐ ์ธ์ด์ ๋ํด ๊ฐ๋ ฅํ๊ณ ์ ์ง์๋๋ ๋๊ตฌ๋ฅผ ์ ํํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋์๋ณด๋ ๋๋ ๋ค์ํ ์์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณํ ์ ์๋ ํ๋ซํผ์ ํตํด ๊ตฌ์ฑ ๋ฐ ๋ณด๊ณ ๋ฅผ ์ค์ ์ง์คํํฉ๋๋ค.
์ฝ๋ ๊ฒํ ์์ ์ ์ ๋ถ์์ ๋ฏธ๋
์ ์ ๋ถ์ ๋ถ์ผ๋ ์ง์์ ์ผ๋ก ์งํํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์์ ๋ณด๊ณ ์์ต๋๋ค.
- AI ๋ฐ ๋จธ์ ๋ฌ๋: AI๋ฅผ ํ์ฉํ์ฌ ๋ ๋ณต์กํ ํจํด์ ์๋ณํ๊ณ , ์คํ์ ์ค์ด๊ณ , ์ฝ๋ ์์ ์ ์ ์ํ๋ ์ ์ ๋ ์ ๊ตํ ๋๊ตฌ.
- ๊ด๋ฒ์ํ ๋ณด์ ํตํฉ: ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด(DevSecOps)์ ๋ณด์ ๋ถ์์ ๊น์ด ํตํฉํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ผ๋ฉฐ, ๋๊ตฌ๋ ์ ๊ตํ ์ทจ์ฝ์ ์ ์ฐพ๋ ๋ฐ ๋ ๋ฅ์ํด์ง๊ณ ์์ต๋๋ค.
- ํฅ์๋ ์ธ์ด ์ง์: ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ํ๋ ์์ํฌ ๋ฐ ์งํํ๋ ์ธ์ด ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ๋๊ตฌ๊ฐ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๊ณ ์์ต๋๋ค.
- ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์๋ฃจ์ : ๋ฐฐํฌ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ ๊ด๋ฆฌํ ์ ์ ๋ถ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ ๋ง์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋ซํผ.
๊ฒฐ๋ก
์ฝ๋ ๊ฒํ ์๋ํ์ ์ ์ ๋ถ์์ ํตํฉํ๋ ๊ฒ์ ๋ ์ด์ ์ฌ์น๊ฐ ์๋๋ผ ํนํ ์ ์ธ๊ณ์ ์ผ๋ก ์ด์๋๋ ์ต์ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ์๊ฒ ํ์์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ค๋ฅ, ๋ณด์ ๊ฒฐํจ ๋ฐ ์คํ์ผ ์๋ฐ ๊ฐ์ง๋ฅผ ์๋ํํจ์ผ๋ก์จ ์กฐ์ง์ ์ฝ๋ ํ์ง์ ํฌ๊ฒ ํฅ์์ํค๊ณ ๊ฐ๋ฐ ๋น์ฉ์ ์ค์ด๋ฉฐ ๋ณด์์ ๊ฐ์ ํ๊ณ ์ถ์ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
์ฑ๊ณต์ ์ด์ ๋ ์ฌ๋ ค ๊น์ ์ ๊ทผ ๋ฐฉ์์ ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ์ ํํ๊ณ ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์ฌ์ฉ์ ์ง์ ํ๊ณ ๊ฐ๋ฐ ์ํฌํ๋ก์ ์ํํ๊ฒ ํตํฉํ๊ณ ํ ๋ด์์ ํ์ง ์ธ์ ๋ฌธํ๋ฅผ ์กฐ์ฑํ๋ ๊ฒ์ ๋๋ค. ํจ๊ณผ์ ์ผ๋ก ๊ตฌํ๋๋ฉด ์ ์ ๋ถ์์ ์ ์ธ๊ณ ๊ฐ๋ฐ์๊ฐ ๋ ๋์ ์ํํธ์จ์ด๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํ๋ ๊ฐ๋ ฅํ ๋๋งน์ด ๋ฉ๋๋ค.
์๋ํ๋ฅผ ์์ฉํ์ญ์์ค. ์ฝ๋ ํ์ง์ ๋์ด์ญ์์ค. ๊ธ๋ก๋ฒ ๊ฐ๋ฐ ํ์ ๊ฐํํ์ญ์์ค.