์ํฐํ๋ผ์ด์ฆ Ruby ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์ ์ ๋ถ์์ ์๋์ ์ธ ํ์ง ์ ํธ๊ฐ ์๋ ๊ฒ์ดํธํคํ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ ์ ๋ ๋ง์ด ์ทจ๊ธํ๊ณ ์์ต๋๋ค. CI ์ฒ๋ฆฌ๋์ด ๋น์ฆ๋์ค ๋ฐฐํฌ์ ์ง์ ์ ์ธ ์ ์ฝ์ ๊ฐํ๋ ํ๊ฒฝ์์ ํ์ดํ๋ผ์ธ์ ์ถ๊ฐ๋๋ ๋ถ์ ๋๊ตฌ๋ ์ง์ฐ ์๊ฐ, ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ ๋ฐ ์ด์์์ ๊ฒฐํฉ๋๋ฅผ ์ฆ๊ฐ์ํต๋๋ค. Ruby์ ๋์ ์คํ ๋ชจ๋ธ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋์ฑ ์ ํ์ํค๋๋ฐ, ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ปดํ์ผ ์์ ์ ํ์ค์ฑ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋์ง ์์ ๋ฉํํ๋ก๊ทธ๋๋ฐ, ๊ด๋ก ๊ธฐ๋ฐ ์ฐ๊ฒฐ ๋ฐ ๋ฐํ์ ๊ตฌ์ฑ ์ ๋ฐ์ ๊ฑธ์ณ ๋์์ ์ถ๋ก ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํต์ฌ์ ์ธ ์ํคํ ์ฒ ๊ณผ์ ๋ ๋จ์ํ ๋๊ตฌ์ ์ ํ์ฑ๋ง์ ๋ฐ์ง๋ ๊ฒ์ด ์๋๋ผ, ํ์ดํ๋ผ์ธ ๋จ๊ณ ์ ๋ฐ์ ๊ฑธ์น ์ํ ์กฐ์ ์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ถ ๋ถ์ ๋๊ตฌ๋ ๋ณํฉ์ ์์ ํ๊ฒ ์ฐจ๋จํ ์ ์๋ ๋น ๋ฅด๊ณ ํ์ ์ ์ธ ํผ๋๋ฐฑ์ ์ต์ ํ๋์ด ์๋ ๋ฐ๋ฉด, ๋ค๋ฅธ ๋๊ตฌ๋ค์ ๋ ์ฌ์ธต์ ์ธ ์ปจํ ์คํธ ๋ชจ๋ธ๋ง์ ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ ๋น๋ฒํ ๊ฒ์ดํ ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์๋ชป ์ ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ค์ด ์ฐํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ์ทจ์ฝํ ํ์ดํ๋ผ์ธ์ด ๋๊ฑฐ๋, ์ํฅ๋ ฅ์ด ํฐ ๊ฒฐํจ์ด ๋ฆด๋ฆฌ์ค ๋ธ๋์น๋ก ํ์ฐ๋์ด ํ์ ์์ ๋น์ฉ์ด ์ฆ๊ฐํ๋ ํ์ ํ ๊ฒ์ดํธ๊ฐ ์์ฑ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์๊ด ๋ถ์ ์ํ
Smart TS XL์ Ruby ์ ์ ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์คํ ๊ฐ๋ฅํ ์ํคํ ์ฒ ์ ๋ณด๋ก ๋ณํํ๋ ์ธ์ฌ์ดํธ ํ๋ซํผ ์ญํ ์ ํฉ๋๋ค.
์ง๊ธ ํ์๋๊ท๋ชจ CI ํ๊ฒฝ์์ ๊ฒ์ดํธํคํ ์คํจ๋ ๊ท์น ๋๋ฝ๋ณด๋ค๋ ๊ด๋ฆฌ๋์ง ์์ ์ ํธ ์ค๋ณต๊ณผ ์ต์ ์ค๋ฅ์์ ๋น๋กฏ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฆฐํ ๊ฒฐ๊ณผ, ํ์ ์๋ฐ, ๋ณด์ ๊ฒฝ๊ณ ๋ฑ์ด ์ฐ์ ์์ ๋ชจ๋ธ์ด ๊ณต์ ๋์ง ์์ ์๋ก ๊ฒฝ์ํ๋ฉฐ, ์ด๋ก ์ธํด ํ๊ณผ ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด์ฑ ์๋ ๊ท์น ์ ์ฉ์ด ๋ฐ์ํฉ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ํ์์ ํนํ ์ ์ง์ ์ธ ๋ฆฌํฉํ ๋ง์ด๋ ์๋น์ค ์ถ์ถ์ ์งํ ์ค์ธ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์ ๊ฐ์ด ๋ณ๊ฒฝ ๋น๋๊ฐ ๋์ ๋ชจ๋์ ์จ๊ฒจ์ง ์ํ์ ์ง์ค์ํค๋๋ฐ, ์ด๋ ๊ด๋ฒ์ํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ํ ์ํ ๊ณผ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค.
์ํ ๊ด๋ฆฌ๋ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์ค์ ์คํ ํ๊ฒฝ์ ์ผ๋ง๋ ์ ๋ถํฉํ๋์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ฃจ๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์น ๋ชปํ ์ ์ด ๊ฒฝ๋ก, ์๋ฌต์ ์ธ ์ข ์์ฑ ๋๋ ํ๋ ์์ํฌ ๊ธฐ๋ฐ ๋์์ผ๋ก ์ธํด ํ๋ก๋์ ํ๊ฒฝ์์ ์์ฃผ ์คํจํ๋๋ฐ, ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก๋ง ๋ชจ๋ธ๋งํฉ๋๋ค. CI ๋ฐ ๋ฆด๋ฆฌ์ค ์ํฌํ๋ก์ ์ฒด๊ณ์ ์ผ๋ก ํตํฉ๋์ง ์์ผ๋ฉด ์ ์ ๋ถ์์ ์๋ฐฉ์ ํต์ ์๋จ์ด ์๋ ๊ท์ ์ค์ ๋๊ตฌ๋ก ์ ๋ฝํ์ฌ, ๋ณต์กํ๊ณ ๋์์์ด ๋ณํํ๋ ๋ฃจ๋น ํ๊ฒฝ ์ ๋ฐ์ ๋ฐฐํฌ ์ํ ๊ด๋ฆฌ์์ ๊ทธ ์ญํ ์ด ์ฝํ๋ฉ๋๋ค. ์ด๋ ์ํํธ์จ์ด ์ธํ ๋ฆฌ์ ์ค ํ๋ซํผ ์ ๋ํ ์ง์์ ์ธ ๋ ผ์์์๋ ๋๋ฌ๋๋ ๋ฌธ์ ์ ๋๋ค.
Ruby ์ ์ ๋ถ์์ ์ํ CI ๊ฒ์ดํธํคํ ๋ฐ ์ํ ์๊ด๊ด๊ณ ๊ณ์ธต์ผ๋ก์ Smart TS XL ์ฌ์ฉ
Ruby ์ค์ฌ์ CI ํ์ดํ๋ผ์ธ์์ ์ ์ ๋ถ์์ด ์คํจํ๋ ์ด์ ๋ ๋๊ตฌ๊ฐ ๋ถ์กฑํด์๊ฐ ์๋๋ผ, ๋ฆฐํฐ, ๋ณด์ ์ค์บ๋, ํ์ ๊ฒ์ฌ๊ธฐ ๋ฑ ์ฌ๋ฌ ๋๊ตฌ์ ์ ํธ๊ฐ ํํธํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฐ ๋๊ตฌ๋ ์์ฒด์ ์ธ ์ข์ ์คํ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ํ์ ํ๊ฐํ์ฌ, ๋ก์ปฌ์์๋ ์ ํจํ์ง๋ง ์ ์ฒด์ ์ผ๋ก๋ ๋ถ์์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์๋ ์ด๋ฌํ ํํธํ๋ก ์ธํด ๊ฒ์ดํธํคํ ๊ฒฐ์ ์ด ์ด๋ ค์์ง๋๋ค. ํ์ดํ๋ผ์ธ์ ๊ฒฐ๊ณผ๋ ์๊ฐ์ ์๋ฐ ์์์ ์ฌ๊ฐ๋, ๋ฒ์, ์ํฅ์ ๋ํ ์๋ก ๋ค๋ฅธ ๊ฐ๋ ๋ค์ ์กฐํ์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Smart TS XL์ ๊ฐ๋ณ Ruby ๋ถ์๊ธฐ๋ณด๋ค ์์ ์์ค์์ ์๋ํ์ฌ ๊ท์น ๊ฐ์ ์ ์ฉ๋ณด๋ค๋ ๋์ ๊ฐ์์ฑ, ์ข ์์ฑ ๊ตฌ์กฐ ๋ฐ ์คํ ๊ด๋ จ์ฑ์ ์ด์ ์ ๋ง์ถค์ผ๋ก์จ ์ด๋ฌํ ๊ฒฉ์ฐจ๋ฅผ ํด์ํฉ๋๋ค. ํ๋ซํผ ์ฑ ์์์ ํ๋ํ ์ค๊ณ์์๊ฒ ์์ด Smart TS XL์ ๊ธฐ๋ฅ์ ๊ฐ์น๋ ์ ์ ์ธ ๋ฐ๊ฒฌ ์ฌํญ์ ์ํคํ ์ฒ ์ปจํ ์คํธ๋ก ๋ณํํ์ฌ CI ๊ฒ์ดํ , ๋ฆด๋ฆฌ์ค ๋ฐ ์์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐ ํ์ฉํ ์ ์๋ค๋ ์ ์ ์์ต๋๋ค. ํน์ RuboCop ์๋ฐ์ด๋ Brakeman ๊ฒฝ๊ณ ๊ฐ ๋ณํฉ์ ์ฐจ๋จํด์ผ ํ๋์ง ๋ฌป๋ ๋์ , ์ด ํ๋ซํผ์ ํตํด ํ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์คํ ์ ์ฒด์ ์ด๋ป๊ฒ ์ ํ๋๋์ง, ์ด๋ค ๊ตฌ์ฑ ์์๊ฐ ์ํ์ ์ฆํญ์ํค๋์ง, ๊ทธ๋ฆฌ๊ณ ์ต์ ๋๋ ํธ์ฐจ๊ฐ ์์คํ ์ ์ทจ์ฝ์ ์ ์ด๋ป๊ฒ ์์ฑํ๋์ง ํ๊ฐํ ์ ์์ต๋๋ค.
์ด๋ฌํ ํฌ์ง์ ๋์ Smart TS XL์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ณด๋ค๋ ๋ฐฐํฌ ์ํ ๊ด๋ฆฌ, ํนํ Ruby ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ธ์ด, ๊ณต์ ์๋น์ค ๋ฐ ์ฅ๊ธฐ ๋ ๊ฑฐ์ ๊ตฌ์ฑ ์์์ ๊ณต์กดํ๋ ํ๊ฒฝ์ ๋์ฑ ์ ํฉํ๊ฒ ๋ง๋ญ๋๋ค. CI ํ์ดํ๋ผ์ธ์ด ๋จ์ํ ํต๊ณผ/์คํจ ๊ฒ์ฌ์์ ์ํฅ, ์์ ๊ถ ๋ฐ ์คํ ์ค์๋์ ๋ฐ๋ฅธ ์ฐจ๋ณํ๋ ๊ฒ์ดํธ๋ก ์ ํ๋จ์ ๋ฐ๋ผ Smart TS XL์ ์ค์์ฑ์ ๋์ฑ ์ปค์ง๋๋ค.
๊ฐ๋ณ์ ์ธ Ruby ๋ถ์ ๋๊ตฌ๋ฅผ ๋์ด์ ๋๊ตฌ ๊ฐ ์์กด์ฑ ๊ฐ์์ฑ ํ๋ณด
Ruby ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฅ์ ๋๋ ํ๋ ์์ํฌ ๊ฒฝ๊ณ ๋ด์์ ์๋ํฉ๋๋ค. RuboCop์ ํ์ผ์ ๊ฐ๋ณ์ ์ผ๋ก ํ๊ฐํ๊ณ , Brakeman์ Rails ํน์ ์ ํ๋ฆ์ ๋ชจ๋ธ๋งํ๋ฉฐ, Sorbet์ด๋ Steep์ ์ด๋ ธํ ์ด์ ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ํ์ ๊ณ์ฝ์ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ์ด๋ค Ruby ๋ชจ๋์ด ์ค์ํ ์คํ ๊ฒฝ๋ก์ ์๋์ง, ์ด๋ค ์๋น์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋์ง, ๋๋ ํ์ ์์ค ๊ตฌ์ฑ ์์์ ๋ณ๊ฒฝ์ด ์ฌ๋ฌ ํ์ดํ๋ผ์ธ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง์ ๊ฐ์ ํฌ๊ด์ ์ธ ์ง๋ฌธ์ ๋ตํ๋๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค.
Smart TS XL์ ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ ์ง๊ณํ๋ ์ข ์์ฑ ์ค์ฌ์ ๊ด์ ์ ์ ๊ณตํ์ฌ ์์คํ ํ ํด๋ก์ง ๊ด์ ์์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํด์ํ ์ ์๋๋ก ํฉ๋๋ค. ๊ธฐ์ ์ฌ์ฉ์์๊ฒ ์์ด ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํ ๊ธฐ๋ฐ ์ฐ์ ์์ ์ค์ ์ ์ง์ ์ ์ธ ๋์์ด ๋ฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ์ธก๋ฉด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์ฆํญ๋ ์ ๋ฌ ์ํ์ ๋ํ๋ด๋ ๋์ ํฌ์ธ ๋ฐ ํฌ์์ ๊ตฌ์ฑ ์์๋ฅผ ์๋ณํฉ๋๋ค.
- Ruby ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต๊ณผ ์ธ๋ถ ์๋น์ค, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๋ฐฐ์น ์ํฌ๋ก๋๋ฅผ ์ฐ๊ฒฐํ๋ ์์กด์ฑ ์ฒด์ธ์ ์๊ฐํํฉ๋๋ค.
- ์ ์ ๋ฌธ์ ์ ์คํ์ ์ค์ํ ๊ฒฝ๋ก ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ๋ถ์ํ์ฌ, ๋จ์ผ Ruby ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ๋ฌ ํ์ ํ๋ก์ธ์ค์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์ง์ ์ ๊ฐ์กฐํฉ๋๋ค.
CI ๊ฒ์ดํธํคํ ๊ด์ ์์ ๋ณผ ๋, ์ด๋ ์กฐ์ง์ด ํ์ผ์ ์ธ ์ ์ฉ ๋ฐฉ์์์ ๋ฒ์ด๋ ์ ์๋๋ก ํด์ค๋๋ค. ์ํฅ๋๊ฐ ๋ฎ์ ์์ญ์ ๋ฐ๊ฒฌ ์ฌํญ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ๋ฉด, ๊ตฌ์กฐ์ ์ผ๋ก ์ค์ํ ๊ตฌ์ฑ ์์์ ๋ฌธ์ ๋ ๋ ์๊ฒฉํ ๊ฒ์ดํธํคํ์ ์ ๋นํํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ํ ํต์ ๋ฅผ ์ฝํ์ํค์ง ์์ผ๋ฉด์ ํ์ดํ๋ผ์ธ์ ๋ง์ฐฐ์ ์ค์ด๊ณ ์ํํธ์จ์ด ์ธํ ๋ฆฌ์ ์ค ํ๋ซํผ ์์ ์ค๋ช ํ๋ ๊ธฐ์กด ๊ดํ์ ๋ณด์ํฉ๋๋ค.
๋ณํฉ ๋ฐ ๋ฆด๋ฆฌ์ค ๊ฒฐ์ ์ ์ํ ์คํ ์ํฉ ๊ธฐ๋ฐ ์ํฅ ๋ถ์
์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ Ruby๋ฅผ ํ์ฉํ ๊ฐ๋ฐ์ด ์ด๋ ค์ธ ๋ ๊ฐ์ฅ ๋น์ฉ์ด ๋ง์ด ๋๋ ์คํจ ์ ํ ์ค ํ๋๋ ๊ฐ๋ณ์ ์ผ๋ก๋ ์์ ํด ๋ณด์ด์ง๋ง, ๋ชจ๋ธ๋ง๋์ง ์์ ์คํ ๊ฒฝ๋ก๋ก ์ธํด ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์น์ธํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ฆฌํฉํ ๋ง, gem ์ ๊ทธ๋ ์ด๋ ๋๋ Rails ๋ชจ๋๋ฆฌ์ค์ ์ ์ง์ ๋ถํด ๊ณผ์ ์์ ํํ ๋ฐ์ํ๋๋ฐ, ์ด๋ ์๋ฌต์ ์ธ ๊ฒฐํฉ๊ณผ ๊ด๋ก์ ๊ธฐ๋ฐํ ์ฐ๊ฒฐ ๋ฐฉ์์ด ์ค์ ๋ฐํ์ ๋์์ ๋ชจํธํ๊ฒ ๋ง๋ญ๋๋ค.
Smart TS XL์ ์คํ ์ํฉ์ ๊ณ ๋ คํ ์ํฅ ๋ถ์์ ๊ฐ์กฐํ์ฌ ์ ์ ๊ตฌ์กฐ๋ฅผ ๋ณํฉ ๋ฐ ๋ฆด๋ฆฌ์ค ๊ด๋ฆฌ์ ์ ์ฉํ ์คํ ๊ฐ๋ฅํ ์ธ์ฌ์ดํธ๋ก ๋ณํํฉ๋๋ค. ์ ์ ๋ถ์์ ์ด์ง ์ ํธ๋ก ์ทจ๊ธํ๋ ๋์ , ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ์กด ์คํ ํ๋ฆ๊ณผ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง ํ๊ฐํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๋์ ๊ณ ๊ฐ์๊ฒ ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฃจ๋น ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ํฅ์ ๋ฐ๋ ์คํ ๊ฒฝ๋ก(๊ฐ์ ์ ๋ฐ ์ ์ด์ ์ข ์์ฑ ํฌํจ)์ ๋งคํ.
- ์ ์ ๋ฆฐํฐ๋ ํ์ ์ฒด์ปค๊ฐ ์์ ํ ํฌ์ฐฉํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ ์ด ํ๋ฆ์ ๋ณ๊ฒฝํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ๊ธฐ์ ์๋ณํฉ๋๋ค.
- ๋ณ๋ ฌ ์คํ ๋ฐ ๋จ๊ณ์ ์ถ์ ์ ๋ต์ ์ง์ํ๊ธฐ ์ํด ์ด๋ค ๊ตฌ์ฑ ์์๋ฅผ ํจ๊ป ๊ฒ์ฆํด์ผ ํ๋์ง ๋ช ํํ ํฉ๋๋ค.
CI ๋ด๋น์์๊ฒ ์ด ๊ธฐ๋ฅ์ ๋ฐฐํฌ ์๋๋ฅผ ๋ฆ์ถ๋ ์ง๋์น๊ฒ ๋ณด์์ ์ธ ๊ฒ์ดํ ๊ท์น์ ๋ํ ์์กด๋๋ฅผ ์ค์ฌ์ค๋๋ค. ์ํ ๋ฐ ๊ท์ ์ค์ ๊ด๋ จ ๋ด๋น์์๊ฒ๋ ์ฝ๋ ๋ณ๊ฒฝ, ์คํ ๋์ ๋ฐ ๋ฆด๋ฆฌ์ค ๊ฒฐ์ ๊ฐ์ ์ถ์ ์ฑ์ ์ ๊ณตํ์ฌ ์๋ ๊ฒํ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ๋ ๊ฐ์ฌ ๋ฐฉ์ด๋ ฅ์ ๊ฐํํ ์ ์์ต๋๋ค.
CI ๋จ๊ณ ์ ๋ฐ์ ๊ฑธ์น ์ ํธ ์ ๊ทํ ๋ฐ ์ฐ์ ์์ ์ง์
๊ธฐ์ ๋ค์ ์ ์ ๋ถ์ ๋ฐ์ดํฐ ๋ถ์กฑ์ผ๋ก ์ด๋ ค์์ ๊ฒช๋ ๊ฒฝ์ฐ๊ฐ ๋๋ฌผ๊ณ , ์คํ๋ ค ๋น์ ํ ์ ํธ๊ฐ ๋๋ฌด ๋ง์ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. Ruby ํ์ดํ๋ผ์ธ์ ์ข ์ข ๋ฆฐํ , ๋ณด์ ์ค์บ, ์ข ์์ฑ ๊ฒ์ฌ, ํ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฑ์ ๊ฒฐํฉํ๋๋ฐ, ๊ฐ ๊ธฐ๋ฅ์ ์๋ก ๋ค๋ฅธ ํ์๊ณผ ์ฌ๊ฐ๋ ์์ค์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ทํํ์ง ์์ผ๋ฉด ํ์ ์์๋ฐฉํธ์ ์ธ ๊ฒฝ๊ณ ์ต์ ์ ์ผ๊ด์ฑ ์๋ ์ ์ฉ์ ์์กดํ๊ฒ ๋์ด ๊ฒฝ๊ณ ํผ๋ก์ ์ฌ๊ฐ์ง๋๊ฐ ๋ฐ์ํฉ๋๋ค.
Smart TS XL์ ๋๊ตฌ๋ณ ์ ์ ๊ณ์ฐ ๋ฐฉ์์ด ์๋ ์ํคํ ์ฒ ์ญํ ๋ฐ ์คํ ์ํฅ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋งฅ๋ฝํํ๋ ์ ๊ทํ ๊ณ์ธต ์ญํ ์ ํจ์ผ๋ก์จ ๊ธฐ์ฌํฉ๋๋ค. ์ด๋ ๊ธฐ์กด ๋ถ์ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ, ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ์ผ๊ด๋ ์์ฌ ๊ฒฐ์ ์ ์ง์ํ๋ ๊ฒ์ ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ๋ฌ ๋ฃจ๋น ์ ์ ๋ถ์ ๋๊ตฌ์ ๊ฒฐ๊ณผ๋ฅผ ํตํฉ๋ ๊ตฌ์กฐ์ ๋งฅ๋ฝ์ผ๋ก ์ข ํฉํฉ๋๋ค.
- ๊ท์น์ ์ฌ๊ฐ๋๋ณด๋ค๋ ๊ตฌ์ฑ ์์์ ์ค์๋์ ์ข ์์ฑ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ ์ ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค.
- ํต์ฌ ์๋น์ค์ ๋ํ ์๊ฒฉํ ์ ๊ทผ ์ ํ ๋ฐ ์ฃผ๋ณ ๊ตฌ์ฑ ์์์ ๋ํ ๊ถ๊ณ ๋ณด๊ณ ์ ๊ฐ์ ์ฐจ๋ณํ๋ CI ์ ์ฑ ์ ์๋ฅผ ์ง์ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ ์ ๋ถ์์ ๊ธฐ์ ํ๊ฒฝ์ ํ์ค์ ๋ง์ถฐ ์กฐ์ ํฉ๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์๋ ๋ชจ๋ ์๋ฐ ์ฌํญ์ด ๋์ผํ ์ํ์ ์๋ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ, ๋ฌด์๋ ๋ฐ๊ฒฌ ์ฌํญ์ด ๊ตฌ์กฐ์ ์ผ๋ก ๋ฏผ๊ฐํ ์์ญ์ ๋์ ๋ ๋ ์ด๋ฅผ ๋ช ํํ ๋ณด์ฌ์ค์ผ๋ก์จ, ๋๊ท๋ชจ ๋ฆฌํฉํ ๋ง ๋ฐ ํ๋ํ ํ๋ก์ ํธ์์ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ํ ์ํ ๊ณผ ๊ด๋ จํ์ฌ ์์ฃผ ๋ฐ์ํ๋ ํจํด์ ์ํํฉ๋๋ค.
๊ธฐ์ ์ดํด๊ด๊ณ์๋ฅผ ์ํ ์ํ ๊ธฐ๋ฐ CTA ํ์ฑํ
CTO, ํ๋ซํผ ์ฑ ์์ ๋ฐ ํ๋ํ ์ค๊ณ์์๊ฒ ์์ด ํ๋ซํผ ๋์ ์ฌ๋ถ๋ ์ด์ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ์ง ์์ผ๋ฉด์ ๋ถํ์ค์ฑ์ ์ค์ผ ์ ์๋์ง์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. Smart TS XL์ด Ruby ์ ์ ๋ถ์์ ์ค์ํ ์ด์ ๋ ๊ท์น ์ค์ ๋ ผ์๋ฅผ ๋์ด ๋ฐฐํฌ ์ํ ๊ด๋ฆฌ๋ก ๋์๊ฐ ์ ์๋๋ก ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธฐ๋ฅ์ ์ธ ๊ด์ ์์ ๋ณด๋ฉด ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ํด์๋ฉ๋๋ค.
- ์ํคํ ์ฒ์ ๋ฏธ์น๋ ์ํฅ์ ๊ธฐ๋ฐ์ผ๋ก Ruby ์ ์ ๋ถ์์ด ์ฐจ๋จ, ๊ฒฝ๊ณ ๋๋ ์ ๋ณด ์ ๊ณต์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ช ํํ๊ฒ ์ค๋ช ํด์ผ ํฉ๋๋ค.
- ๊ณต์ ๋ ์ ๋ณด๋ฅผ ํตํด ๊ฐ๋ฐํ, ํ๋ซํผ ์์ ์ ๋ฐ ์ํ ๊ด๋ฆฌ ๊ธฐ๋ฅ ๊ฐ์ ํ์ ์ด ํฅ์๋ฉ๋๋ค.
- ์ํ๋๊ฐ ๋์ ๋ฆด๋ฆฌ์ค ์ ์๋ ๊ฒํ ๋ฐ ๊ฒฝํ์ ์ง์์ ๋ํ ์์กด๋๋ฅผ ์ค์ ๋๋ค.
์ด๋ฌํ ์ด์ ์ ๋๊ตฌ ๊ต์ฒด๋ณด๋ค๋ ํต์ฐฐ๋ ฅ, ๊ฐ์ํ ๋ฐ ์ ์ด์ ์ด์ ์ ๋ง์ถ ์คํ ๊ณํ์ ์ง์ ์ ์ผ๋ก ๋ท๋ฐ์นจํฉ๋๋ค. ๋ณต์กํ CI ํ์ดํ๋ผ์ธ, ์ทจ์ฝํ ๊ฒ์ดํธ ๋๋ ๋ถํฌ๋ช ํ ์ํ ์ง์ค์ผ๋ก ์ด๋ ค์์ ๊ฒช๋ ์กฐ์ง์๊ฒ Smart TS XL์ ๊ธฐ์กด Ruby ์ ์ ๋ถ์ ํฌ์๋ฅผ ์คํ ๋ฐ ์ข ์์ฑ ํ์ค์ ๊ธฐ๋ฐํ์ฌ ์ค์ง์ ์ผ๋ก ๋ ํจ๊ณผ์ ์ผ๋ก ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
CI ๊ฒ์ดํธํคํ ๋ฐ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ Ruby ์ ์ ๋ถ์ ๋๊ตฌ ๋น๊ต
์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ Ruby ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ ํํ ๋๋ ๊ธฐ๋ฅ์ ์๋ฒฝ์ฑ๋ณด๋ค๋ ํน์ ๋ฐฐํฌ ๋ฐ ์ํ ๊ด๋ฆฌ ๋ชฉํ์์ ๋ถํฉ์ฑ์ด ๋ ์ค์ํฉ๋๋ค. ๋๊ตฌ๋ง๋ค ํ์ดํ๋ผ์ธ ๋ถํ์์์ ๋์ ๋ฐฉ์, ๊ฒฐ๊ณผ ์ ์ ๋ฐฉ์, ๊ฑฐ๋ฒ๋์ค ๋ฐ ๋ฌธ์ ํด๊ฒฐ ์ํฌํ๋ก์์ ํตํฉ ์ ๋๊ฐ ํฌ๊ฒ ๋ค๋ฆ ๋๋ค. ์คํ ํน์ฑ, ํ์ฅ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ์ฉ ์ ํฉ์ฑ์ ๊ณ ๋ คํ์ง ์๊ณ ๋น๊ตํ๋ ๊ฒ์ ์ทจ์ฝํ ๋ณด์ ๊ฒ์ดํธ๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ํ์ ์ ๋๋ก ๊ด๋ฆฌํ์ง ๋ชปํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
์ด ์น์ ์์๋ ์ผ๋ฐ์ ์ธ ํ์ง ์ฃผ์ฅ๋ณด๋ค๋ ๊ตฌ์ฒด์ ์ธ ์ด์ ๋ชฉํ๋ฅผ ์ค์ฌ์ผ๋ก ๋น๊ต๋ฅผ ์งํํฉ๋๋ค. ์ ํ๋ ๊ฐ ๋๊ตฌ ๋ฒ์ฃผ๋ ์ ์ํ ๋ณํฉ ์ ๊ฒ์ฆ๋ถํฐ ์ฌ์ธต์ ์ธ ์๋ฏธ ๋ถ์ ๋ฐ ํ๋ํ ์ง์์ ์ด๋ฅด๊ธฐ๊น์ง CI ๊ฒ์ดํธํคํ์์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ญํ ์ ์ํํฉ๋๋ค. ๋ณธ ์น์ ์ ๋ชฉ์ ์ ๊ธฐ์ ๋ชฉํ์ ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด ๊ฐ์ฅ ์์ฃผ ์ ํ๋๋ ๋๊ตฌ ๊ฐ์ ๋ช ํํ ์ฐ๊ด์ฑ์ ํ๋ฆฝํ ํ, ๊ฐ ์ต์ ์ ์์ธํ ์ดํด๋ณด๋ ๊ฒ์ ๋๋ค.
์ฃผ์ ๊ธฐ์ ๋ชฉํ๋ณ ์ต์ ์ ๋๊ตฌ ์ ์
- ๋น ๋ฅด๊ณ ๊ฒฐ์ ๋ก ์ ์ธ ๋ณํฉ ์ ๊ฒ์ดํ : ๋ฃจ๋ณด์บ , ์คํ ๋ค๋RB
- Rails ๊ด๋ จ ๋ณด์ ์ทจ์ฝ์ ํ์ง: ๋ธ๋ ์ดํฌ๋งจ
- ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์น ์ํฐํ๋ผ์ด์ฆ ์ ์ฑ ์ํ: Semgrep, CodeQL
- ๋ฆฌํฉํ ๋ง ์ค ์ธํฐํ์ด์ค ๋ณํ ์ ์ด: ์ ๋ฒ, ์คํ
- ์ ์ง๋ณด์์ฑ ๋ฐ ๋ฆฌํฉํ ๋ง ํซ์คํ ์๋ณ: ๋ฆฌํฌ, ๋ฃจ๋นํฌ๋ฆฌํฑ
- ๋๊ท๋ชจ ์ค์ ์ง์ค์ ์๋ฏธ๋ก ์ ๋ณด์ ๋ถ์: CodeQL
- ๊ฒฝ์์ง์ ์ํ ๋ณด๊ณ ๋ฐ ํธ๋ ๋ ํ์ : ๋ฃจ๋นํฌ๋ฆฌํฑ
๋ฃจ๋ณด์บ
๊ณต์ ์ฌ์ดํธ: ๋ฃจ๋ณด์บ
RuboCop์ Ruby ์คํ์ผ, ๊ตฌ์กฐ์ ์ผ๊ด์ฑ ๋ฐ ์ ์๋ ์ ํ์ฑ ๊ด๋ จ ํจํด์ ํ์ ์งํฉ์ ๊ฐ์ ํ๋ ๋ฐ ์ค์ ์ ๋ ๊ท์น ๊ธฐ๋ฐ ์ ์ ๋ถ์ ์์ง์ ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ RuboCop์ ์ฃผ์ ์ํคํ ์ฒ ์ญํ ์ ๊ฒฐ์ ๋ก ์ ๊ฒ์ดํธํคํ์ ๋๋ค. ์ฆ, ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ํ๊ฐํ์ฌ ๊ท์น์ ์ค์ํ์ง ์๋ ํจํด์ด ๊ณต์ ๋ธ๋์น์ ์ ์ ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. RuboCop์ ์คํ ๋ชจ๋ธ์ ํ์ผ ์ค์ฌ์ ์ด๊ณ ๊ตฌ๋ฌธ ๊ธฐ๋ฐ์ด๋ฏ๋ก ๋ฐํ์ ๋์์ ์ ํ๋ฆฌ์ผ์ด์ ํฌ๊ธฐ, ํ๋ ์์ํฌ ๋ณต์ก์ฑ ๋๋ ๋ฐฐํฌ ํ ํด๋ก์ง์ ๊ฑฐ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๊ธฐ๋ฅ์ ์ธ ๊ด์ ์์ RuboCop์ ๊ตฌ์ฑ ๊ฐ๋ฅํ "์บ (cops)" ์ธํธ๋ฅผ ๊ธฐ์ค์ผ๋ก Ruby ์์ค ์ฝ๋๋ฅผ ๋ถ์ํฉ๋๋ค. ๊ฐ ์บ ์ ๋ ์ด์์, ๋ช ๋ช ๊ท์น, ๋ฉํธ๋ฆญ, ๋ฆฐํธ ๊ฒ์ฌ ๋ฑ ํน์ ๊ท์น ๋ฒ์ฃผ๋ฅผ ๋ํ๋ ๋๋ค. ๊ธฐ์ ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ ์ค์ ์ ๋์ด ๋ด๋ถ ํ์ค์ ๊ตฌํํ์ฌ ๋ฆฌํฉํ ๋ง ์์ ์ ์์ ํํ๊ณ ํ ๊ฐ์ ํธ์ฐจ๋ฅผ ์ค์ ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ํตํด RuboCop์ ์ ์ฑ ์ํ ๊ณ์ธต ์ญํ ์ ํ ์ ์์ผ๋ฉฐ, ํนํ ๋๊ท๋ชจ ์ ์ฅ์์์ ๊ท ์ผ์ฑ์ด ์ฝ๋ ๊ฒํ ์๋์ ๋ณํฉ ์์ ์ฑ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ์ ํจ๊ณผ์ ์ ๋๋ค.
RuboCop์ ์คํ ์์ค์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ ๊ฐ๋จํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์ ๋น์ฉ์ ๋ผ์ด์ ์ค ๋น์ฉ๋ณด๋ค๋ ๊ฐ์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ํตํด ๋ฐ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ตฌ์ฑ ๊ด๋ฆฌ, ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ๊ธฐ์ค์ ์์ฑ, ์ฌ๋ฌ ํ์ดํ๋ผ์ธ์ ๊ฑธ์ณ ๊ท์น ๋ณ๊ฒฝ์ ๊ด๋ฆฌํ๋ ์ด์ ์ค๋ฒํค๋๊ฐ ํฌํจ๋ฉ๋๋ค. ์์ญ ๊ฐ์ Ruby ์๋น์ค๋ฅผ ์ด์ํ๋ ์กฐ์ง์ ์ข ์ข ๊ตฌ์ฑ์ ๋ถ์ผ์น๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด RuboCop ๊ตฌ์ฑ์ ์ค์ ์ง์คํํ๋๋ฐ, ์ด๋ ํ๋ณ ์์จ์ฑ๋ณด๋ค๋ ํ๋ซํผ ์์ ๊ถ์ ๋ํ ์ฑ ์์ ์ด๋ํฉ๋๋ค.
CI ์คํ ํ๊ฒฝ์์ RuboCop์ ๊ณ ๋น๋ ๊ฒ์ดํ ์ ๋งค์ฐ ์ ํฉํ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ณ๋ ฌ ์คํ๊ณผ ์ฆ๋ถ ์ค์บ์ ์ง์ํ์ฌ ์๋นํ ์ง์ฐ ์์ด ๋ชจ๋ ธ๋ ํฌ ๋ฐ ๋๊ท๋ชจ Rails ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฌํ ์์ธก ๊ฐ๋ฅ์ฑ ๋๋ถ์ ๊ฐ๋ฐ์์ ์ ๋ขฐ๋ฅผ ์ ์งํ๊ณ ์ฐํ ํจํด์ ๋ฐฉ์งํ๊ธฐ ์ํด ์คํจ ์ ์ผ๊ด๋ ๋์์ด ์๊ตฌ๋๋ ํ์ ๋ณํฉ ์ ๊ฒ์ฌ์ RuboCop์ด ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
RuboCop์ด ๋ณธ๋์ ์ญํ ์ ๋์ด ์ฌ์ฉ๋ ๋ ์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ํ์ค์ด ๋๋ฌ๋ฉ๋๋ค. ๋ณต์ก์ฑ์ด๋ ๊ธธ์ด ์๊ณ๊ฐ๊ณผ ๊ฐ์ ๋ฉํธ๋ฆญ ๊ธฐ๋ฐ ์บ ์ ๋ ๊ฑฐ์ ์์คํ ์ด ๋ง์ ํ๊ฒฝ์์ ์ง์์ ์ธ ๋ ธ์ด์ฆ๋ฅผ ๋ฐ์์์ผ ๊ด๋ฒ์ํ ์ต์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ฒด๊ณ์ ์ธ ๊ฑฐ๋ฒ๋์ค๊ฐ ์๋ค๋ฉด ์ต์ ํ์ผ์ด ์์ ์ฉ๋๋ณด๋ค ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ์ฌ ์๋์ ์ํ ์ ์ด ๋ชฉ์ ์ ์ฝํ์ํค๋ ์ฌ๊ฐ์ง๋๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ํ์์ ์ด๋ฏธ ์ ๋ฐ์ ์ธ ์ํํธ์จ์ด ๊ด๋ฆฌ ๋ณต์ก์ฑ ์ ์๋ฌ๋ฆฌ๋ ํ๊ฒฝ์์ ํํ ๊ด์ฐฐ๋ฉ๋๋ค.
RuboCop์ ๊ตฌ์กฐ์ ํ๊ณ๋ ์ ์ฒด ํ๋ก๊ทธ๋จ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ํ ์ธ์์ด ๋ถ์กฑํ๋ค๋ ์ ์์ ๋น๋กฏ๋ฉ๋๋ค. ํ๋ ์์ํฌ๋ณ ์คํ ๊ฒฝ๋ก, ์๋น์ค ๊ฐ ์ข ์์ฑ ๋๋ ๋ฐํ์ ๋์์ ๋ชจ๋ธ๋งํ์ง ๋ชปํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ด ํ๋ฆ ์ํธ ์์ฉ์ ๊ธฐ๋ฐํ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ๊ฑฐ๋ ์คํ์ ์ค์ํ ๊ฒฝ๋ก์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. RuboCop์ ํฌ๊ด์ ์ธ ์ํ ๋ถ์ ๋๊ตฌ๋ผ๊ธฐ๋ณด๋ค๋ ์ฝ๋ ํํ๋ฅผ ์์ ํํ๊ณ ๋ณ๋์ฑ์ ์ค์ด๋ ๋น ๋ฅด๊ณ ๊ท ์ผํ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ผ๋ก ํ์ฉ๋ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ์ด๋ฌํ ๋งฅ๋ฝ์์ RuboCop์ ์ฌ์ธต์ ์ธ ์ํ ํ๊ฐ๋ ๋ณด์์ ์ธ ๋ถ์ ๋๊ตฌ ๋ฐ ์ํคํ ์ฒ ๊ฐ์์ฑ ๊ณ์ธต์ ๋งก๊ธฐ๋ฉด์ ๊ธฐ๋ณธ์ ์ธ CI ๊ฒ์ดํธ๋ก์ ๋์ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค.
์คํ ๋ค๋RB
๊ณต์ ์ฌ์ดํธ: StandardRB
StandardRB๋ ์ค์ ํ์๊ณผ ๊ท์น ํ์ฐ์ ์์ ๋๋ก ์ค๊ณ๋, ํ๊ณ ํ ์๊ฒฌ์ ๊ฐ์ง Ruby ์ ์ ๋ถ์ ๋ฐ ํฌ๋งทํ ๋๊ตฌ์ ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ StandardRB์ ์ํคํ ์ฒ์ ์ญํ ์ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ฆฐํฐ์๋ ์๋นํ ๋ค๋ฆ ๋๋ค. ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ์ ์ฑ ์์ง ์ญํ ์ ํ๋ ๋์ , StandardRB๋ ํ๊ณผ ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด์ฑ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๊ฐ์กฐํ๋ ๊ณ ์ ๋ ์ปค๋ฎค๋ํฐ ์ ์ ๊ท์น ์งํฉ์ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ค๊ณ ๋ฐฉ์์ ๋๊ท๋ชจ ํ๊ฒฝ์์ StandardRB์ ๋์ , ๊ด๋ฆฌ ๋ฐ ์ ๋ขฐ๋์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ธฐ๋ฅ์ ์ผ๋ก StandardRB๋ ๋ฆฐํ ๊ณผ ํฌ๋งทํ ์ ๋จ์ผ ์คํ ๊ฒฝ๋ก๋ก ํตํฉํ์ฌ ์ต์ํ์ ์ค์ ์ผ๋ก ์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๊ตฌ์ฑ ์์๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ์๋น์ค ๊ฐ์ ๋ถ์ผ์น ์ํ์ด ์ค์ด๋ค๊ณ ์ฌ์ฉ์ ์ง์ ๊ท์น ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์๋ฐ๋๋ ๊ด๋ฆฌ ์ค๋ฒํค๋๊ฐ ๊ฐ์ํฉ๋๋ค. Ruby ํ์ด ๋ง์ ์กฐ์ง์์๋ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ ์ปจํ ์คํธ์ ๊ด๊ณ์์ด ๋์ผํ ๊ท์น ์ ์ฉ ๋ฐฉ์์ ๊ฒฝํํ๊ฒ ๋๋ฏ๋ก ์จ๋ณด๋ฉ, ์ ์ฅ์ ๋ณํฉ ๋๋ ํ๋ซํผ ํ์คํ ํ๋ก์ ํธ ์ค์ ๋ฐ์ํ๋ ๋ง์ฐฐ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค.
StandardRB๋ ์คํ ์์ค์ด๋ฏ๋ก ๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ด ๊ฐ๋จํฉ๋๋ค. ๊ธฐ์ ๋น์ฉ์ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋๊ตฌ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ ์ผ๋ก ๋ํ๋ฉ๋๋ค. ์กฐ์ง์ ๊ท์น ํ๋์ ์๊ฐ์ ํฌ์ํ๋ ๋์ ์์ธ ๊ด๋ฆฌ์ ํฌ์ํฉ๋๋ค. ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค๋ ๋ฐฐํฌ๋ฅผ ๋ฐฉํดํ์ง ์๋๋ก ์ ํ์ ๋นํ์ฑํ ๋๋ ๋จ๊ณ์ ๋ฐฐํฌ ์ ๋ต์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ์ฒด ๊ตฌ์ฑ ๊ท๋ชจ๋ ์์ง๋ง ๊ด๋ฆฌ๋์ง ์๋ ์์ธ๊ฐ ๋์ ๋ ์ ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์์ ์์๋ฐฉํธ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์๋ ๊ด๋ฆฌ๋๋ ๊ฒฐ๊ณผ๋ฌผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
CI ์คํ์์ StandardRB๋ ๋น ๋ฅธ ๊ฒ์ดํธ๋ก์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. ์๋ ํฌ๋งทํ ๊ธฐ๋ฅ์ ๋นํ์ฑํํ ๊ฒ์ดํ ์๋๋ฆฌ์ค์์ ๋ฐํ์ ๋์์ RuboCop๊ณผ ์ ์ฌํฉ๋๋ค. ๊ท์น์ด ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ค์บ ๊ฒฐ๊ณผ๊ฐ ์๊ฐ๊ณผ ํ๊ฒฝ์ ๊ด๊ณ์์ด ์์ ์ ์ด๋ฉฐ, ๋๊ตฌ ์ ๊ทธ๋ ์ด๋ ํ ์๊ธฐ์น ์์ ํ์ดํ๋ผ์ธ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ค์ฌ์ค๋๋ค. ์ด๋ฌํ ์์ ์ฑ์ ์๋ํ๋ ์คํ์ ๋ํ ์ ๋ขฐ๋ฅผ ์ํด CI ๊ฒฐ์ ์ฑ์ด ํ์์ ์ธ ๊ท์ ํ๊ฒฝ์ด๋ ๊ณ ๊ฐ์ฉ์ฑ ํ๊ฒฝ์์ ํนํ ์ค์ํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ํ์ค์ StandardRB์ ๊ฐ์ ๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ชจ๋ ๋๋ฌ๋ ๋๋ค. StandardRB๋ ์ ํ๋ ๋ถ์ ๋ฒ์์ ์์ธก ๊ฐ๋ฅํ ์ฑ๋ฅ ํ๋กํ ๋๋ถ์ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์ ๋ชจ๋ ธ๋ ํฌ์์ ํจ๊ณผ์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์ ๋ณ ๊ด๋ก, ๋๋ฉ์ธ ์ค์ฌ ํจํด ๋๋ ํ๋ ์์ํฌ ํ์ฅ์ด ๊ธฐ๋ณธ ๊ท์น์์ ๋ฒ์ด๋ ๊ฒฝ์ฐ, StandardRB์ ์ฃผ๊ด์ ์ธ ํน์ฑ์ด ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ, ํ์ ๋ก์ปฌ ์์ธ ์ฌํญ์ ์์ฉํ ์ง, ์๋๋ฉด ๋ด๋ถ ์ํคํ ์ฒ ํ์ค๊ณผ ์๋ฒฝํ๊ฒ ์ผ์นํ์ง ์์ ์ ์๋ ํจํด์ ๋ ํญ๋๊ฒ ์์ฉํ ์ง ์ ํํด์ผ ํฉ๋๋ค.
StandardRB์ ๊ตฌ์กฐ์ ํ๊ณ๋ StandardRB๋ฅผ ๋งค๋ ฅ์ ์ผ๋ก ๋ง๋๋ ์์น๊ณผ ๋์ผํ ์์น์์ ๋น๋กฏ๋ฉ๋๋ค. StandardRB๋ ์ฌ์ธต์ ์ธ ์๋ฏธ ๋ถ์, ํ๋ ์์ํฌ๋ณ ๋ชจ๋ธ๋ง ๋๋ ๋ฐ์ดํฐ ํ๋ฆ ์ถ๋ก ์ ์๋ํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์คํ ๋์, ๋ณด์ ๋ ธ์ถ ๋๋ ๋ชจ๋ ๊ฐ ์ํฅ์ ๋ํ ์ง์ ์ ์ธ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค. StandardRB์ ๊ฐ์น๋ ๊ท ์ผํ ์ฝ๋ ํํ๋ฅผ ๊ฐ์ ํ๊ณ ์คํ์ผ์ ๋ค์์ฑ์ ์ค์ด๋ ๋ฐ ์์ผ๋ฉฐ, ์ด๋ ๊ฐ์ ์ ์ผ๋ก ๋ ์์ ํ ๋ฆฌํฉํ ๋ง๊ณผ ๋ ๋ช ํํ ์ฝ๋ ๊ฒํ ์ ํธ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ฌํ ๋ฒ์ ๋ด์์ ์ฌ์ฉ๋ ๋ StandardRB๋ ๋ง์ฐฐ์ด ์ ๊ณ ์ ๋ขฐ๋๊ฐ ๋์ CI ๊ฒ์ดํธ ์ญํ ์ ํ๋ฉฐ, ์ ํ์ฑ, ๋ณด์ ๋ฐ ์ํคํ ์ฒ ์ํ์ ๋ค๋ฃจ๋ ๋ณด๋ค ์ ๋ฌธํ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ๋ณด์ํฉ๋๋ค.
๋ธ๋ ์ดํฌ๋งจ
๊ณต์ ์ฌ์ดํธ: Brakeman
Brakeman์ Ruby on Rails ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ๋ ์ ์ ๋ณด์ ๋ถ์ ๋๊ตฌ๋ก, ์ผ๋ฐ์ ์ธ ํจํด ๋งค์นญ๋ณด๋ค๋ ํ๋ ์์ํฌ ์ธ์์ ๊ฐ์กฐํ๋ ์คํ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ์ดํ๋ผ์ธ์์ Brakeman์ ์ญํ ์ ์ ๋ฌธํ๋์ด ์์ผ๋ฉฐ ๋ช ํํ๊ฒ ํ์ ๋ฉ๋๋ค. ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์ ์ฒด ๋ฐฐํฌ ํ๊ฒฝ ์์ด ์์ค ์ฝ๋์์ ์ง์ Rails ๊ด๋ จ ์ทจ์ฝ์ ์ ํ์ ์๋ณํ๋ ๊ฒ์ด ๊ทธ ์์ ๋๋ค. ์ด๋ฌํ ํน์ง ๋๋ถ์ Brakeman์ ๋น๋ ํ๊ฒฝ์์ ์์ธก ๊ฐ๋ฅํ๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ๋ณด์ ์ค์บ์ ํนํ ์ ํฉํฉ๋๋ค.
Brakeman์ ๊ธฐ๋ฅ์ ์ผ๋ก ์ปจํธ๋กค๋ฌ, ๋ชจ๋ธ, ๋ทฐ, ๋ผ์ฐํธ ๋ฐ ์ค์ ํ์ผ์ ๋ถ์ํ์ฌ Rails ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ํ์ง ์์ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ์ํํ ํ๋ ์์ํฌ ์ฌ์ฉ์ ์๋ณํฉ๋๋ค. Brakeman์ ํ์ง ๋ก์ง์ ์ธ์ ์ ์ทจ์ฝ์ , ์์ ํ์ง ์์ ๋งค๊ฐ๋ณ์ ์ฒ๋ฆฌ, ๋๋ ํ ๋น ๋ ธ์ถ, ์ธ์ฆ ์ทจ์ฝ์ , ์๋ชป ๊ตฌ์ฑ๋ ๋ณด์ ์ ์ด์ ๊ฐ์ ๋ฌธ์ ์ ์ด์ ์ ๋ง์ถฅ๋๋ค. ์ด๋ฌํ ๋ฐ๊ฒฌ ์ฌํญ์ Rails์ ๊ด๋ก์ ๊ธฐ๋ฐํ๋ฏ๋ก ์ผ๋ฐ์ ์ธ Rails ์ํคํ ์ฒ์ ์ ์ฉํ ๋ ์ผ๋ฐ์ ์ธ ์ค์บ๋๋ณด๋ค ๋ ๋์ ์์ค์ ์ ํ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
Brakeman์ ์คํ ์์ค์ด๋ฏ๋ก ๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ด ๊ฐ๋จํฉ๋๋ค. ๊ธฐ์ ๋น์ฉ์ ๋ผ์ด์ ์ค ๋น์ฉ๋ณด๋ค๋ ํตํฉ ๋ฐ ์ํฌํ๋ก ๊ด๋ฆฌ ๋น์ฉ์์ ๋ฐ์ํฉ๋๋ค. ์กฐ์ง์ ๋ณด๊ณ ์ ์์ง, ๋ฐ๊ฒฌ ์์น ์์ ๊ถ ๋งคํ, ๊ทธ๋ฆฌ๊ณ ํด๊ฒฐ ์กฐ์น ์ถ์ ์ ํฌ์ํ์ฌ ๊ฒฐ๊ณผ๊ฐ ๊ณ ๋ฆฝ๋ ๋ณด์ ์๋ฃ๋ก ๋จ์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ๊ท์ ํ๊ฒฝ์์๋ Brakeman์ ๊ฒฐ๊ณผ๋ฌผ์ ์ทจ์ฝ์ ๊ด๋ฆฌ ๋ฐ ๊ท์ ์ค์ ๋ณด๊ณ ํ๋ก์ธ์ค์ ์ฐ๊ณํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
CI ์คํ ํ๊ฒฝ์์ Brakeman์ ์ผ๋ฐ์ ์ผ๋ก ์์ ์ ์ด๊ณ ๊ฒฐ์ ๋ก ์ ์ธ ๋์์ ๋ณด์ ๋๋ค. ์ ์ ์์ค ์ ์ฉ ๋ถ์์ ํตํด ์์ ์ธํ๋ผ์ ๋ํ ์์กด์ฑ์ ์์ ๊ณ , ๋ธ๋์น ๋ฐ ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์ณ ๋ถ์์ ์ฑ์ ์ค์ ๋๋ค. ์ค์บ ์๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ์ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ฉฐ, ํนํ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ด๋ ์ฌ์ฉ์ ์ ์ DSL์ด ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋ ๋๊ท๋ชจ Rails ๋ชจ๋๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ๊ธฐ์ ๋ค์ ์ฒ๋ฆฌ๋๊ณผ ์ ์ฉ ๋ฒ์์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํด Brakeman์ ํ์์ ์ธ ๋ณํฉ ์ ๋จ๊ณ์์ ์ ๊ธฐ์ ์ธ ์ค์บ ๋๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น ์ค์บ์ผ๋ก ์ ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ํ์ค์ ๊ฐ์ ๊ณผ ํ๊ณ๋ฅผ ๋ชจ๋ ๋๋ฌ๋ ๋๋ค. Brakeman์ Rails ๊ด๋ จ ์ํ์ ๋ํ ์ฌ์ธต์ ์ธ ๊ฐ์์ฑ์ ์ ๊ณตํ์ง๋ง, ๊ทธ ๋ฒ์๋ ์๋์ ์ผ๋ก ์ ํ์ ์ ๋๋ค. Rails ์ด์ธ์ Ruby ์ฝ๋ ๊ฒฝ๋ก, Rails ์ธ๋ถ์์ ์ฌ์ฉ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์๋น์ค ๊ฐ ์ํธ ์์ฉ์ ๋ถ์ํ์ง ์์ต๋๋ค. ํผํฉ ํ๊ฒฝ์์๋ ํนํ Ruby ์๋น์ค๊ฐ ๋ค๋ฅธ ์ธ์ด๋ ๋ ๊ฑฐ์ ์์คํ ๊ณผ ์ํธ ์์ฉํ๋ ๊ฒฝ์ฐ, ์ฌ๊ฐ์ง๋๋ฅผ ํผํ๊ธฐ ์ํด ๋ณด์์ ์ธ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค. ์ด๋ ๋ ๊ด๋ฒ์ํ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ํ ์ํ ์์ ๋ ผ์๋๋ ์ ์ง์ ํ๋ํ ๊ณผ์ ์์ ํํ ๋ฐ์ํ๋ ํจํด์ ๋๋ค.
๊ณ ๋์ ์ฌ์ฉ์ ์ ์๊ฐ ํ์ํ ํ๊ฒฝ์์๋ ๊ตฌ์กฐ์ ํ๊ณ๊ฐ ๋๋ฌ๋ฉ๋๋ค. ๊ณ ๊ธ ๋ฉํํ๋ก๊ทธ๋๋ฐ, ๋์ ๊ฒฝ๋ก ์์ฑ ๋๋ ๋น์ ํต์ ์ธ ํ๋ ์์ํฌ ์ฌ์ฉ์ ํ์ง ์ ํ๋๋ฅผ ๋จ์ด๋จ๋ฆฌ๊ฑฐ๋ ์คํ์ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค. Brakeman์ ๋ฌด์ ํ์ผ ๋ฐ ์ ๋ขฐ๋ ์กฐ์ ๊ธฐ๋ฅ์ ์ง์ํ์ง๋ง, ๊ด๋ฆฌ๋์ง ์๋ ์ต์ ๊ธฐ๋ฅ์ ์ฅ๊ธฐ์ ์ธ ์ํ ๊ฐ์์ฑ์ ์ ํดํ ์ ์์ผ๋ฏ๋ก ์ ์ ํ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
Brakeman์ ๊ณ์ธตํ๋ ๋ถ์ ์ ๋ต ๋ด์์ Rails ํนํ ๋ณด์ ์ ํธ๋ก ํ์ฉ๋ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. Rails์ ๊ด๋ก๊ฐ ์ง๋ฐฐ์ ์ธ ํ๊ฒฝ์์ ๋์ ๊ฐ์น์ ์ทจ์ฝ์ ํ์ง๋ฅผ ์ ๊ณตํ์ง๋ง, ํฌ๊ด์ ์ธ ๋ณด์ ์๋ฃจ์ ์ผ๋ก ๊ฐ์ฃผํด์๋ ์ ๋ฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ์ดํ๋ผ์ธ์์ Brakeman์ ๊ฐ์น๋ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ด๋๋ฆฌ ๊ฒ์ดํธ๋ก ์ ์ฉํ๊ธฐ๋ณด๋ค๋, ๋ ๊ด๋ฒ์ํ ์ข ์์ฑ, ์คํ ๋ฐ ์ํคํ ์ฒ ๊ด๋ จ ์ ๋ณด์ ํจ๊ป ๋งฅ๋ฝํํ์ฌ ํ์ฉํ ๋ ๊ทน๋ํ๋ฉ๋๋ค.
์ ๊ทธ๋
๊ณต์ ์ฌ์ดํธ: Semgrep
Semgrep์ Ruby๋ฅผ ํฌํจํ ๋ค์ํ ์ธ์ด์ ๊ฑธ์ณ ํจํด ๋งค์นญ์ ํตํด ๋ณด์ ๋ฐ ๊ท์ ์ค์ ์ ์ฑ ์ ์ํํ๋๋ก ์ค๊ณ๋ ๊ท์น ๊ธฐ๋ฐ ์ ์ ๋ถ์ ์์ง์ ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ Semgrep์ ์ํคํ ์ฒ์ ์ญํ ์ ํ๋ ์์ํฌ ๋ชจ๋ธ๋ง๋ณด๋ค๋ ์ ์ฑ ์ฝ๋ํ์ ์ค์ ์ ๋ก๋๋ค. Semgrep์ ์ผ๋ฐ์ ์ผ๋ก ์กฐ์ง์์ ๋ค์ํ ์ ์ฅ์, ํ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ(ํผํฉ ์ธ์ด ํ๊ฒฝ ํฌํจ) ์ ๋ฐ์ ๊ฑธ์ณ ๋ณด์, ์์ ์ฑ ๋๋ ๊ท์ ์ค์ ๊ท์น์ ์ผ๊ด๋๊ฒ ์ ์ฉํด์ผ ํ ๋ ๋์ ๋ฉ๋๋ค.
Semgrep์ ๊ธฐ๋ฅ์ ์ผ๋ก ์ฝ๋ ํจํด์ ์ค๋ช ํ๋ ์ ์ธ์ ๊ท์น์ ์ ์ฉํ์ฌ ํ์ง ๋๋ ๊ธ์งํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. Ruby์ ๊ฒฝ์ฐ, ์ด๋ ๊ธฐ๋ณธ ๋ฆฐํฐ๋ ํ๋ ์์ํฌ ์ค์บ๋์์ ๋ค๋ฃจ์ง ์๋ ์์ ํ์ง ์์ API ์ฌ์ฉ, ์์ ํ์ง ์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํจํด, ์กฐ์ง๋ณ ์ํฐ ํจํด ๋ฑ์ ์๋ณํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๊ท์น์ด ๋ช ์์ ์ด๊ณ ์ฌ๋์ด ์ฝ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ณด์ ๋ฐ ํ๋ซํผ ํ์ ๋ด๋ถ ํ์ค์ ์ค์บ ๊ณ์ธต์ ์ง์ ๋ฐ์ํ์ฌ ๊ณต๊ธ์ ์ฒด์์ ์ ์ํ ํด๋ฆฌ์คํฑ์๋ง ์์กดํ๋ ๋์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ถ ๊ฑฐ๋ฒ๋์ค ๋ชฉํ์ ๋ง์ถ ์ ์์ต๋๋ค.
๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ ๋ฐฐํฌ ๋ฑ๊ธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ปค๋ฎค๋ํฐ ์๋์ ์ ์คํ ์์ค์ด๋ฉฐ ๋ก์ปฌ ์ค์บ ๋ฐ ๊ธฐ๋ณธ CI ํตํฉ์ ์ ํฉํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ ๋ฑ๊ธ์ ๊ท์ ํ๊ฒฝ์์ ์์ฃผ ์๊ตฌ๋๋ ์ค์ ์ง์ค์ ๊ท์น ๊ด๋ฆฌ, ๋ณด๊ณ ๋ฐ ์ํฌํ๋ก ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฒฝ์ ์ ์ธก๋ฉด์์์ ๊ณ ๋ ค ์ฌํญ์ ๋ผ์ด์ ์ค๋ณด๋ค๋ ๊ท์น ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ(์์ฑ, ์ ํจ์ฑ ๊ฒ์ฌ, ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ํ๊ธฐ ํฌํจ)์ ๋ ์ค์ ์ ๋ก๋๋ค. ๊ท์น ๊ด๋ฆฌ์ ๋ํ ์ฒด๊ณ์ ์ธ ์ ๊ทผ์ด ์์ผ๋ฉด ๊ท์น ์ธํธ๊ฐ ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ์ฌ ์ค์บ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ๋ฅผ ์ ํดํ๋ ๋ ธ์ด์ฆ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
CI ์คํ ํ๊ฒฝ์์ Semgrep์ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ด ์ฐ์ํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ๋ณํฉ ์ ๊ฒ์ฌ ๋ฐ ์์ฝ๋ ์ฌ์ธต ๊ฒ์ฌ์ ๋ชจ๋ ์ ํฉํฉ๋๋ค. ๋ฐํ์ ๋์์ ์ ์ฅ์ ํฌ๊ธฐ๋ฟ๋ง ์๋๋ผ ๊ท์น ๋ณต์ก์ฑ๊ณผ ๋ณผ๋ฅจ์ ์ํฅ์ ๋ฐ์ต๋๋ค. ๊ธฐ์ ์์๋ ์ฒ๋ฆฌ๋์ ์ ์งํ๋ฉด์ ๋ ๊ด๋ฒ์ํ ๊ฒ์ฌ ๋ฒ์๋ฅผ ํ๋ณดํ๊ธฐ ์ํด ๊ฒ์ดํ ์ ์ํ "๋น ๋ฅธ ๊ท์น"๊ณผ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ ๋น์ฉ์ด ๋ง์ด ๋ค๊ฑฐ๋ ์คํ์ ์ธ ๊ท์น์ ๋ถ๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ค๋ฅ ๋ฐ์ ์ ๋์์ ๊ฒฐ์ ๋ก ์ ์ด๋ฏ๋ก ์ ์ ํ๊ฒ ๊ตฌ์ฑํ๋ฉด ํ์ดํ๋ผ์ธ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ํ์ค์ ์ค์ํ ์ ์ฝ ์กฐ๊ฑด์ ๋๋ฌ๋ ๋๋ค. Semgrep์ ํจ์จ์ฑ์ ๊ท์น ํ์ง๊ณผ ๋ฒ์ ์ ์ด์ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค. ํนํ ํ๋ง๋ค ๊ด์ฉ์ ์ธ ํจํด์ด ๋ค์ํ ๋์ ์ธ Ruby ์ฝ๋๋ฒ ์ด์ค์์, ์ ๋๋ก ์์ฑ๋์ง ์์ ๊ท์น์ ๊ฐ์น๊ฐ ๋ฎ์ ๊ฒฐ๊ณผ๋ฅผ ๋๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ๋ํ, ์ผ๋ถ ๊ณ ๊ธ ํ๋ ์์ํฌ ์ธ์ ๋ถ์์ ๋ชจ๋ ๊ณ์ธต์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, ๋ก์ปฌ ๊ฐ๋ฐ์ ์ค์บ๊ณผ ์ค์ ์ง์ค์ CI ์ ์ฉ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ์ผ๊ด์ฑ ์๋ ์ ์ฉ ๋ฒ์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ๋ ํจํด ๊ธฐ๋ฐ ๋ถ์ ๋ชจ๋ธ์์ ๋น๋กฏ๋ฉ๋๋ค. Semgrep์ ํน์ ๋ฐ์ดํฐ ํ๋ฆ ์๋๋ฆฌ์ค๋ฅผ ๊ทผ์ฌํํ ์ ์์ง๋ง, ํ๋ก๊ทธ๋จ ์ ์ฒด์ ์๋ฏธ๋ก ์ ์ดํด๋ ์คํ ๊ฒฝ๋ก ๋ชจ๋ธ๋ง์ ์ ๊ณตํ์ง๋ ์์ต๋๋ค. ๋ฐ๋ผ์ Semgrep์ ์๋ก์ด ๋์์ ๋ฐ๊ฒฌํ๊ธฐ๋ณด๋ค๋ ๋ช ์์ ์ธ ์ ์ฑ ๊ณผ ์๋ ค์ง ์ํ ํจํด์ ์ ์ฉํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ ์ํคํ ์ฒ์์ Semgrep์ ์ฌ์ธต์ ์ธ ์๋ฏธ๋ก ์ ๋ถ์์ด๋ ์ข ์์ฑ ์ธ์ ๋ถ์๊ณผ ํจ๊ป ์ฌ์ฉ๋ ๋, ๊ทธ๋ฆฌ๊ณ ์ ์ ๋ถ์์ ๊ธฐ๋ณธ ์๋ฆฌ ์ ๋ํ ๋ช ํํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ํ ๋ ์ต์์ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค . ์ด๋ฅผ ํตํด ํจํด ์ ์ฉ์ ๊ด๋ฒ์ํ ์ํ ๊ฐ์์ฑ์ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๋ณด์ํ๋ ์ญํ ์ ํ ์ ์์ต๋๋ค.
CodeQL
๊ณต์ ์ฌ์ดํธ: CodeQL
CodeQL์ ์ฟผ๋ฆฌ ๊ธฐ๋ฐ ์ ์ ๋ถ์ ํ๋ซํผ์ผ๋ก, ์ฝ๋ ์ค์บ๋์ ๋จ์ํ ๊ท์น ์ผ์น ์์ ์ด ์๋ ์๋ฏธ๋ก ์ ๋ฐ์ดํฐ ๋ฌธ์ ๋ก ์ ๊ทผํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ CodeQL์ ํต์ฌ ์ญํ ์ ๊ตฌ์กฐํ๋ ์ฝ๋๋ฒ ์ด์ค ํํ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅํ ์ฟผ๋ฆฌ๋ฅผ ํตํด ์ฌ์ธต์ ์ธ ์ทจ์ฝ์ ๋ฐ๊ฒฌ ๋ฐ ์ ์ฑ ์ํ์ ์ง์ํ๋ ๊ฒ์ ๋๋ค. ํนํ Ruby ํ๊ฒฝ์์ CodeQL์ ๊ตฌ๋ฌธ ํจํด์ ๋์ด ์ค๋ช ๊ฐ๋ฅํ๊ณ ๊ฐ์ฌ ๊ฐ๋ฅํ ๋ณด์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํ์๋ก ํ๋ ๊ธฐ์ ์ ์ ํฉํ ๊ณ ํ์ง ๋ถ์ ์๋ฃจ์ ์ ๋๋ค.
๊ธฐ๋ฅ์ ์ผ๋ก CodeQL์ ๋จผ์ Ruby ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ, ์ ์ด ํ๋ฆ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ํ๋ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณํํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์ทจ์ฝ์ , ์์ ํ์ง ์์ ํจํด ๋ฐ ๋ ผ๋ฆฌ ์ค๋ฅ๋ฅผ ์๋ณํฉ๋๋ค. ์ด๋ฌํ 2๋จ๊ณ ์คํ ๋ชจ๋ธ์ CodeQL์ ๋ ๋น ๋ฅธ ํ์ผ ๊ธฐ๋ฐ ์ค์บ๋์ ๊ตฌ๋ณํ๋ ํน์ง์ ๋๋ค. ์ด๋ฅผ ํตํด ์ค์ผ๋ ๋ฐ์ดํฐ ์ ํ, ์์ ํ์ง ์์ ์ญ์ง๋ ฌํ ๊ฒฝ๋ก ๋ฐ ์ฌ๋ฌ ์คํ ๊ฒฝ๋ก๋ฅผ ํจ๊ป ๊ณ ๋ คํ ๋๋ง ๋ํ๋๋ ๋ณต์กํ ์ธ์ ์ ์๋๋ฆฌ์ค์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋์ฑ ์ ํํ๊ฒ ํ์งํ ์ ์์ต๋๋ค.
๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ ํ๋ซํผ ํตํฉ ๋ฐ ์ฌ์ฉ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. CodeQL์ ์ผ๋ฐ์ ์ผ๋ก ํตํฉ ์ฝ๋ ์ค์บ๋ ์ํฌํ๋ก์ฐ๋ฅผ ํตํด ์ฌ์ฉ๋๋ฉฐ, ์ด ๊ฒฝ์ฐ ๋ผ์ด์ ์ค๋ ํ๋ก์ ํธ๋ณ ์๊ธ์ด ์๋ ๊ด๋ฒ์ํ ๋ณด์ ๋๋ ํ๋ซํผ ๊ตฌ๋ ์ ์ฐ๋๋ฉ๋๋ค. ๊ธฐ์ ๋น์ฉ ์์ธ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ํ์ํ ์ปดํจํ ์์, ํ์ดํ๋ผ์ธ ์คํ ์๊ฐ, ์ฟผ๋ฆฌ ํฉ ๊ด๋ฆฌ ์ด์ ์ค๋ฒํค๋๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ์กฐ์ง์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ๊ฒ์ฆํ๋ ๋ฐ ํ์ํ ์ ๋ฌธ ์ง์ ๋น์ฉ๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
CI ์คํ ํ๊ฒฝ์์ CodeQL์ ํ์ฅ์ฑ ์ธก๋ฉด์์ ์ฌ๋ฌ ๊ฐ์ง ๊ณ ๋ ค ์ฌํญ์ ์ ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ํนํ ๋๊ท๋ชจ Ruby ๋ชจ๋๋ฆฌ์ ์์คํ ์ด๋ ๋ฐฉ๋ํ ํ์คํ ๋ฆฌ์ ๋ธ๋์นญ์ ๊ฐ์ง ์ ์ฅ์์ ๊ฒฝ์ฐ ๋ฆฌ์์ค ์ง์ฝ์ ์ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ์ ์์๋ ์ ํ๋ ์ฟผ๋ฆฌ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ํ ๋ฆฌํ์คํธ ์ค์บ๊ณผ ๋ ๊ด๋ฒ์ํ ์ฟผ๋ฆฌ ์ค์ํธ๋ฅผ ์คํํ๋ ์์ฝ๋ ์ค์บ ๋๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น ์ค์บ์ ๊ตฌ๋ถํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๋จ๊ณ๋ณ ์คํ ๋ชจ๋ธ์ ํตํด CodeQL์ CI ์ฒ๋ฆฌ๋์ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐ์ํค์ง ์์ผ๋ฉด์๋ ์ฌ์ธต์ ์ธ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํ ์ ์์ง๋ง, ์ด๋ฅผ ์ํด์๋ ์๋์ ์ธ ํ์ดํ๋ผ์ธ ์ค๊ณ์ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ํ์ค์ CodeQL์ ๊ฑฐ๋ฒ๋์ค ๋ฌธ์ ๋ฅผ ๋ถ๊ฐ์ํต๋๋ค. CodeQL์ ๊ฐ์ ์ ์ค์ ์ง์คํ์ ์์ต๋๋ค. ๋ณด์ ํ์ ์กฐ์ง ์ ์ฒด์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฟผ๋ฆฌ ์ธํธ๋ฅผ ์ ์ํ๊ณ ์ํํ์ฌ ์ทจ์ฝ์ ํ์ง์ ๋ณ๋์ฑ์ ์ค์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ค์ ์ง์คํ๋ ํ๋ซํผ ํ์ ๋ํ ์์กด์ฑ์ ์ผ๊ธฐํ๊ธฐ๋ ํฉ๋๋ค. ๋ช ํํ ๊ด๋ฆฌ ์ฒด๊ณ๊ฐ ์๋ค๋ฉด ์ฟผ๋ฆฌ ์ ๋ฐ์ดํธ๋ก ์ธํด ์์์น ๋ชปํ ์ทจ์ฝ์ ๋ฐ๊ฒฌ ๊ธ์ฆ์ด๋ ๋๋ฝ์ด ๋ฐ์ํ์ฌ ๋ฆด๋ฆฌ์ค์ ์ ๋ขฐ๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ํ, ๋ฃจ๋น ๊ณ ์ ์ ์ทจ์ฝ์ ํ์ง ๋ฒ์๋ ๋ง์ ์ทจ์ฝ์ ์ ํ์ ๋ํด ๊ฐ๋ ฅํ์ง๋ง, ํน์ ์์ธ ์ํฉ์์๋ ์ฃผ๋ฅ ์ธ์ด์ ๋นํด ๋ค์ฒ์ง ์ ์์ผ๋ฏ๋ก ์ํ ํ๊ฐ ์ ์ด๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ๋ ์ฃผ๋ก ๋ถ์์ ์ธ ์ธก๋ฉด๋ณด๋ค๋ ์ด์์ ์ธ ์ธก๋ฉด์์ ๋ํ๋ฉ๋๋ค. CodeQL์ ๊ฐ๋ฐ์ ์ค์ฌ์ ์ ์ํ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ์ํด ์ค๊ณ๋ ๊ฒ์ด ์๋๋ฉฐ, ๋ฐํ์ ํน์ฑ์ ๋ฒ์ฉ์ ์ธ ๋ณํฉ ์ ๊ฒ์ฌ ๋๊ตฌ๋ก ์ฌ์ฉํ๊ธฐ์๋ ์ ํฉํ์ง ์์ต๋๋ค. CodeQL์ ์ง๊ฐ๋ ๋ ๋น ๋ฅธ ๋๊ตฌ๋ฅผ ๋ณด์ํ๋ ์ฌ์ธต ๊ฒ์ฌ ๊ณ์ธต์ผ๋ก ํ์ฉ๋ ๋ ๋ฐํ๋ฉ๋๋ค. ์ ์ ํ๊ฒ ์ฌ์ฉ๋ ๊ฒฝ์ฐ, CodeQL์ ๊ธฐ์ ์๊ฒ Ruby ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์์ ๋ํด ์๋ฏธ๋ก ์ ์์ค์์ ๋ถ์ํ ์ ์๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ, ์ผ์์ ์ธ ์ฝ๋ ์คํ์ผ ๊ฐ์ ๋ณด๋ค๋ ๊ท์ ์ค์, ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ ๋ฐ ์ฅ๊ธฐ์ ์ธ ์ํ ๊ฐ์๋ฅผ ์ง์ํฉ๋๋ค.
์ ๋ฒ
๊ณต์ ์ฌ์ดํธ: ์๋ฅด๋ฒ
Sorbet์ Ruby์ฉ ์ ์ ํ์ ๊ฒ์ฌ๊ธฐ๋ก, ๋์ ์ผ๋ก ํ์ ์ด ์ง์ ๋๋ ๊ธฐ์กด ์์คํ ์ ๋ช ์์ ์ธ ํ์ ์ ๋ณด๋ฅผ ๋์ ํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ Sorbet์ ์ํคํ ์ฒ์ ์ญํ ์ ์คํ์ผ ๊ฐ์ ๋ ์ทจ์ฝ์ ํ์ง๊ฐ ์๋๋ผ, ์ง์์ ์ธ ๋ณ๊ฒฝ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ธํฐํ์ด์ค์ ๋ณํ๋ฅผ ์ ์ดํ๋ โโ๊ฒ์ ๋๋ค. Sorbet์ Ruby ์์คํ ์ด ๋๊ท๋ชจ ๋ฆฌํฉํ ๋ง, ์๋น์ค ์ถ์ถ ๋๋ ๋ณ๋ ฌ ์คํ ๋ฐฉ์์ ํ๋ํ ์์ ์ ๊ฑฐ์น ๋, ๊ตฌ์ฑ ์์ ๊ฐ์ ์๋ฌต์ ์ธ ๊ณ์ฝ์ด ๋ณํฉ ํ ๋ฐ ๋ฆด๋ฆฌ์ค ํ ์ค๋ฅ์ ์ฃผ์ ์์ธ์ด ๋๋ ๊ฒฝ์ฐ์ ํนํ ์ค์ํฉ๋๋ค.
๊ธฐ๋ฅ์ ์ผ๋ก Sorbet์ ๋ฉ์๋ ์๊ทธ๋์ฒ, ์์ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ ํ์ ์ด ์ง์ ๋ ์ด๋ ธํ ์ด์ ๊ณผ ์์ฑ๋ ์ธํฐํ์ด์ค ํ์ผ์ ํตํด ์๋ํฉ๋๋ค. Sorbet์ ์คํ ๋์์ ์ค๊ณ์ ์ ์ง์ ์ ๋๋ค. ํ์ Sorbet์ ์ ํ์ ์ผ๋ก ๋์ ํ์ฌ ์ํ๋๊ฐ ๋์ ๋ชจ๋์๋ ์๊ฒฉํ ํ์ ์ง์ ์ ์ ์ฉํ๊ณ ์ฃผ๋ณ ์์ญ์๋ ๋์จํ ํ์ ์ง์ ์ ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์ ์ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค์ ์ด๋ ธํ ์ด์ ์ ์ผ๊ด์ ์ผ๋ก ์ ์ฉํ์ง ์๊ณ ๋ ์๋น์ค ์ธํฐํ์ด์ค, ๋๋ฉ์ธ ๋ชจ๋ธ ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ํต์ฌ ์์ญ์ ์ง์คํ ์ ์์ต๋๋ค.
Sorbet์ ์คํ ์์ค์ด๋ฏ๋ก ๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ ๊ฐ๋จํฉ๋๋ค. ๊ธฐ์ ๋น์ฉ์ ๋ผ์ด์ ์ค ๋น์ฉ๋ณด๋ค๋ ๋์ ๋ฐ ๊ด๋ฆฌ ๋น์ฉ์์ ๋ฐ์ํฉ๋๋ค. ํ์ ์ด ์ง์ ๋ ์ํฐํฉํธ๋ ์์ ๊ถ, ๊ฒํ ๋ฐ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ๊ฐ ํ์ํ ์๋ก์ด ์ ํ์ ์์ฐ์ ๋๋ค. ๋ช ํํ ์ฑ ์ ๋ชจ๋ธ์ด ์์ผ๋ฉด ์ด๋ฌํ ์ํฐํฉํธ๋ ๋ ธํํ๋์ด ํ์ ๊ฒ์ฌ์ ๋ํ ์ ๋ขฐ๋๋ฅผ ๋จ์ด๋จ๋ฆฌ๊ณ CI ์คํจ๊ฐ ๋ฐํ์ ์ํฉ๊ณผ ๋๋จ์ด์ ธ ๋ณด์ผ ๋ ๋ง์ฐฐ์ ์ผ์ผํฌ ์ ์์ต๋๋ค.
CI ํ์ดํ๋ผ์ธ์์ Sorbet์ ์คํ ํ๋กํ์ผ์ ๋์ ๋ฒ์์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๋๋ค. ์ ํ์ ์ด๊ณ ๊ฒฝ๊ณ์ ์ด์ ์ ๋ง์ถ ํ์ ๊ฒ์ฌ๋ ๋น ๋ฅด๊ณ ์์ธก ๊ฐ๋ฅํ ์คํ ์๋๋ฅผ ์ ๊ณตํ๋ฏ๋ก ๋ฏผ๊ฐํ ์์ญ์ ๋ณ๊ฒฝ ์ฌํญ์ ์น์ธํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ๋ฐ๋ฉด, ๋๊ท๋ชจ ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค์ ๊ฑธ์ณ ๊ด๋ฒ์ํ๊ฑฐ๋ ์๊ฒฉํ ํ์ ๊ฒ์ฌ๋ฅผ ์ ์ฉํ๋ฉด ํนํ Ruby ๋ฉํํ๋ก๊ทธ๋๋ฐ์ด๋ ๋์ ๋์์ด ๋ง์ ๊ฒฝ์ฐ ์คํ ์๊ฐ๊ณผ ์ค๋ฅ ๋ฐ์ ๋น๋๊ฐ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ๊ธฐ์ ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ํ์ ๊ฒ์ฌ๋ฅผ ๋ณํฉ ์ ๋จ๊ณ์ ์ผ๊ด์ ์ผ๋ก ํฌํจ์ํค๋ ๋์ , ํ์ดํ๋ผ์ธ์ ํน์ ๋จ๊ณ๋ก ๋ถ๋ฆฌํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ํํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์ ํ์ค์ Sorbet์ ์ด์ค์ ์ธ ํน์ฑ์ ๋ถ๊ฐํฉ๋๋ค. ์ ๊ด๋ฆฌ๋ ๊ฒฝ์ฐ, Sorbet์ ํตํฉ ํ ์คํธ๋ ํ๋ก๋์ ๋ฐฐํฌ ์ค์ ๋๋ฌ๋ ์ ์๋ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๊ฐ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ์ง๋ง ์ ๋๋ก ๊ด๋ฆฌ๋์ง ์์ ๊ฒฝ์ฐ, ๋ถ๋ถ์ ์ธ ์ฐํ๋ ์ ํ์ ๋นํ์ฑํ๋ฅผ ์กฐ์ฅํ๋ ๋ง์ฐฐ์ ์์ธ์ด ๋ ์ ์์ต๋๋ค. Sorbet์ ํจ๊ณผ๋ ํ์ ์ฑํ์ด ์ํคํ ์ฒ ์๋ ๋ฐ ๋ณต์ก์ฑ ์ง์ค๋์ ์ผ๋ง๋ ์ ๋ถํฉํ๋์ง์ ๋ฐ๋ผ ํฌ๊ฒ ์ข์ฐ๋๋ฉฐ, ์ด๋ฌํ ๊ด๊ณ๋ ์ธ์ง ๋ณต์ก์ฑ ์ธก์ ์ ํตํด ์ข ์ข ๋๋ฌ๋ฉ๋๋ค.
๊ตฌ์กฐ์ ํ๊ณ๋ ๋ฃจ๋น์ ์ญ๋์ ์ธ ํน์ฑ์์ ๋น๋กฏ๋ฉ๋๋ค. Sorbet์ ๋ฐํ์์ ์์ฑ๋๋ ๋์, DSL์ด ๋ง์ด ์ฌ์ฉ๋ ์ฝ๋, ๋๋ ์๋ ๊ฐ์ ์์ด ๋ง์ฐํ ๋ชฝํค ํจ์นญ์ ์๋ฒฝํ๊ฒ ๋ชจ๋ธ๋งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๊ฐ Sorbet์ ๊ฐ์น๋ฅผ ๋ถ์ ํ๋ ๊ฒ์ ์๋์ง๋ง, ๋ช ํํ ๊ฒฝ๊ณ ์ ์์ ๊ธฐ๋์น๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. Sorbet์ ๋ชจ๋ ๋ฃจ๋น ์ฝ๋์ ๋ํ ๋ณดํธ์ ์ธ ์ ํ์ฑ ๊ฒ์ฆ ๋๊ตฌ๋ก ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ ์ธํฐํ์ด์ค ์์ ์ฑ์ด ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ์๋์ ์ผ๋ก ์ ์ฉํ๋ ๋ฆฌํฉํ ๋ง ๋ฐ ํ๋ํ ์ ์ด ๋ฉ์ปค๋์ฆ์ผ๋ก ํ์ฉํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
ํํ
๊ณต์ ์ฌ์ดํธ: Steep
Steep์ RBS ํ์ ์๊ทธ๋์ฒ ์ํ๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ Ruby์ฉ ์ ์ ํ์ ๊ฒ์ฌ๊ธฐ๋ก, ๊ณต์ ๋๊ณ ์ธ๋ถํ๋ ๊ณ์ฝ์ ๋ ์ค์ ์ ๋ ์ ์ง์ ํ์ ์ง์ ์ ๋ต์ ๋์์ผ๋ก ์๋ฆฌ๋งค๊นํ๊ณ ์์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ CI ํ๊ฒฝ์์ Steep์ ์ํคํ ์ฒ์ ์ญํ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ง์ ํ์ ์ด๋ ธํ ์ด์ ์ ์ฝ์ ํ๋ ๋์ , ๋ช ์์ ์ผ๋ก ์ ์๋ ์ธํฐํ์ด์ค ์ฌ์์ ๋ฐ๋ผ Ruby ๊ตฌํ์ ๊ฒ์ฆํ๋ ๋ฐ ์์ต๋๋ค. ์ด๋ฌํ ์ฐจ์ด์ ์ ๊ฑฐ๋ฒ๋์ค, ์์ ๊ถ ๋ฐ ํ์ฅ์ฑ์ ์ค์ํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ธฐ๋ฅ์ ์ผ๋ก Steep์ ํด๋์ค ์ธํฐํ์ด์ค, ๋ฉ์๋ ์๊ทธ๋์ฒ ๋ฐ ์์ ๋ฐ์ดํฐ ํํ๋ฅผ ์ค๋ช ํ๋ RBS ํ์ผ์ ๊ธฐ์ค์ผ๋ก Ruby ์์ค ์ฝ๋๋ฅผ ํ๊ฐํฉ๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ฅผ ํตํด ๊ธฐ์ ์ ํ์ ์ ์๋ฅผ API ๊ณ์ฝ์ด๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์๊ณผ ํจ๊ป ๊ด๋ฆฌ๋๋ ํต์ฌ ์ํคํ ์ฒ ์์๋ก ์ทจ๊ธํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ํ์ด ํ์ ํ๋ ํ๊ฒฝ์์ RBS ํ์ผ์ ๊ณต์ ๊ตฌ์ฑ ์์์ ์์ฐ์์ ์๋น์ ๊ฐ์ ๊ณต์์ ์ธ ๊ณ์ฝ ์ญํ ์ ํ๋ฏ๋ก ์์ ๊ถ ๊ฒฝ๊ณ๋ฅผ ๋ช ํํ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Steep์ ์คํ ์์ค์ด๋ฏ๋ก ๊ฐ๊ฒฉ ์ฑ ์ ๋ฐฉ์์ด ๊ฐ๋จํฉ๋๋ค. ๊ธฐ์ ๋น์ฉ์ ํด๋ง๋ณด๋ค๋ ์๊ทธ๋์ฒ ๊ด๋ฆฌ์์ ๋ฐ์ํฉ๋๋ค. RBS ์ ์ฅ์๋ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌ๋๊ณ , ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ฉฐ, ์ค์ ์ฝ๋ ์งํ์ ์ผ์นํด์ผ ํฉ๋๋ค. ์ฒด๊ณ์ ์ธ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉด ์๊ทธ๋์ฒ๊ฐ ๊ตฌํ๋ณด๋ค ๋ค์ฒ์ ธ CI(์ง์์ ํตํฉ)์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ํ์ ๊ฐ์ ์ ์ฉ์ ๋ํ ์ ๋ขฐ๊ฐ ์ฝํ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Steep์ ๋์ ํ๋ ค๋ฉด ์ธ๋ผ์ธ ํ์ ์ง์ ๋ฐฉ์๋ณด๋ค ๋ ๋์ ์์ค์ ๊ฑฐ๋ฒ๋์ค ์ฑ์๋๊ฐ ์๊ตฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
CI ์คํ ์ Steep์ ๋ฐํ์ ๋์์ RBS(Ruby Base Screen) ์ ์ฉ ๋ฒ์์ ์ฝ๋๋ฒ ์ด์ค์ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์๋น์ค ๊ฒฝ๊ณ ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ง์ค์ ์ผ๋ก ์ ์ฉํ๋ฉด ์์ธก ๊ฐ๋ฅํ๊ณ ๋ ธ์ด์ฆ๊ฐ ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ด ๊ฒ์ดํ ์ ์ ํฉํฉ๋๋ค. ํ์ง๋ง ๋ ๊ฑฐ์ ์ฝ๋๊ฐ ๋ง์ Ruby ์์คํ ์ ๋ฐ์ ๊ฑธ์ณ ๊ด๋ฒ์ํ๊ฒ ์ ์ฉํ๋ฉด ์ค์บ ์๊ฐ์ด ๋์ด๋๊ณ ๋์ ๋์ ๋ชจ๋ธ๋ง์ด ๋ถ์ถฉ๋ถํ ๊ฒฝ์ฐ ์ฆ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ธฐ์ ๋ค์ ์ ๋ขฐ๋์ ์ฒ๋ฆฌ๋์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํด ๋ชจ๋ ํ ๋ฆฌํ์คํธ์ Steep ๊ฒ์ฌ๋ฅผ ์คํํ๋ ๋์ ํตํฉ ๋ธ๋์น๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์์ ๊ฒ์ฌ๋ฅผ ์คํํ๋๋ก ์ค์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค์ ๊ณ ๋ คํ ๋, Steep์ ๊ณ์ฝ ๊ธฐ๋ฐ ํ๊ฒฝ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค. ์ธํฐํ์ด์ค ์ ์, ๋ฒ์ ๊ด๋ฆฌ๋๋ API ๋๋ ๊ณต์ ์คํค๋ง ์ ์ฅ์๋ฅผ ์ด๋ฏธ ๊ด๋ฆฌํ๋ ์กฐ์ง์ Steep์ด ๊ธฐ์กด ๋ฐฉ์๊ณผ ์์ฐ์ค๋ฝ๊ฒ ์กฐํ๋ฅผ ์ด๋ฃฌ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋๋ก, ๋น๊ณต์์ ์ธ ๊ณ์ฝ๊ณผ ๋น ๋ฅธ ๋ฐ๋ณต ์์ ์ ์ต์ํ ํ์ ๋ณ๊ฒฝ ์ฌํญ ๋ณํฉ์ ์๋ช ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ ์กฐ๊ฑด์ด ๋ ๋ ๋ง์ฐฐ์ ๊ฒฝํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฅ๋จ์ ์ ์ธํฐํ์ด์ค๊ฐ ์์ ํ๋๊ธฐ ์ ์ ๋น ๋ฅด๊ฒ ์งํํ๋ ํ๋ํ ํ๋ก๊ทธ๋จ์์ ํนํ ๋๋๋ฌ์ง๋๋ค.
Steep์ ๊ตฌ์กฐ์ ํ๊ณ๋ ๋ชจ๋ Ruby ํ์ ์์คํ ์ ํ๊ณ์ ์ ์ฌํฉ๋๋ค. Steep๋ ๋ฐํ์ ๋ฉํํ๋ก๊ทธ๋๋ฐ, DSL ๋๋ ๊ด๋ฒ์ํ ๋ชฝํค ํจ์นญ์ ํตํด ์์ฑ๋ ๋์์ ์๋ ๋ชจ๋ธ๋ง ์์ด๋ ์๋ฒฝํ๊ฒ ์ถ๋ก ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Steep์ ๊ฐ์น๋ ์ ์คํ ๋ฒ์ ์ ํ์ ๋ฌ๋ ค ์์ต๋๋ค. Steep๋ ๋ชจ๋ Ruby ์ฝ๋์ ๋ํ ํฌ๊ด์ ์ธ ํด๊ฒฐ์ฑ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋, ์ ์ ์๋ ๊ฒฝ๊ณ์์ ์ ํ์ฑ์ ๊ฐ์ ํ๊ณ ๋ฆฌํฉํ ๋ง ๋ฐ ์๋น์ค ์งํ๋ฅผ ์ง์ํ๋ ๋ฐ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ์ด๋ฌํ ์ญํ ์ ์ฌ์ฉ๋ ๋ Steep๋ Ruby ๊ณ ์ ์ ์ ์ฐ์ฑ์ ์ ์งํ๋ฉด์ ์ธํฐํ์ด์ค ๋ณํ๋ฅผ ์๊ฒฉํ๊ฒ ์ ์ดํ๋ โโ๋ฉ์ปค๋์ฆ์ ๊ธฐ์ ์ ์ ๊ณตํฉ๋๋ค.
๊ธฐ์ CI ํ๊ฒฝ์์ Ruby ์ ์ ๋ถ์ ๋๊ตฌ์ ๋น๊ต ๋ถ์
์๋ ํ๋ฅผ ํตํด ๋ฃจ๋น ์ ์ ๋ถ์ ๋๊ตฌ๋ค์ด ์คํ ๋์, ๊ด๋ฆฌ ๋น์ฉ, CI ๊ฒ์ดํธํคํ ์ ํฉ์ฑ, ์ฌ์ธต์ ์ธ ์ํ ๋ถ์ ๋ฑ์์ ์ด๋ค ์ฐจ์ด๋ฅผ ๋ณด์ด๋์ง ๋ช ํํ๊ฒ ๋น๊ตํ ์ ์์ต๋๋ค. ์ด ํ๋ ๋จ์ผ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์๋๋ผ ํฌํธํด๋ฆฌ์ค๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋ ํ๋ซํผ ์ฑ ์์ ๋ฐ ํ๋ํ ์ค๊ณ์๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค . ๊ฐ ํญ๋ชฉ์ ํ์ดํ๋ผ์ธ ์ง์ฐ ์๊ฐ ๋ฏผ๊ฐ๋, ๊ท์น ๊ด๋ฆฌ ์ค๋ฒํค๋, ๊ฐ๋ณ ํ์ผ ์์ค์ ๋์ด์ ์ํ ๋ถ์ ๋ฅ๋ ฅ ๋ฑ ๋๊ท๋ชจ ๋ฃจ๋น ํ๊ฒฝ์์ ๊ด์ฐฐ๋๋ ์ด์์์ ํ์ค์ ๋ฐ์ํฉ๋๋ค.
์ด ๋น๊ต๋ ๊ธฐ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ๊ฐ ์๋๋ผ ์ํคํ ์ฒ ์ ๋ ฌ ๋งคํธ๋ฆญ์ค๋ก ์ดํดํด์ผ ํฉ๋๋ค. ํ ์ธก๋ฉด์์ ์ฝํด ๋ณด์ด๋ ๋๊ตฌ๋ ์ข ์ข ์๋์ ์ผ๋ก ๋ค๋ฅธ ์ธก๋ฉด์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ, ๋๊ตฌ ์ค๊ณ์ CI ์ญํ ๊ฐ์ ๋ถ์ผ์น๋ ๊ธฐ์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์์ ๋ง์ฐฐ๊ณผ ์ฐํ ํ์์ ์ผ๋ฐ์ ์ธ ์์ธ์ ๋๋ค.
| ์๋จ | CI์์์ ์ฃผ์ ์ญํ | ๋ถ์ ์ฌ๋ | ์คํ ๋์ | CI ๊ฒ์ดํธ ์ ํฉ์ฑ | ๊ธฐ์ ๊ท๋ชจ ํ์ฅ์ ํ์ค | ๊ตฌ์กฐ์ ํ๊ณ |
|---|---|---|---|---|---|---|
| ๋ฃจ๋ณด์บ | ๋ฆฐํ ๋ฐ ์ ์ฑ ์ํ | ๊ตฌ๋ฌธ๋ก ์ ๋ฐ ๊ตฌ์กฐ๋ก ์ | ๋น ๋ฅด๊ณ , ํ์ผ ๊ธฐ๋ฐ์ด๋ฉฐ, ๊ฒฐ์ ๋ก ์ ์ ๋๋ค. | ๋ณํฉ ์ ๊ฒ์ดํธ์ ๊ฐ๋ ฅํจ | ๋ชจ๋ ธ๋ ํฌ ํ๊ฒฝ์์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ์ค์ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. | ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ฌ, ์คํ ๋ชจ๋ธ๋ง ๋ถ์ฌ, ๋ณด์์ ๋ํ ์ดํด ๋ถ์กฑ |
| ์คํ ๋ค๋RB | ๊ท ์ผํ ๋ฆฐํ ๋ฐ ํฌ๋งทํ | ๊ตฌ๋ฌธ๋ก ์ | ๋น ๋ฅด๊ณ , ํ๊ณ ํ ์๊ฒฌ์ ๊ฐ๊ณ ์์ผ๋ฉฐ, ๋ณ๋์ฑ์ด ๋ฎ์ | ๋ณํฉ ์ ๊ฒ์ดํธ์ ๊ฐ๋ ฅํจ | ์ค์ ์ค๋ฒํค๋๊ฐ ๋ฎ์ง๋ง ์์ธ ๋ฐ์๋ฅ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. | ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ด ์ ํ์ ์ด๋ฉฐ, ์๋ฏธ๋ก ์ ๋ถ์์ด๋ ๋ณด์ ๋ถ์์ ์ ๊ณต๋์ง ์์ต๋๋ค. |
| ๋ธ๋ ์ดํฌ๋งจ | Rails ๋ณด์ ์ค์บ | ํ๋ ์์ํฌ ์ธ์, ๋ถ๋ถ ๋ฐ์ดํฐ ํ๋ฆ | ์ ์ ์์ค ๋ถ์; ๋ฐํ์ ๋ ๋ฆฝ์ | ์ค๊ฐ ์ ๋์ด๋ฉฐ, ์ข ์ข ๋ฐฉ์ถ ์กฐ์ ํ์ ๋๋ค. | Rails ๋ชจ๋๋ฆฌ์ค์ ๋ํ ๋์ ์ ํธ; ๋ฒ์๋ Rails๋ก ์ ํ๋จ | Rails ๊ธฐ๋ฐ์ด ์๋ Ruby์๋ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฉํํ๋ก๊ทธ๋๋ฐ์ด ๋ง์ ๊ฒฝ์ฐ ์ ํ๋๊ฐ ๋จ์ด์ง๋๋ค. |
| ์ ๊ทธ๋ | ์ ์ฑ ๋ฐ ๊ท์ ์ค์ ์งํ | ํจํด ๊ธฐ๋ฐ, ์ ํ๋ ๋ฐ์ดํฐ ํ๋ฆ | ๋ณ๋ ฌํ ๊ฐ๋ฅ; ๊ท์น์ ๋ฐ๋ผ ๋น์ฉ์ด ๊ฒฐ์ ๋จ | ์ ์ฐํ๋ฉฐ, ๊ท์น ๊ณ์ธตํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. | ๋ฆฌํฌ์งํ ๋ฆฌ ์ ๋ฐ์ ๊ฑธ์น ํ์ฅ์ฑ ํ๋ณด; ๊ท์น ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. | ์๋ก์ด ํ๋์ ๋ํ ํจํด ์ ํ; ์ ์ฉ ๋ฒ์๋ ๊ณ์ธต๋ณ๋ก ๋ค๋ฆ ๋๋ค |
| CodeQL | ์ฌ์ธต ๋ณด์ ๋ฐ ์๋ฏธ ๋ถ์ | ์ ์ฒด ํ๋ก๊ทธ๋จ, ๋ฐ์ดํฐ ํ๋ฆ | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ ๋ฐ ์ฟผ๋ฆฌ ์คํ | ๋ณํฉ ์ ๊ฒ์ฌ ์์๋ ๋ฎ์, ์์ฝ ๊ฒ์ฌ ์์๋ ๋์ | ์ค์ ์ง์ค์ ๊ด๋ฆฌ; ๋ ๋์ ์ปดํจํ ๋ฐ ํ์ดํ๋ผ์ธ ๋ณต์ก์ฑ | ์ด์ ์ค๋ฒํค๋; ๋๋ฆฐ ํผ๋๋ฐฑ ๋ฃจํ |
| ์ ๋ฒ | ์ธํฐํ์ด์ค ๋๋ฆฌํํธ ์ ์ด | ์ ํ ๊ธฐ๋ฐ, ๊ฒฝ๊ณ ์ค์ฌ | ์ ์ง์ ; ๋ฒ์ ์ข ์์ | ์ค์ ๊ฒฝ๋ก์ ๋ํ ์ ํ์ ๊ฒ์ดํ | ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์ ๋์ ๊ฐ์น๋ฅผ ์ง๋๋ฉฐ, ํ์ ์ํฐํฉํธ ์์ ๊ถ์ด ํ์ํฉ๋๋ค. | Ruby ๋์ ๋์์ ๋ํ ์ ํ์ ์ธ ๋ชจ๋ธ๋ง |
| ํํ | RBS๋ฅผ ํตํ ๊ณ์ฝ ๊ฒ์ฆ | ํ์ ๊ธฐ๋ฐ, ๋ช ์ธ ์ค์ฌ | ์๋ช ํ๊ฐ ๋ฐ ์ฝ๋ ๊ฒ์ฌ | ์ ํ์ ์ด๋ฉฐ, ์ข ์ข ํฉ๋ณ ํ์ ๋ฐ์ํฉ๋๋ค. | ๊ณ์ฝ ์ค์ฌ ์กฐ์ง์ ๊ฐ์ ๋ณด์ ; ์๋ช ํ ๊ฑฐ๋ฒ๋์ค ํ์ | RBS ๋ณ๋ ์ํ; ๋์ ํจํด์ผ๋ก ์ธํด ์๋ ๋ชจ๋ธ๋ง์ด ํ์ํฉ๋๋ค. |
ํน์ ๊ธฐ์ ์๊ตฌ ์ฌํญ์ ์ ํฉํ ์ธ๊ธฐ ์๋ Ruby ์ ์ ๋ถ์ ๋์๋ค
CI ๊ฒ์ดํธํคํ, ๋ณด์ ๊ฐํ ๋ฐ ํ์ ์ ์ด์ ์ฌ์ฉ๋๋ ํต์ฌ ๋๊ตฌ ์ธ์๋, ๋ง์ ๊ธฐ์ ๋ค์ ํน์ ์ํ ์์ญ์ด๋ ์ํฌํ๋ก์ ๋ถ์กฑํ ๋ถ๋ถ์ ํด๊ฒฐํ๊ธฐ ์ํด ํน์ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋ฃจ๋น ์ ์ ๋ถ์ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ณด์ํฉ๋๋ค. ์ด๋ฌํ ๋์๋ค์ ์ฃผ๋ ๋ณด์ ์กฐ์น๋ก๋ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ์์กด์ฑ ์ํ ๊ด๋ฆฌ, ์ ์ง๋ณด์์ฑ ๋ณด๊ณ ๋๋ ๊ฐ๋ฐ์ ์ค์ฌ์ ํผ๋๋ฐฑ ๋ฃจํ์ ๊ฐ์ ํน์ ์๋๋ฆฌ์ค์์๋ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์์ต๋๋ค.
์ด ๋ฒ์ฃผ๋ Ruby๊ฐ ๋ ๋์ ํ๋ซํผ ํ๊ฒฝ์ ๊ตฌ์ฑ ์์ ์ค ํ๋์ด๊ฑฐ๋ ํน์ ์ํ์ด ๋ฆฐํ , ํ์ ๊ฒ์ฌ ๋๋ ํ๋ ์์ํฌ ์ธ์ ๋ณด์ ์ค์บ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ ์คํ๊ฒ ์ฌ์ฉํ๋ฉด ์ค์ํ CI ๊ฒฝ๋ก์์ ๋ถํ์ํ ๊ฒ์ฌ๋ฅผ ๋๋ฆฌ์ง ์๊ณ ๋ ์ฝ๋ ๊ฒ์ฆ ๋ฒ์๋ฅผ ๊ฐํํ ์ ์์ต๋๋ค.
์ฃผ์ ์ฌ์ฉ ์ฌ๋ก๋ณ ์ฃผ๋ชฉํ ๋งํ Ruby ์ ์ ๋ถ์ ๋ฐ ๊ด๋ จ ๋๊ตฌ
- ๋ฃจ๋นํฌ๋ฆฌํฑ
Reek๊ณผ ๊ฐ์ ๋๊ตฌ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉํ์ฌ ์ ์ง๋ณด์์ฑ ์ ์, ๋ณ๊ฒฝ ๋น๋ ์งํ ๋ฐ ํซ์คํ ๋ถ์์ ์ ๊ณตํฉ๋๋ค. ๋ณํฉ ๊ฒ์ดํ ๋ณด๋ค๋ ๊ฒฝ์์ง ๋ณด๊ณ ๋ฐ ๋ฆฌํฉํ ๋ง ์ฐ์ ์์ ์ง์ ์ ๊ฐ์ฅ ์ ์ฉํฉ๋๋ค. - ๊น
์ ์ง๋ณด์์ฑ ๋ฐ ์ค๊ณ ์ํ์ ๋๋ฌ๋ด๋ ๋ฐ ์ด์ ์ ๋ง์ถ ์ฝ๋ ์ค๋ฉ ํ์ง ๋๊ตฌ์ ๋๋ค. ํ๋ํ ๊ณํ์์ ๋ฆฌํฉํ ๋ง ๋์์ ์๋ณํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋์ง๋ง, ์ ํธ ํด์์ด ์ฃผ๊ด์ ์ด๊ธฐ ๋๋ฌธ์ ์๊ฒฉํ CI(์ง์์ ํตํฉ) ์ํ์๋ ์ ํฉํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. - ๋ฒ๋ค๋ฌ ๊ฐ์ฌ
์๋ ค์ง ๋ณด์ ๊ถ๊ณ ์ฌํญ์ ๊ธฐ์ค์ผ๋ก ์ข ์์ฑ ์ทจ์ฝ์ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค. ํนํ ์ 3์ ๋ ธ์ถ์ ๋ํ ๊ฐ์ฌ๊ฐ ์๊ฒฉํ๊ฒ ์ด๋ฃจ์ด์ง๋ ๊ท์ ํ๊ฒฝ์์ ๊ณต๊ธ๋ง ์ํ์ ๋ค๋ฃธ์ผ๋ก์จ ์ฝ๋ ์์ค ์ค์บ๋๋ฅผ ๋ณด์ํฉ๋๋ค. - ๋ฒ ๋ฅดํธ ๋
ธ๊ฐ ์
๊ตฌ์กฐ์ ์งํ๊ฐ ์๋ ์ฐ์ฐ์ ์ฌ์ฉ๋์ ๊ธฐ์ค์ผ๋ก ์ฝ๋ ๋ณต์ก์ฑ์ ์ธก์ ํฉ๋๋ค. ์ธ์ง์ ์ผ๋ก ๋ณต์กํ Ruby ๋ฉ์๋๋ฅผ ์๋ณํ๋ ๋ฐ ๊ฐํน ์ฌ์ฉ๋์ง๋ง, ๊ฒฐ๊ณผ๋ ๋งฅ๋ฝ์ ํด์์ด ํ์ํฉ๋๋ค. - ๋นผ์๋ค
Ruby ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์ ๊ฑธ์ณ ๊ตฌ์กฐ์ ์ค๋ณต์ ๊ฐ์งํฉ๋๋ค. ์ค๋ณต๋ ๋ก์ง์ผ๋ก ์ธํด ์ ์ง๋ณด์ ๋ฐ ๊ฒฐํจ ๋ฐ์ ์ํ์ด ์ฆ๊ฐํ๋ ํตํฉ ๋๋ ๋ฆฌํฉํ ๋ง ์์ ์ค์ ์ ์ฉํฉ๋๋ค. - Rails ๋ชจ๋ฒ ์ฌ๋ก
Rails ๊ด๋ จ ์ํฐํจํด์ ๋ํ ํด๋ฆฌ์คํฑ ๊ธฐ๋ฐ ๊ฒ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์กด Rails ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ ๊ณตํ ์ ์์ง๋ง, ํ๋ ์์ํฌ์ ์ฐ์๊ณผ ์ฌ์ฉ์ ์ ์ ์ ๋์ ๋ฐ๋ผ ์ ํธ ํ์ง์ด ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. - SonarQube Ruby ๋ถ์๊ธฐ
๋ณด๋ค ๊ด๋ฒ์ํ ๋ค๊ตญ์ด ํ์ง ํ๋ซํผ์ ํตํฉ๋ฉ๋๋ค. ์ค์ ์ง์ค์ ๋ณด๊ณ ๋ฐ ์ธ์ด ๊ฐ ์ผ๊ด์ฑ์ ์ํด ์์ฃผ ์ ํ๋์ง๋ง, Ruby ๊ท์น์ ๊น์ด์ ์คํ ์ ํ๋๋ ์ ์ฉ ๋๊ตฌ์ ๋นํด ๋จ์ด์ง ์ ์์ต๋๋ค.
Ruby ์ ์ ๋ถ์ ๋์ ์ ์ํฅ์ ๋ฏธ์น๋ ๊ธฐ์ ํ๊ฒฝ ์ ์ฝ ์กฐ๊ฑด
์ํฐํ๋ผ์ด์ฆ Ruby ํ๊ฒฝ์์๋ ์๊ท๋ชจ ํ์ด๋ ์ ๊ท ํ๋ก์ ํธ์๋ ์๋นํ ๋ค๋ฅธ ์กฐ๊ฑด ํ์์ ์ ์ ๋ถ์์ ๋์ ํฉ๋๋ค. ์ ์ ๋ถ์ ๋์ ์ ์ข์ฐํ๋ ์ ์ฝ ์กฐ๊ฑด์ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ง์ผ๋ก ์ค๋ช ๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ๋ฐ ๊ท๋ชจ, ์กฐ์ง ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ์์คํ ์ ๋์ ๋ฐฉ์๊ณผ ์ต์ CI(์ง์์ ํตํฉ) ์๊ตฌ ์ฌํญ ๊ฐ์ ์ํธ ์์ฉ์์ ๋น๋กฏ๋ฉ๋๋ค. Ruby์ ์ ์ฐ์ฑ์ ์ด๋ฌํ ์๋ ฅ์ ๋์ฑ ์ฆํญ์ํค๋๋ฐ, ์ ์ ๋ถ์ ๋๊ตฌ๋ ์๊ฒฉํ ๊ฐ๋ฐ ์ผ์ ๊ณผ ํจ๊ป ๊ด๋ก, ๋ฐํ์ ๊ตฌ์ฑ, ๋ฉํํ๋ก๊ทธ๋๋ฐ์ด ๊ณต์กดํ๋ ์ํ๊ณ์์ ์๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ์ ์ ๋ถ์ ๋๊ตฌ ๋์ ์ ์ ์ฝ ์กฐ๊ฑด ๊ด๋ฆฌ ์์ ์ด ๋ฉ๋๋ค. ๋๊ตฌ๋ ์ฒ๋ฆฌ๋์ ์ ํดํ์ง ์์ผ๋ฉด์ ๊ธฐ์กด CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋์ด์ผ ํ๊ณ , ๊ฑฐ๋ฒ๋์ค ๋ฐ ๊ฐ์ฌ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํด์ผ ํ๋ฉฐ, ๋ชจ๋๋ฆฌ์ ์์คํ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ ์์คํ , ๊ณต์ gem, API ์๋น์ค ๋ฑ์ ํฌํจํ๋ ์ด๊ธฐ์ข Ruby ํ๊ฒฝ์์ ์์ ์ ์ผ๋ก ์๋ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด ๋๋ฌธ์ ๊ธฐ์ ๋ค์ ๋จ์ผ ์๋ฃจ์ ๋ณด๋ค๋ ์ฌ๋ฌ ๋๊ตฌ๋ก ๊ตฌ์ฑ๋ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋์ ํ๋ ๊ฒฝํฅ์ด ์์ผ๋ฉฐ, ๋์ ์ ๋ต ๋ํ ์ด๊ธฐ ๋ฐฐํฌ ์์ ์ ๊ณ ์ ๋์ง ์๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์งํํฉ๋๋ค.
CI ์ฒ๋ฆฌ๋ ์๋ ฅ ๋ฐ ๊ฒฐ์ ๋ก ์ ๊ฒ์ดํธํคํ ์๊ตฌ ์ฌํญ
Ruby ์ ์ ๋ถ์ ๋๊ตฌ ๋์ ์ ์ํฅ์ ๋ฏธ์น๋ ์ฃผ์ ์ ์ฝ ์กฐ๊ฑด ์ค ํ๋๋ CI ์ฒ๋ฆฌ๋์ ๋ํ ๋ฏผ๊ฐ๋์ ๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์ CI ํ์ดํ๋ผ์ธ์ ์ฌ๋ฌ ํ์ ๊ฑธ์ณ ๋งค์ผ ์๋ฐฑ ๋๋ ์์ฒ ๊ฑด์ ๋ณํฉ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค. ์์ธกํ ์ ์๋ ์ง์ฐ ์๊ฐ์ด๋ ๋น๊ฒฐ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๋น ๋ฅด๊ฒ ๋ณ๋ชฉ ํ์์ ์ผ์ผํต๋๋ค. ์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด์ ๋๊ตฌ ์ ํ๋ฟ๋ง ์๋๋ผ ํ์ดํ๋ผ์ธ ๋ด์์ ๋๊ตฌ๊ฐ ์คํ๋๋ ๋ฐฉ์๊ณผ ์์น์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
Ruby ๋ฆฐํฐ์ ํฌ๋งทํฐ๋ ์คํ ์์ธก ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ํํ ๋จผ์ ๋์ ๋ฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๋ถ์ ๋ฒ์๊ฐ ์ ํ์ ์ด๊ณ , ์คํ ์๊ฐ์ ํ์ผ ์์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ฉฐ, ์ค๋ฅ ๋ฐ์ ์์๋ ์์ธก ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์๊ฒฉํ ๋ณํฉ ์ ๊ฒ์ฌ์ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์ ๋ค์ ๋์ผํ ๋จ๊ณ์ ๋ ์ฌ์ธต์ ์ธ ๋ถ์ ๋๊ตฌ๋ฅผ ์ถ๊ฐํ๋ฉด ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ์ข ์ข ๋ฐ๊ฒฌํฉ๋๋ค. ๋ณด์ ์ค์บ๋์ ์๋งจํฑ ๋ถ์๊ธฐ๋ ์ฝ๋ ๊ตฌ์กฐ, ์์กด์ฑ ํด๊ฒฐ ๋ฐฉ์, ๊ท์น ๋ณต์ก์ฑ ๋ฑ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ๋ณ๋๋ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ฒ์ฌ ๋๊ธฐ์ด ์ฆ๊ฐ์ ๊ฐ๋ฐ์์ ๊ฒ์ฌ ์ฐํ ํ์๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์ ์ฝ ์กฐ๊ฑด์ ์๋๋ฟ๋ง ์๋๋ผ ์์ธก ๊ฐ๋ฅ์ฑ์๋ ์์ต๋๋ค. CI ๋ด๋น์๋ ์ ์ฅ์ ๊ท๋ชจ์ ๊ด๊ณ์์ด ํน์ ๋ถ์๊ธฐ๊ฐ ์ ํด์ง ์๊ฐ ๋ด์ ์๋ฃ๋ ๊ฒ์ด๋ผ๋ ํ์ ์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ํ์ ์ด ์ฝํด์ง๋ฉด ๊ฐ์ ๋ ฅ๋ ์ฝํด์ง๋๋ค. ์ด๋ฌํ ํจํด์ ๋ธ๋์นญ ์ ๋ต์ ์ฅ๋จ์ ์์ ๋ ผ์๋ ๋ฐ์ ๊ฐ์ด, ๋น๋ฒํ ํตํฉ์ด ๋น ๋ฅธ ํผ๋๋ฐฑ ๋ฃจํ์ ์๊ฒฉํ ๊ฒ์ดํ ์ ์์กดํ๋ ํธ๋ ํฌ ๊ธฐ๋ฐ ๊ฐ๋ฐ๊ณผ ๊ฐ์ ๊ด๋ฒ์ํ ๋ฐฐํฌ ๋ชจ๋ธ ์ ํ๊ณผ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ธฐ์ ๋ค์ ๋ฃจ๋น ์ ์ ๋ถ์์ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๋๋๋ ์ถ์ธ์ ๋๋ค. ๋น ๋ฅด๊ณ ๊ฒฐ์ ์ ์ธ ๋๊ตฌ๋ ํ์์ ์ธ ๊ด๋ฌธ ์ญํ ์ ํ๋ฉฐ, ์ฌ์ธต์ ์ธ ๋ถ์์ ๋น๋๊ธฐ์ ์ผ๋ก ๋๋ ๋ฆด๋ฆฌ์ค ๋ธ๋์น์์ ์คํ๋ฉ๋๋ค. ์ด๋ฌํ ๊ณ์ธตํ๋ ํน์ ๋๊ตฌ์ ๋ํ ์ ํธ๋๊ฐ ์๋๋ผ, ๋๊ท๋ชจ ํ๊ฒฝ์์ ๋ฌด์ํ ์ ์๋ CI ์ฒ๋ฆฌ๋ ์ ์ฝ์ ๋ํ ๊ตฌ์กฐ์ ์ธ ๋์์ ๋๋ค.
๋ ๊ฑฐ์ ๋ฃจ๋น ์์ฐ๊ณผ ๋ถ๊ท ํ ๋ถ์ ๋ฒ์
๋ ๋ค๋ฅธ ์ค์ํ ์ ์ฝ ์กฐ๊ฑด์ ์ต์ ์ ์ ๋ถ์ ๊ธฐ๋ฒ์ด ๋์ ๋๊ธฐ ์ด์ ์ ์์ฑ๋ ์ค๋๋ Ruby ์ฝ๋๋ฒ ์ด์ค๊ฐ ์กด์ฌํ๋ค๋ ์ ์ ๋๋ค. ๋ง์ ๊ธฐ์ ์ฉ Ruby ์์คํ ์ 10๋ ์ด์์ ๊ฑธ์ณ ์ ๊ธฐ์ ์ผ๋ก ๋ฐ์ ํด ์ค๋ฉด์ ์๋ฌต์ ์ธ ๊ณ์ฝ, ์ค๋ณต๋ ๋ก์ง, ๊ทธ๋ฆฌ๊ณ ์ ๋๋ก ๋ฌธ์ํ๋์ง ์์ ํ๋ ์์ํฌ๋ณ ๋์๋ค์ด ์ถ์ ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ํ๊ฒฝ์ ์ ์ ๋ถ์์ ๋์ ํ๋ฉด ๋ชจ๋ ๊ฐ์ ๋ถ์ ๋ฒ์๊ฐ ๊ณ ๋ฅด์ง ์๊ณ , ๋ถ์ ๊ฒฐ๊ณผ์ ํ์ง์ ์๋นํ ์ฐจ์ด๊ฐ ๋๋ฌ๋ฉ๋๋ค.
๊ธฐ์กด ์์คํ ์ด ๋ง์ด ๋จ์ ์๋ ์์ญ์์๋ ํนํ ์ ์ง๋ณด์์ฑ ๋ฐ ๋ณต์ก์ฑ ๊ด๋ จ ๋๊ตฌ์์ ๋ ๋ง์ ๋ฌธ์ ์ ์ด ๋ฐ๊ฒฌ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ ์คํ ๋ฒ์ ์ค์ ์ด ์์ผ๋ฉด ์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ด ํ์ ๊ณผ๋ถํ๋ฅผ ์ด๋ํ๊ณ ๊ฒฐ๊ตญ ๋ชจ๋ ๋ฌธ์ ์ ์ ์ผ๊ด์ ์ผ๋ก ๋ฌต์ดํ๊ฒ ๋ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋ฌธ์ ํด๊ฒฐ ์ญ๋์ ๋๋ค. ๊ธฐ์ ์ ์๋ก์ด ๊ท์น์ ์ํํ๊ธฐ ์ ์ ๊ณผ๊ฑฐ์ ๋ชจ๋ ๋ฌธ์ ์ ์ ํด๊ฒฐํ ๋งํผ ์ถฉ๋ถํ ์ธ๋ ฅ์ด๋ ์ํ ๊ฐ์ ๋ฅ๋ ฅ์ ๊ฐ์ถ๊ณ ์์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ๋์ ์ ๋ต์ ๊ณผ๊ฑฐ์ ๋ฌธ์ ์ ํด๊ฒฐ๊ณผ ๋ฏธ๋๋ฅผ ๋ด๋ค๋ณด๋ ํต์ ์ฌ์ด์ ๊ท ํ์ ์ ์งํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์ญํ ๊ด๊ณ๋ ๋ณด์ ์ค์บ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. Rails ์ ์ฉ ๋๊ตฌ๋ ๊ธฐ์กด ์ปจํธ๋กค๋ฌ์์๋ ๋์ ์ ๋ขฐ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ ์ ์์ง๋ง, ์ฌ์ฉ์ ์ ์ ๋ฏธ๋ค์จ์ด, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋๋ ๋์ ์ผ๋ก ์์ฑ๋๋ ์ฝ๋ ๊ฒฝ๋ก์ ์ง์ค๋ ์ํ์ ๋์น ์ ์์ต๋๋ค. ๊ธฐ์ ์ ์ค์บ ๋ฒ์๊ฐ ๋ถ์์ ํ ์ ์์์ ์ธ์ ํ๊ณ ๊ทธ์ ๋ง์ถฐ ์ ์ฑ ์ ์ค๊ณํด์ผ ํฉ๋๋ค. ๋ถ๋ถ์ ์ธ ์ค์บ ๋ฒ์๋ฅผ ์๋ฒฝํ ๋ฒ์๋ก ๊ฐ์ฃผํ๋ ค๋ ์๋๋ ์๋ชป๋ ํ์ ์ ์ฌ์ด์ฃผ๊ณ ์ํ ๋ณด๊ณ ์ ์ค๋ฅ๋ฅผ ์ด๋ํฉ๋๋ค.
๋ถ์ ๋ฒ์์ ๋ถ๊ท ํ์ ์ํคํ ์ฒ์ ๋งฅ๋ฝ์ ํ์์ฑ์ ๊ฐ์กฐํฉ๋๋ค. ๋ ผ๋ฆฌ ์ง์ค๋์ ์์กด์ฑ ๋ฐ๋๊ฐ ์ด๋์ ์๋์ง ํ์ ํ์ง ๋ชปํ๋ฉด ๊ธฐ์ ์ ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ฅ ์ค์ํ์ง ํ๋จํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ์ด๋ฌํ ์ด๋ ค์์ ๋๊ท๋ชจ ์์กด์ฑ ๋งคํ์์ ๊ด์ฐฐ๋๋ ๋ฌธ์ ์ ์ ์ฌํ๋ฐ, ๊ฐ์์ฑ ๋ถ์กฑ์ผ๋ก ์ธํด ์ค์ ์ํ ์ง์ค๋๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต๋ค๋ ์ ์ด๋ฉฐ, ์ด๋ ์์กด์ฑ ๊ทธ๋ํ ๋ถ์ ์์ ๋ค๋ฃจ๋ ์ฃผ์ ์ ๋๋ค.
์ง๋ฐฐ๊ตฌ์กฐ, ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ ๋ฐ ๊ท์ ์ค์์ ์กฐํ
๊ธฐ์ ์์ ๋ฃจ๋น ์ ์ ๋ถ์์ ๋์ ํ๋ ๋ฐ์๋ ์์ง๋์ด๋ง ํ์ ๋์ด์ ๊ฑฐ๋ฒ๋์ค ๋ฐ ๊ฐ์ฌ ์๊ตฌ ์ฌํญ ๋ํ ์ ์ฝ ์์ธ์ ๋๋ค. ๊ท์ ์ค์, ์ํ ๊ด๋ฆฌ ๋ฐ ๋ด๋ถ ๊ฐ์ฌ ๋ด๋น์๋ค์ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ, ๋ถ์ ๊ฒฐ๊ณผ ๋ฐ ๋ฆด๋ฆฌ์ค ๊ฒฐ์ ๊ฐ์ ์ถ์ ์ฑ์ ์ ์ ๋ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค. ์ฌํ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ ๊ฐ์ฌ ๊ฐ๋ฅํ ์ฐ์ถ๋ฌผ์ ์์ฑํ ์ ์๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๊ฐ๋ฐํ ์ธ๋ถ์์ ์ ๋ขฐ๋ฅผ ์ป๊ธฐ ์ด๋ ต์ต๋๋ค.
์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด์ ๋๊ตฌ ์ ํ ๋ฐ ํตํฉ ํจํด์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ธฐ๊ณ ํ๋ ๊ฐ๋ฅํ ๋ณด๊ณ ์, ์์ ์ ์ธ ์ข ๋ฃ ์ฝ๋, ์ผ๊ด๋ ์ฌ๊ฐ๋ ๋ชจ๋ธ์ ์์ฑํ๋ ๋๊ตฌ๋ ๊ฑฐ๋ฒ๋์ค ์ํฌํ๋ก์ ํตํฉํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ๋ฐ๋๋ก, ๋ถํฌ๋ช ํ ์ ์ ์ฒด๊ณ, ์ฆ์ ๊ท์น ๋ณ๊ฒฝ ๋๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๋์์ ๋ณด์ด๋ ๋๊ตฌ๋ ๊ฐ์ฌ ์ค๋ช ์ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. ๊ท์ ์ฐ์ ์์๋ ์ด๋ฌํ ์ด์ ๋ก ๊ธฐ์ ์ ์ฅ์ ๊ณผ ๊ด๊ณ์์ด ๋๊ตฌ ๋์ ์ด ์ด๋ ค์์ง ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๊ฑฐ๋ฒ๋์ค ์๋ ฅ์ ๊ท์น ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ์์ ๋ฐ์ํฉ๋๋ค. ๊ธฐ์ ์ ๊ท์น ๋์ ์์ , ๋ฐ๊ฒฌ ์ฌํญ ๋ถ๋ฅ ๋ฐฉ๋ฒ, ์์ธ ํ์ฉ ๋ฐฉ๋ฒ ๋ฑ์ ํต์ ํ๊ณ ์์์ ์ ์ฆํด์ผ ํฉ๋๋ค. ๋ฃจ๋น ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ผ๋ง๋ ์ ์ถฉ์กฑํ๋์ง์ ์์ด ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ ๋๋ค. ํจํด ๊ธฐ๋ฐ ๋๊ตฌ๋ ๊ท์น ๊ด๋ฆฌ ์ฑ ์์ ์๊ตฌํ๊ณ , ํ์ ์์คํ ์ ์๊ทธ๋์ฒ ์ํฐํฉํธ ์์ ๊ถ์ ์๊ตฌํ๋ฉฐ, ๋ฆฐํฐ๋ ๊ตฌ์ฑ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์๊ตฌํฉ๋๋ค. ๊ฐ ๋๊ตฌ๋ ์กฐ์ง์ ์ฑ์๋์ ๋ง์ถฐ ์กฐ์ ํด์ผ ํ๋ ์๋ก ๋ค๋ฅธ ๊ฑฐ๋ฒ๋์ค ๋ถ๋ด์ ์ ์ํฉ๋๋ค.
์ด๋ฌํ ์๋ ฅ ๋๋ฌธ์ ๊ธฐ์ ๋ค์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฐ์ ์ ์ฉ ์ ํธ๋ก ์ทจ๊ธํ๊ธฐ๋ณด๋ค๋ ๋ณด๋ค ๊ด๋ฒ์ํ ์ํ ๊ด๋ฆฌ ํ๋ก์ธ์ค์ ํตํฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ชฉํ๋ ์๋ฒฝํ ํ์ง๊ฐ ์๋๋ผ ๋ฐฉ์ด ๊ฐ๋ฅํ ํต์ ์ด๋ฉฐ, ๋ถ์์ ๊ด๋ฆฌ๋์ง ์๋ ๋ ธ์ด์ฆ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์์ฌ ๊ฒฐ์ ์ ์ง์ํ๋ ์ญํ ์ ํฉ๋๋ค.
CI ํ์ดํ๋ผ์ธ์์ Ruby ์ ์ ๋ถ์์ ์ ๋ต์ ๋ชฉํ
๊ธฐ์ CI ํ์ดํ๋ผ์ธ์์ Ruby ์ ์ ๋ถ์์ ์ถ์์ ์ธ ์ฝ๋ ํ์ง ๊ฐ๋ ๋ณด๋ค๋ ๋ช ํํ ์ ๋ต์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ๋์ ๋ฉ๋๋ค. ๋๊ท๋ชจ CI ํ๊ฒฝ์์๋ ๊ณต์ ํ๊ฒฝ์ ํตํด ์ด๋ค ๋ณ๊ฒฝ ์ฌํญ์ด ํ์ฐ๋ ์ ์๋์ง๋ฅผ ์ ์ดํ๋ โโ๋ฉ์ปค๋์ฆ์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. ์ ์ ๋ถ์์ ๋ฐํ์ ์ ํธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๋ฐฐํฌ ์ํ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ๋ช ์ ๋๋ ์๋ํ๋ ๋๊ตฌ ์ค ํ๋์ ๋๋ค. ๋ฐ๋ผ์ ์ ์ ๋ถ์ ๋์ ์ ์ด๋๋ ๋ชฉํ๋ ์ํ ๊ด๋ฆฌ, ๋ณ๊ฒฝ ์ฌํญ ์์ธก ๊ฐ๋ฅ์ฑ, ์ด์ ์์ ์ฑ๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์์ต๋๋ค.
์ด๋ฌํ ๋ชฉํ๋ Ruby ์คํ์ ํ์ค์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๋์ ๋์คํจ์น, ๊ด๋ก ๊ธฐ๋ฐ ํ๋ ์์ํฌ, ๋ฐํ์ ๊ตฌ์ฑ์ ์์ ์๋ฐฉ์ ์ ์ด์ ํจ๊ณผ๋ฅผ ๊ฐ์์ํต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก Ruby ์ค์ฌ ํ์ดํ๋ผ์ธ์์์ ์ ์ ๋ถ์์ ์ ๋์ ์ธ ์ ํ์ฑ ๋ณด์ฅ๋ณด๋ค๋ ์ฐจ๋ณํ๋ ์ ์ฉ, ์กฐ๊ธฐ ์ํ ์ ํธ ์ ๊ณต, ์์ฌ ๊ฒฐ์ ์ง์์ ์ง์ํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ์ฑ๊ณต์ ์ธ ํ๋ก๊ทธ๋จ๋ค์ ์ด๋ฌํ ๋ชฉํ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๋๊ตฌ์ ์ ์ฉ ์ง์ ์ ์ ํํฉ๋๋ค.
์ฒ๋ฆฌ๋์ ์ ํ์ํค์ง ์๊ณ ์์ธก ๊ฐ๋ฅํ ๋ณํฉ ๋์์ ๊ตฌํํฉ๋๋ค.
CI ํ๊ฒฝ์์ Ruby ์ ์ ๋ถ์์ ์ฃผ์ ๋ชฉํ ์ค ํ๋๋ ํ์ดํ๋ผ์ธ ์ฒ๋ฆฌ๋์ ์ ์งํ๋ฉด์ ์์ธก ๊ฐ๋ฅํ ๋ณํฉ ๋์์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค. ๊ธฐ์ ์ ์ฌ๋ฌ ํ์์ ๋ฐ์ํ๋ ์์ถฉ๋๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ ์กฐ์ ํ๊ธฐ ์ํด CI์ ์์กดํฉ๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ํ์ง์ด ๋ฎ๊ฑฐ๋ ์ํ๋๊ฐ ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ณต์ ๋ธ๋์น์ ํฌํจ๋ ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ธฐ ์ํด ๋์ ๋์์ง๋ง, ํตํฉ ์ฃผ๊ธฐ๋ฅผ ์ ํดํ๋ ์ง์ฐ์ ์ ๋ฐํด์๋ ์ ๋ฉ๋๋ค.
์ด๋ฌํ ๋ชฉํ๋ ๋น ๋ฅด๊ณ ์์ธก ๊ฐ๋ฅํ ๋ถ์ ๋๊ตฌ๋ฅผ ํ์์ ์ธ ๋ณํฉ ์ ๋จ๊ณ๋ก ๋์ ํ๋ ์๋๋ ฅ์ด ๋ฉ๋๋ค. ๋ฆฐํฐ์ ํฌ๋งทํฐ๋ ์คํ ํน์ฑ์ด ์์ ์ ์ด๊ณ ์ค๋ฅ ๋ฐ์ ์์ธ์ ์ฝ๊ฒ ํ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๋จ๊ณ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ ๋ต์ ๊ฐ์น๋ ๋ถ์์ ๊น์ด๊ฐ ์๋๋ผ ์ผ๊ด๋ ์ ์ฉ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋๊ตฌ์ ๋์ ๋ฐฉ์์ ์์ธกํ ์ ์๋ค๋ฉด ๊ท์ ์ค์์จ์ด ๋์์ง๊ณ ์ฐํ ํ์๊ฐ ์ค์ด๋ญ๋๋ค.
๊ทธ๋ฌ๋ ์์ธก ๊ฐ๋ฅ์ฑ์ ํ๋ณดํ๋ ค๋ฉด ์ ์คํ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ์ ์ ๊ธฐ์ ์ ์ผ๋ก๋ ์ฌ์ธต ๋ถ์์ด ๊ฐ๋ฅํ์ง๋ง ์ด์์ ๋น๋ฒํ๊ฒ ์คํํ๊ธฐ์๋ ๋ถ์ ํฉํ ๋๊ตฌ์ ์ง๋ฉดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋น ๋ฅธ ๊ฒ์ดํธ์ ๋์์ ์ฌ์ธต์ ์ธ ๋ณด์ ๋๋ ์๋ฏธ๋ก ์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ค๊ณ ํ๋ฉด ๋๊ธฐ์ด์ด ํผ์กํด์ง๊ณ ํน์ ๊ธฐ๋ฅ๋ง ์ ํ์ ์ผ๋ก ๋นํ์ฑํ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ต์ ๋ชฉํ๋ ์ต๋ํ์ ํ์ง๊ฐ ์๋๋ผ ์๊ฐ์ ์๋ฐ ์์์ ๋ณํ๋ฅผ ์์ ์ ์ผ๋ก ํ๋จํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋ชฉํ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํด์ํ๋ ๋ฐฉ์์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋ณํฉ ๊ฒ์ดํ ์ ์ฌ์ฉ๋๋ ์ ์ ๋ถ์์ ์คํ ๊ฐ๋ฅํ๊ณ ๋ช ํํ ์ ํธ๋ฅผ ๋์ถํด์ผ ํฉ๋๋ค. ์ํคํ ์ฒ ํด์์ด๋ ๊ด๋ฒ์ํ ๋งฅ๋ฝ ์ค๋ช ์ด ํ์ํ ๋ถ์ ๊ฒฐ๊ณผ๋ ํ์ ๋จ๊ณ๋ก ๋ฏธ๋ฃจ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ชจ๋ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ผํ๊ฒ ์ทจ๊ธํ๋ฉด CI์ ๊ฒ์ดํธํคํ ์ญํ ์ ์ฝํ์ํค๊ณ ์ํ์ ์ ๊ฑฐํ๋ ๋์ ํ๋ฅ๋ก ์ ๊ฐํ๊ฒ ๋ฉ๋๋ค.
ํฉ๋ณ ํ ๋ฐ ์ถ์ ํ ์์ ๋น์ฉ ์ ๊ฐ
๋ ๋ค๋ฅธ ํต์ฌ ๋ชฉํ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ณํฉ๋๊ฑฐ๋ ๋ฆด๋ฆฌ์ค๋ ํ ๋ฐ์ํ๋ ๋ฌธ์ ํด๊ฒฐ ๋น์ฉ์ ์ค์ด๋ ๊ฒ์ ๋๋ค. ์ํฐํ๋ผ์ด์ฆ Ruby ์์คํ ์์๋ ๋ง์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๊ธฐ๋ณธ ๊ฒํ ๋ ํต๊ณผํ์ง๋ง ๊ธฐ์กด ์ฝ๋ ๊ฒฝ๋ก, ์ข ์์ฑ ๋๋ ๋ฐํ์ ๋์๊ณผ ์ ๋๋ก ์ํธ ์์ฉํ์ง ์๋ ๋ณ๊ฒฝ ์ฌํญ์์ ๋น๋กฏ๋ฉ๋๋ค. ์ ์ ๋ถ์์ ํตํด ํตํฉ ํ ์คํธ ๋๋ ์ด์ ์ค์๋ง ๋๋ฌ๋ ์ ์๋ ๋ฌธ์ ์ ํ์ ์ฐพ์๋ผ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
์ด๋ฌํ ๋ชฉํ๋ ๋ณํฉ ์ ๊ฒ์ดํ ์ ์ ํฉํ์ง ์๋๋ผ๋ ์ฌ์ธต ๋ถ์ ๋๊ตฌ๋ฅผ CI์ ํฌํจ์ํค๋ ๊ฒ์ ์ ๋นํํฉ๋๋ค. ๋ณด์ ์ค์บ๋, ์๋งจํฑ ๋ถ์๊ธฐ, ํ์ ๊ฒ์ฌ๊ธฐ ๋ฑ์ ์ฒ๋ฆฌ๋ ๋ถ๋ด์ด ์ ๊ณ ๋ฐ๊ฒฌ๋ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๋ฐฐํฌ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ ํตํฉ ๋ธ๋์น๋ ๋ฆด๋ฆฌ์ค ํ๋ณด์์ ์คํ๋๋๋ก ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ๋ต์ ๊ฐ์น๋ ์กฐ๊ธฐ ์ฐจ๋จ๋ณด๋ค๋ ์กฐ๊ธฐ ๊ฐ์์ฑ ํ๋ณด์ ์์ต๋๋ค.
๋ณต๊ตฌ ๋น์ฉ ์ ๊ฐ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋งฅ๋ฝ์ ๋ง์ถฐ ํด์ํ๋ ๋ฐฉ์์๋ ๋ฌ๋ ค ์์ต๋๋ค. ๊ธฐ์ ์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ํฅ์ ๋ฐ๋ ๊ตฌ์ฑ ์์, ์์ ๊ถ ๊ฒฝ๊ณ ๋ฐ ๋ณ๊ฒฝ ๋ฒ์์ ์ฐ๊ฒฐํ ๋ ์ด์ ์ ์ป์ต๋๋ค. ์ด๋ฌํ ๋งฅ๋ฝ์ด ์์ผ๋ฉด ๋ถ์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ณ์ ์ธ ๊ฒฝ๊ณ ๋ก๋ง ๋ํ๋ ์๋ ์กฐ์ฌ๊ฐ ํ์ํ๊ฒ ๋๋ฏ๋ก ์กฐ๊ธฐ ๋ฐ๊ฒฌ์ ๋น์ฉ ์ด์ ์ด ์ฝํ๋ฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ ์ํฅ ๋ถ์ ๊ธฐ๋ฒ ์ ๋ฐ์ ๊ฑธ์น ๋ ธ๋ ฅ๊ณผ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ผ๋ฉฐ , ํ์ ์์คํ ์ ๋ฏธ์น๋ ์ํฅ์ ์ดํดํ๋ ๊ฒ์ด ์กฐ๊ธฐ ์ ํธ๊ฐ ์คํ ๊ฐ๋ฅํ ์์ฌ ๊ฒฐ์ ์ผ๋ก ์ด์ด์ง๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ชฉํ๋ ๋ ๊ฐ์ง์ ๋๋ค. ์คํ ์๊ฐ ์ด์ ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๊ณ , ์กฐ์ฌ ๋ ธ๋ ฅ์ ์ค์ด๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ธฐ์ค๋ง ์ถฉ์กฑํ๋ ๋๊ตฌ๋ ๊ธฐ๋ํ๋ ๊ฒฝ์ ์ ์ด์ ์ ์ ๊ณตํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํ๋ํ ๋ฐ ํต์ ๋ ๋ฆฌํฉํ ๋ง ์ด๋์ ํฐ๋ธ ์ง์
Ruby CI ํ์ดํ๋ผ์ธ์์ ์ ์ ๋ถ์์ ์ฅ๊ธฐ์ ์ธ ํ๋ํ ๋ฐ ๋ฆฌํฉํ ๋ง ํ๋ก์ ํธ๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋์ ๋์์ต๋๋ค. ๊ธฐ์ ๋ค์ Ruby ์์คํ ์ ์ ๋ฉด์ ์ผ๋ก ์ฌ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ํ๋ํํ๋ ๊ฒฝ์ฐ๋ ๋๋ญ ๋๋ค. ๋์ , ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ์ ์งํ๋ฉด์ ์ ์ง์ ์ผ๋ก ๋ฆฌํฉํ ๋งํ๊ณ , ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ๊ณ , ๊ตฌ์ฑ ์์๋ฅผ ๊ต์ฒดํฉ๋๋ค. ์ ์ ๋ถ์์ ์ด๋ฌํ ์ ํ ๊ณผ์ ์์ ์๋์น ์์ ํ๊ท๋ฅผ ๋ฐฉ์งํ๋ ์์ ์ฅ์น ์ญํ ์ ํฉ๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ ๋ชฉํ๋ ์คํ์ผ์ ์์์ฑ์ ๊ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ์ ์ดํ๋ โโ๊ฒ์ ๋๋ค. ํ์ ๊ฒ์ฌ, ์์กด์ฑ ๋ถ์ ๋ฐ ์ ์ง๋ณด์์ฑ ์ ํธ๋ ํ์ด ๋ฆฌํฉํ ๋ง ์ํ์ด ์ง์ค๋ ๋ถ๋ถ๊ณผ ์ถ๊ฐ ๊ฒ์ฆ์ด ํ์ํ ๋ถ๋ถ์ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. CI ํ์ดํ๋ผ์ธ์ ์ํคํ ์ฒ ๋ณ๋ ๊ธฐ๊ฐ ๋์ ๊ท์จ์ ์ ์งํ๋ ์ฒดํฌํฌ์ธํธ ์ญํ ์ ํฉ๋๋ค.
์ด๋ฌํ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ค๋ฉด ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ๊ธฐ์กด ์ฝ๋์ ์๋ก์ด ์ฝ๋ ๋ชจ๋์์ ์ผ๊ด๋๊ฒ ์๋ํด์ผ ํฉ๋๋ค. ๋๊ตฌ๊ฐ ์ต๊ทผ ๋ฆฌํฉํ ๋ง๋ ๋ชจ๋์์๋ง ์ ๋๋ก ์๋ํ๋ค๋ฉด, ์ํ์ด ๊ฐ์ฅ ๋์ ๋ ๊ฑฐ์ ์์ญ์์ ์ฌ๊ฐ์ง๋๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ์ ๋ค์ ํต์ฌ ์์ญ์๋ง ์ ์ฉํ๊ฑฐ๋ ์ ์ฒด ๋์ ์์ด ์ ์ง์ ์ผ๋ก ์ ์ฉํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ ํธํฉ๋๋ค.
ํ๋ํ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ํด์ ๊ฑธ์ณ ์งํ๋ ์๋ก ์ด ๋ชฉํ์ ์ ๋ต์ ์ค์์ฑ์ ๋์ฑ ์ปค์ง๋๋ค. ์ ์ ๋ถ์์ ๊ธฐ๊ด์ ๊ธฐ์ต์ ์ผ๋ถ๊ฐ ๋์ด, ํ ๊ต์ฒด๋ก ์ธํด ์์ค๋ ์ ์๋ ์ธํฐํ์ด์ค, ์ข ์์ฑ ๋ฐ ์ ์ฝ ์กฐ๊ฑด์ ๋ํ ์ง์์ ๋ณด์กดํฉ๋๋ค. ์ด๋ ๋ ๊ฑฐ์ ์์คํ ํ๋ํ ์ ๊ทผ ๋ฐฉ์๊ณผ ๊ด๋ จ๋ ๋ ๊ด๋ฒ์ํ ๊ณ ๋ ค ์ฌํญ๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋์ด ์์ผ๋ฉฐ , ๊ธฐ์ ์ ๋ฐ์ ๋งํผ์ด๋ ๋์์ ์ฐ์์ฑ์ด ์ค์ํฉ๋๋ค.
์ง๋ฐฐ๊ตฌ์กฐ ๋ฐ ์ํ ๊ด๋ จ ์ดํด๊ด๊ณ์์๊ฒ ์ ๋ขฐํ ์ ์๋ ์ฆ๊ฑฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ต์ข ์ ์ธ ์ ๋ต์ ๋ชฉํ๋ ์์ง๋์ด๋ง ๋ถ์ ์ธ๋ถ์ ์ดํด๊ด๊ณ์๋ค์๊ฒ ์ํ ๊ด๋ฆฌ์ ํ๋นํ ๊ทผ๊ฑฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๋ง์ ๊ธฐ์ ์์ ์ง์์ ๊ฐ์ (CI) ํ์ดํ๋ผ์ธ์ ์ํ ๊ด๋ฆฌ, ๊ท์ ์ค์ ๋ฐ ๊ฐ์ฌ ๋ถ์์ ์ฒ ์ ํ ๊ฒํ ๋ฅผ ๋ฐ๋๋ฐ, ์ด๋ฌํ ๋ถ์์์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ผ๊ด๋๊ฒ ํ๊ฐ๋๊ณ ์๋ ค์ง ์ํ์ด ์๋์ ์ผ๋ก ๊ด๋ฆฌ๋๊ณ ์๋ค๋ ํ์ ์ ์๊ตฌํฉ๋๋ค. ์ ์ ๋ถ์์ ๋ฌด์์ ์ธ์ , ์ด๋ค ๊ฒฐ๊ณผ๋ก ์ ๊ฒํ๋์ง๋ฅผ ๋ฌธ์ํํ๋ ์ฐ์ถ๋ฌผ์ ์์ฑํจ์ผ๋ก์จ ์ด๋ฌํ ๋ชฉํ ๋ฌ์ฑ์ ๊ธฐ์ฌํฉ๋๋ค.
์ด๋ฌํ ๋ชฉํ๋ ๋๊ตฌ ์ ํ์ ๋ฏธ๋ฌํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฌํ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ, ์์ ์ ์ธ ์ฌ๊ฐ๋ ๋ถ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๊ณ ํ๋ ๊ฐ๋ฅํ ์ถ๋ ฅ์ ์์ฑํ๋ ๋๊ตฌ๋ ๊ฑฐ๋ฒ๋์ค ์ํฌํ๋ก์ ํตํฉํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ๊ฐ๋ฐ์์ ํด์์ ํฌ๊ฒ ์์กดํ๊ฑฐ๋ ๊ฒฐ๊ณผ์ ๋ณ๋์ฑ์ด ํฐ ๋๊ตฌ๋ ๊ฐ์ฌ ๋ณด๊ณ ์๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ๊ธฐ์ ์ ์ผ๋ก๋ ์ฐ์ํ ์ผ๋ถ ๋๊ตฌ๋ ์ฆ๊ฑฐ ์๊ฑด์ ๋ถํฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์์์ ๋ฐ๋ ค๋ฉ๋๋ค.
์ ์ ๋ถ์์ ์ฐจ๋ณํ๋ ํต์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ง์ํฉ๋๋ค. ๊ธฐ์ ์ ์ํ๋๊ฐ ๋์ ์์์๋ ๋์ฑ ์๊ฒฉํ ๊ฒ์ฌ๋ฅผ ์ ์ฉํ๊ณ , ์ํ๋๊ฐ ๋ฎ์ ์์ญ์๋ ์ํ๋ ํต์ ๋ฅผ ์ ์ฉํจ์ผ๋ก์จ ์ด๋ฅผ ์ ์ฆํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋น๋ก์ฑ์ ๊ฐ๋ ๊ธฐ๋์น๋ฅผ ์ถฉ์กฑํ๋ฉด์๋ ์ ๋ฌด ์๋๋ฅผ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ์ ๋ต์ ๋ชฉํ๋ ๋ชจ๋ ๊ฒฐํจ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์๋๋ผ ์ํ์ ์ดํดํ๊ณ ๋ชจ๋ํฐ๋งํ๋ฉฐ ๊ด๋ฆฌํ๊ณ ์์์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค. Ruby CI ํ์ดํ๋ผ์ธ์ ์ ์ ๋ถ์์ ์๋์ ์ ์ด ์ฌ์ด์ ๊ท ํ์ ๋ฌ์ฑํ ์ ์๋ ๋ช ์ ๋๋ ํ์ฅ ๊ฐ๋ฅํ ๋ฉ์ปค๋์ฆ ์ค ํ๋์ ๋๋ค.
ํน์ ๋ฃจ๋น ๋ถ์ ๋๊ตฌ๋ฅผ ์ํ ๋ชฉํ ์๋๋ฆฌ์ค
๋ชจ๋ Ruby ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ CI ํ์ดํ๋ผ์ธ ์ ์ฒด์์ ๊ท ์ผํ๊ฒ ์๋ํ๋๋ก ์ค๊ณ๋ ๊ฒ์ ์๋๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์๋ ๋๊ตฌ์ ์ ํธ ํ์ง, ์คํ ๋์ ๋ฐ ๊ด๋ฆฌ ํน์ฑ์ด ํด๊ฒฐํ๊ณ ์ ํ๋ ์ํ์ ๋ถํฉํ๋ ํน์ ์๋๋ฆฌ์ค์ ๋ง์ถฐ ๋๊ตฌ๋ฅผ ํ์ฉํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ๋์ ํจํด์ด ๋ํ๋ฉ๋๋ค. ๋ชจ๋ ๋๊ตฌ๋ฅผ ํ๋์ ๊ธฐ์ค์ ์ต์ง๋ก ๋ง์ถ๋ ค๊ณ ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๊ณผ๋ํ ๋ ธ์ด์ฆ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ๊ท์ ์งํ์ด ์ฝํ๋ฉ๋๋ค.
ํน์ ๋๊ตฌ๋ ๋ฃจ๋น ์์คํ ์ด ๋ ๊ฑฐ์ ํ๋ซํผ, ๊ท์ ๋์ ์ํฌํ๋ก ๋๋ ์ฅ๊ธฐ์ ์ธ ํ๋ํ ํ๋ก๊ทธ๋จ๊ณผ ์ ๋ชฉ๋ ๋ ํนํ ์ ์ฉํด์ง๋๋ค. ์ด๋ฌํ ๋งฅ๋ฝ์์ ์ ์ ๋ถ์์ ์ ์ญ ํ์ค์ ์ค์ํ๋๋ก ๊ฐ์ ํ๊ธฐ๋ณด๋ค๋ ๊ด์ฐฐํ๊ธฐ ์ด๋ ค์ด ํน์ ์ํ ์์๋ฅผ ๋ฐํ๋ ๋ฐ ๋ ์ค์ ์ ๋ก๋๋ค. ์ด๋ฌํ ์๋๋ฆฌ์ค๋ฅผ ์ดํดํ๋ฉด ํ๋ซํผ ์ฑ ์์๋ ๊ด๋ฒ์ํ ์ ์ฉ๋ณด๋ค๋ ์ ๋ฐํ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋๊ตฌ๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
๊ท์ ๋น๊ตญ์ ๊ฐ์๋ฅผ ๋ฐ๊ณ ์๋ ๋ณด์์ ๋ฏผ๊ฐํ Rails ์ํฌ๋ก๋
๊ธ์ต ๊ฑฐ๋, ๊ฐ์ธ ๋ฐ์ดํฐ ๋๋ ๊ท์ ๋์ ๊ธฐ๋ก์ ์ฒ๋ฆฌํ๋ Rails ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ํ ๋ถ์ ์๋๋ฆฌ์ค๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ฌํ ์์คํ ์์๋ ์ทจ์ฝ์ ์ ๋์ณค์ ๋ ๋ฐ์ํ๋ ๋น์ฉ์ด ๋ฐฐ์ก ์ง์ฐ์ผ๋ก ์ธํ ๋น์ฉ๋ณด๋ค ํจ์ฌ ๋์ต๋๋ค. ๋ฐ๋ผ์ Rails์ ํนํ๋ ๋ณด์ ์ค์บ๋๋ ์ผ๋ฐ์ ์ธ ํ์ง ๊ด๋ฆฌ ๋๊ตฌ๊ฐ ์๋๋ผ ํ๋ ์์ํฌ ์์ค์ ์ํ ๋ ธ์ถ์ ์ด์ ์ ๋ง์ถ ๋ง์ถคํ ์ ์ด ๋๊ตฌ๋ก ๋์ ๋์์ต๋๋ค.
์ด๋ฌํ ์ํฉ์์ ํน์ ๋๊ตฌ์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ Rails์ ๊ด๋ก์ ์๋ฌต์ ์ธ ๋์ ๋ฐฉ์์ ์ ํํ ์ดํดํ๊ณ ์๋ค๋ ์ ์ ๋๋ค. ์ทจ์ฝ์ ์ ํน์ดํ ์ฝ๋ ๊ฒฝ๋ก์์ ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ, ์ธ๋ป ๋ณด๊ธฐ์ ์์ ํด ๋ณด์ด๋ ๋งค๊ฐ๋ณ์, ์ฝ๋ฐฑ, ํฌํผ ๋ฉ์๋ ๋ฑ์ ๋ฏธ๋ฌํ๊ฒ ์ค์ฉํ๋ ๋ฐ์ ๋น๋กฏ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฆฐํฐ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ถฉ๋ถํ ์ ํ๋๋ก ์ฐพ์๋ด์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ํํฉ๋๋ค. Rails ์ ์ฉ ์ค์บ๋๋ ์ปจํธ๋กค๋ฌ, ๋ชจ๋ธ, ๋ทฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ด๋ํ๋์ง ๋ชจ๋ธ๋งํ์ฌ ๋ ๋์ ์ ๋ขฐ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ค์ ๋ก ์ด๋ฌํ ๋๊ตฌ๋ค์ ๊ฐ์ฅ ๋น ๋ฅธ CI ๊ฒ์ดํธ์ ๋ฐฐ์น๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ๋์ ํตํฉ ํ ์คํธ ๋จ๊ณ, ๋ฆด๋ฆฌ์ค ํ๋ณด ๊ฒ์ฆ ๋๋ ์์ฝ๋ ์ค์บ ๋จ๊ณ์ ๋ฐฐ์น๋ฉ๋๋ค. ์ด๋ฌํ ๋ฐฐ์น๋ ์ฌ์ธต์ ์ธ ๋ถ์์๋ ๋ ๋ง์ ๋งฅ๋ฝ๊ณผ ์๊ฐ์ด ํ์ํ๋ค๋ ์ ์ ์ธ์ ํ ๊ฒฐ๊ณผ์ ๋๋ค. ๋ชฉํ๋ ๊ฐ๋ฐ์์๊ฒ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ ๊ฒ์ด ์๋๋ผ, ๋ณ๊ฒฝ ์ฌํญ์ด ํ๋ก๋์ ํ๊ฒฝ์ ์ ์ฉ๋๊ธฐ ์ ์ ์กฐ๊ธฐ์ ์ํ์ ํ์ ํ๋ ๊ฒ์ ๋๋ค.
๊ธฐ์ ๋ค์ ์ด๋ฌํ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๊ท์ ์ค์ ๊ด๋ จ ๋ด์ฉ์ ๋ท๋ฐ์นจํ๊ธฐ๋ ํฉ๋๋ค. Rails ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ค์ง ์ทจ์ฝ์ ์ ํ์ ๋ํด ์ฒด๊ณ์ ์ผ๋ก ๊ฒ์ฌ๋์์์ ์ ์ฆํ ์ ์๋ค๋ฉด ๊ฐ์ฌ ๋ฐฉ์ด๋ ฅ์ ๊ฐํํ ์ ์์ต๋๋ค. ์ด๋ ํต์ ๋ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค์ ๋ฌธ์ํ๋ ์์ ์ํฌํ๋ก์ ๋ํ ์ฆ๊ฑฐ์ ํจ๊ป ์ ์๋ ๋ ํนํ ์ค์ํฉ๋๋ค. ๋ง์ ์กฐ์ง์์ Rails ๋ณด์ ์ค์บ๋์ ๋ฐ๊ฒฌ ์ฌํญ์ ๊ฐ๋ฐ์ ๋ฐฑ๋ก๊ทธ๊ฐ ์๋ ์ทจ์ฝ์ ๊ด๋ฆฌ ์์คํ ์ ์ง์ ๋ฐ์๋ฉ๋๋ค.
์ด ์๋๋ฆฌ์ค์ ํ๊ณ๋ ์ ์ฉ ๋ฒ์์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ Rails ํ๋ ์์ํฌ๋ฅผ ๋์ด์๋ ์ผ๋ฐํ ๋ฅ๋ ฅ์ด ๋ถ์กฑํ๋ฉฐ, ๊ณ ๋๋ก ๋ง์ถค ์ค์ ๋๊ฑฐ๋ ๋ฉํ ํ๋ก๊ทธ๋๋ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ ํธ ํ์ง์ด ์ ํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํ๋ ์์ํฌ ๊ท์น์ด ์ง๋ฐฐ์ ์ด๊ณ ๊ท์ ์ค์ ์ธก๋ฉด์์ ์ถ๊ฐ์ ์ธ ํ์ดํ๋ผ์ธ ๋ณต์ก์ฑ์ด ์ ๋นํ๋๋ ์ํฌ๋ก๋์ ์ ํ์ ์ผ๋ก ๋ฐฐํฌํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
๋๊ท๋ชจ Ruby ๋ชจ๋๋ฆฌ์ค์ ์ ์ง์ ํ๋ํ ๋ฐ ๋ฆฌํฉํ ๋ง
์ ์ง์ ํ๋ํ๋ฅผ ์งํ ์ค์ธ ๋๊ท๋ชจ Ruby ๋ชจ๋๋ฆฌ์ ์์คํ ์ ํน์ ๋ถ์ ๋๊ตฌ๊ฐ ํนํ ์ค์ํ ์ญํ ์ ํ๋ ๋ ํนํ ์๋๋ฆฌ์ค๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ฌํ ์์คํ ์์ ์ํ์ ๊ฐ๋ณ ์ฝ๋ ๋ผ์ธ์ด ์๋๋ผ ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉ๋ ๋ชจ๋, ๊ณต์ ์ถ์ํ, ๊ทธ๋ฆฌ๊ณ ์ฅ๊ธฐ์ ์ธ ์์กด์ฑ์ ์ง์ค๋์ด ์์ต๋๋ค. ๊ธฐ์กด์ CI(์ง์์ ํตํฉ) ๋ฐฉ์์ ์ด๋ฌํ ๊ตฌ์กฐ์ ์ํ์ ์ ๋๋ก ํฌ์ฐฉํ์ง ๋ชปํ์ฌ ๋ฆฌํฉํ ๋ง ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์๋์น ์์ ๋ถ์์ฉ์ด ํ์ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ ์ง๋ณด์์ฑ๊ณผ ์์กด์ฑ ๊ด๋ฆฌ์ ์ด์ ์ ๋ง์ถ ํน์ ๋๊ตฌ๋ฅผ ์๊ฐํ์ฌ ๊ฐ์ ๋ณด๋ค๋ ์์ฌ๊ฒฐ์ ์ ์ง์ํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ์ ์ญํ ์ ๋ฆฌํฉํ ๋ง์ด ํ์ํ ์ฃผ์ ์ง์ , ๋ก์ง ์ง์ค ์์ญ, ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฆํญ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ์์ญ์ ์๋ณํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ค ๊ตฌ์ฑ ์์๋ฅผ ๋จผ์ ํ๋ํํด์ผ ํ๊ณ ์ด๋ค ๊ตฌ์ฑ ์์๋ฅผ ๋ณ๊ฒฝ ๊ณผ์ ์์ ์ถ๊ฐ ๊ฒ์ฆํด์ผ ํ๋์ง ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ค์ ๋ก ์ด๋ฌํ ๋๊ตฌ๋ค์ ํต์ฌ ๋ณํฉ ๊ฒฝ๋ก ์ธ๋ถ์์ ์๋ํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ํน์ ๋ชจ๋์ ๋ณต์ก์ฑ ์ฆ๊ฐ ๋๋ ์ค๋ณต๊ณผ ๊ฐ์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ถ์ธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ณด๊ณ ์๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ํ ํ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํฉํ ๋ง ๋จ๊ณ๋ฅผ ๊ณํํ๊ณ ์๋น์ค๋ฅผ ์ถ์ถํ๊ฑฐ๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ต์ฒดํ๊ธฐ ์ ์ ์ํ๋๊ฐ ๋์ ์์ญ์ ์์ ํํ๋ ๋ฐ ํฌ์ํ๋ ๊ฒ์ ์ ๋นํํฉ๋๋ค.
์ด๋ฌํ ์๋๋ฆฌ์ค๋ ๋ณด๋ค ๊ด๋ฒ์ํ ์ํคํ ์ฒ ๋ถ์ ๋ฐฉ์๊ณผ์ ํตํฉ์ ํตํด ๋์ฑ ํจ๊ณผ์ ์ ๋๋ค. ์ ์ง์ ํ๋ํ๋ฅผ ์งํํ ๋ Ruby ๊ตฌ์ฑ ์์๊ฐ ๋ฐฐ์น ์์ , ๋ฉ์์ง ์์คํ ๋๋ ์ธ๋ถ API์ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง ์ดํดํ๋ ๊ฒ์ ํ์์ ์ ๋๋ค. ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ๊ตฌ์กฐ์ ๊ฐ์์ฑ๊ณผ ์ฐ๊ด๋ ๋ ๊ฐ์น๋ฅผ ๋ํ๋ฉฐ, ์ด๋ ์ฝ๋ ์ถ์ ์ฑ ๋ฐฉ์ ์์ ์ค๋ช ํ๋ ์ ๊ทผ๋ฒ๊ณผ ์ ์ฌํฉ๋๋ค . ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์คํ ๋์๊ณผ ์ฐ๊ฒฐํจ์ผ๋ก์จ ํ๋ํ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค.
์ด ์๋๋ฆฌ์ค์ ํ๊ณ๋ ์ฆ๊ฐ์ฑ ๋ถ์กฑ์ ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๊ฐ๋ณ ํ ๋ฆฌํ์คํธ์ ๋ํ ์คํ ๊ฐ๋ฅํ ํผ๋๋ฐฑ์ ๊ฑฐ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋๊ตฌ์ ๊ฒฐ๊ณผ๋ ํด์๊ณผ ์ฐ์ ์์ ์ค์ ์ด ํ์ํ๋ฏ๋ก ์๋ํ๋ ๊ฒ์ดํธ๋ก์์ ์ ์ฉ์ฑ์ด ์ ํ์ ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๋๊ตฌ์ ๊ฐ์น๋ ๊ท์ ์ค์ ๊ฐ์ ๋ณด๋ค๋ ์ ๋ต ์๋ฆฝ์ ์์ต๋๋ค.
์ฌ๋ฌ ํ์ด ์ฐธ์ฌํ๋ Ruby ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์น ์ ์ฑ ์ํ
๋ฃจ๋น ๊ฐ๋ฐํ๊ณผ ์ ์ฅ์๊ฐ ๋ง์ ๊ธฐ์ ์ ๋ณด์ ๋ฐ ๊ท์ ์ค์ ๊ดํ์ ์ผ๊ด์ฑ ๋ถ์กฑ์ผ๋ก ์ด๋ ค์์ ๊ฒช๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ํฉ์์ ์กฐ์ง์ ๊ท์น์ ์คํ ๊ฐ๋ฅํ ๊ฒ์ฌ๋ก ์ธ์ฝ๋ฉํ์ฌ ์ ์ฒด ํ๊ฒฝ์ ์ผ๊ด๋๊ฒ ์ ์ฉํ ์ ์๋๋ก ํน์ ์ ์ฑ ์ํ ๋๊ตฌ๋ฅผ ๋์ ํฉ๋๋ค. ๋ชฉํ๋ ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ฏธ ์๋ ค์ง ์ํ ํจํด์ด ์ฌ๋ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ ์กฐ์ง์ด ์น์ธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ธ์ง๋ API ๋๋ ํ์ ๋ณดํธ ์กฐ์น์ ๋ํ ๋ช ํํ ์ ์ฑ ์ ๊ฐ์ง๊ณ ์์ ๋ ํ์ํ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค. ์ด๋ฌํ ์ ์ฑ ์ ๊ท์น์ผ๋ก ํํํจ์ผ๋ก์จ ๊ธฐ์ ์ ์๋ ๊ฒํ ๋ฐ ์กฐ์ง ๋ด ๊ธฐ์ต์ ๋ํ ์์กด๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ํ ๊ท๋ชจ์ ๋ฐ๋ผ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ฐํ ์ ์ฑ ์ํ ๋ฉ์ปค๋์ฆ์ด ๋ฉ๋๋ค.
์ด๋ฌํ ์๋๋ฆฌ์ค์์ ์ด์ ์ฑ๊ณต์ ๊ท์น ๊ด๋ฆฌ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ ์ฑ ์ ์ํคํ ์ฒ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ฒ์ ๊ด๋ฆฌ, ๊ฒํ ๋ฐ ํ๊ธฐ๋์ด์ผ ํฉ๋๋ค. ๊ด๋ฆฌ ์ฒด๊ณ๊ฐ ์์ผ๋ฉด ๊ท์น ์ธํธ๋ ์๋์ ๋ค๋จ์ด์ง๊ฒ ๋๊ณ ์ ๋ขฐ๋ฅผ ์ ํดํ๋ ๋ถํ์ํ ์ ๋ณด๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์ธก๋ฉด์์ ์ฑ๊ณตํ๋ ๊ธฐ์ ์ ์ ์ฑ ๊ท์น์ ์ ์ ์ธ ๊ตฌ์ฑ์ด ์๋ ํ๋ซํผ ๋๋ ๋ณด์ ํ์ด ์์ ํ๋ ์ด์์๋ ์ํฐํฉํธ๋ก ์ทจ๊ธํฉ๋๋ค.
CI ํ์ดํ๋ผ์ธ ๋ด์์ ์ ์ฑ ์ ์ฉ ์์น๋ ์กฐ์ง๋ง๋ค ๋ค๋ฆ ๋๋ค. ์ผ๋ถ ์กฐ์ง์ ์ค์ ์ ์ฅ์์ ๋ํด ๋ณํฉ ์ ๋จ๊ณ์์ ์ ์ฑ ๊ท์น์ ์ ์ฉํ๋ ๋ฐ๋ฉด, ๋ค๋ฅธ ์กฐ์ง์ ๋ณํฉ ํ ์์ค์ปฌ๋ ์ด์ ์ํฌํ๋ก๋ฅผ ํตํด ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ๊ฒฐ์ ์ ๋ง์ฐฐ์ ๋ํ ํ์ฉ๋์ ์ํ ๊ฐ์๋๋ฅผ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๊ฒฝ์ฐ๋ , ์ ๋ฌธ ์ ์ฑ ๋๊ตฌ์ ๊ฐ์น๋ ์ ์ฑ ์ ๊น์ด๋ณด๋ค๋ ์ผ๊ด์ฑ ์ ์ง์ ์์ต๋๋ค.
ํจํด ๊ธฐ๋ฐ ์ ์ฑ ๋๊ตฌ์ ํ๊ณ๋ ํํ๋ ฅ์ ์์ต๋๋ค. ํจํด ๊ธฐ๋ฐ ์ ์ฑ ๋๊ตฌ๋ ์์์น ๋ชปํ ๋์์ด๋ ๋ณต์กํ ์คํ ๊ฒฝ๋ก๋ฅผ ์๋ฒฝํ๊ฒ ๋ชจ๋ธ๋งํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ๋ช ์์ ์ธ ๊ธ์ง ์ฌํญ์ด๋ ์๊ตฌ ์ฌํญ์ ๊ฐ์ ํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํ๋ฉฐ, ๋ฏธ๋ฌํ ์ํธ ์์ฉ์ ํ์ ํ๋ ๋ฐ๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ทธ ํจ๊ณผ๋ ๋๊ตฌ๊ฐ ์ธ์ฝ๋ฉํ๋ ์ ์ฑ ์ ๋ช ํ์ฑ์ ๋ฐ๋ผ ์ ํ๋ฉ๋๋ค.
์๋น์ค ์งํฅํ ๋ฃจ๋น ์ํคํ ์ฒ์์ ํ์ ๊ธฐ๋ฐ ๊ฒฝ๊ณ ์ ์ด
Ruby ์์คํ ์ด ์๋น์ค ์งํฅ ์ํคํ ์ฒ๋ก ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ธํฐํ์ด์ค ๋ณ๊ฒฝ ์ ์ด๋ ์ค์ํ ๋ถ์ ์๋๋ฆฌ์ค๊ฐ ๋์์ต๋๋ค. ์ด๋ฅผ ์ํด ์๋น์ค, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ด๋ถ API ๊ฐ์ ๊ณ์ฝ์ ๊ณต์ํํ๋ ๋ฐ ํนํ๋ ํ์ ๊ฒ์ฌ ๋๊ตฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ชฉํ๋ ํตํฉ ์ค๋ฅ๊ฐ ํ ์ ์ฒด๋ก ํ์ฐ๋๊ธฐ ์ ์ ํธํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ๊ธฐ์ ๊ฐ์งํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์๋๋ฆฌ์ค์์ ํ์ ์์คํ ์ ์ ํ์ฑ ๊ฒ์ฆ๊ธฐ๋ผ๊ธฐ๋ณด๋ค๋ ๋ณ๊ฒฝ ๊ฐ์ง๊ธฐ ์ญํ ์ ํฉ๋๋ค. ์์ ์ฑ์ด ๊ฐ์ฅ ์ค์ํ ๊ฒฝ๊ณ์ ์ ํ์ ์ผ๋ก ์ ์ฉ๋๋ฏ๋ก ๊ธฐ์ ์ ๋ด๋ถ์ ์ผ๋ก๋ Ruby์ ์ ์ฐ์ฑ์ ์ ์งํ๋ฉด์ ํตํฉ ์ง์ ์์๋ ๊ท์จ์ ๊ฐํํ ์ ์์ต๋๋ค. CI ํ์ดํ๋ผ์ธ์ ํ์ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ ๊ณ์ฝ์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฐจ๋จํ๊ณ ํธํ๋์ง ์๋ ์์ ์ฌํญ์ ๋ํ ์กฐ๊ธฐ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด์์ ์ธ ์ธก๋ฉด์์, ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํ์ ์๊ทธ๋์ฒ๋ ์ธํฐํ์ด์ค ์ ์์ ๊ฐ์ ์๋ก์ด ์ฐ์ถ๋ฌผ์ ๋์ ํฉ๋๋ค. ์ด๋ฌํ ์ฐ์ถ๋ฌผ์ ๊ด๋ฆฌํ๋ ค๋ฉด ํ ๊ฐ์ ์์ ๊ถ๊ณผ ํ์ ์ด ํ์ํฉ๋๋ค. ์ ๋๋ก ๊ด๋ฆฌ๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ์ฐ์ถ๋ฌผ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๋ ผ์ํ๋ ๋ฐ ์์ด ๊ณตํต๋ ์ธ์ด๊ฐ ๋ฉ๋๋ค. ํ์ง๋ง ์ํํ ๊ด๋ฆฌ๋ ๊ฒฝ์ฐ, ํ๋ค์ด ์๋ก์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋ ๋ง์ฐฐ์ ์์ธ์ด ๋ฉ๋๋ค.
์ด ์๋๋ฆฌ์ค์ ์ ๋ต์ ๊ฐ์น๋ ๋ณ๋ ฌ ๊ฐ๋ฐ ๋ฐ ๋จ๊ณ์ ์ถ์ ๊ณผ์ ์์ ๋์ฑ ์ปค์ง๋๋ค. ํ์ ๊ธฐ๋ฐ ๊ฒฝ๊ณ ์ ์ด๋ ์๋ฌต์ ์ธ ๊ณ์ฝ์ ๋ช ์์ ์ผ๋ก ๋ง๋ค์ด ์ ์ด๋ ์งํ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ ์ฑ๋ฅ ํ๊ท ํ ์คํธ ์์ ๋ ผ์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ, ๋ณ๊ฒฝ ์ํฅ ๋ฐ ๋ฆด๋ฆฌ์ค ์ํ์ ๊ด๋ฆฌํ๋ ค๋ ๊ด๋ฒ์ํ ๋ ธ๋ ฅ๊ณผ ๋งฅ๋ฝ์ ๊ฐ์ดํ๋ฉฐ , ์กฐ๊ธฐ ๋ฐ๊ฒฌ์ ํตํด ํ์ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค.
ํ๊ณ๋ ์ ์ฉ ๋ฒ์์ ์์ต๋๋ค. ํ์ ์์คํ ์ ๋ฃจ๋น์ ๋์ ์ธ ๋์์ ์๋ฒฝํ๊ฒ ๋ชจ๋ธ๋งํ ์ ์์ผ๋ฉฐ, ํฌ๊ด์ ์ธ ํ์ ์ง์ ์ ์๋ํ๋ฉด ์คํ๋ ค ์ญํจ๊ณผ๋ฅผ ๋ณ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ์ ์์คํ ์ ๊ฐ์น๋ ์ ์ฉ ๋ฒ์๋ฅผ ์ ์คํ๊ฒ ์ ์ํ๊ณ ์ํคํ ์ฒ ์ค๊ณ ์๋์ ์ผ์น์ํฌ ๋ ๋น๋ก์ ๋๋ฌ๋ฉ๋๋ค.
์ด๋ฌํ ๊ฐ ์๋๋ฆฌ์ค์์ ํนํ๋ Ruby ๋ถ์ ๋๊ตฌ๋ ๋ณดํธ์ ์ผ๋ก ์ ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋์ฑ ๊ฐ์น๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ๊ณ๋ฅผ ์ธ์ํ๊ณ ์กด์คํ๋ ๊ธฐ์ ์ ์ ๊ณต ์๋๋ ๊ฑฐ๋ฒ๋์ค ์ ๋ขฐ๋๋ฅผ ํฌ์ํ์ง ์๊ณ ๋ ์๋ฏธ ์๋ ํต์ฐฐ๋ ฅ์ ์ป์ ์ ์๋ ์ ๋ฆฌํ ์์น์ ์๊ฒ ๋ฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๋ฃจ๋น ์์คํ ์์ ๋๊ตฌ ์ ํ๋ถํฐ ๋ฐฐํฌ ์ ์ด๊น์ง
์ํฐํ๋ผ์ด์ฆ Ruby ์ ์ ๋ถ์ ํ๋ก๊ทธ๋จ์ ์ฑ๊ณต ์ฌ๋ถ๋ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ์๋ ์ ๋ ฌ ์ํ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์ ๋ถ์์์ ์ ์ ์๋ฏ์ด, ๋จ์ผ ๋๊ตฌ๋ก๋ CI ์ฒ๋ฆฌ๋ ์๊ตฌ ์ฌํญ, ์ฌ์ธต์ ์ธ ์ํ ๋ฐ๊ฒฌ, ํ๋ํ ์์ ์ฑ ๋ฐ ๊ฑฐ๋ฒ๋์ค ๊ธฐ๋์น๋ฅผ ๋์์ ์ถฉ์กฑํ ์ ์์ต๋๋ค. ๊ฐ ์ ํ์ ๋๊ตฌ๋ ์๋ก ๋ค๋ฅธ ์ค๋ฅ ๋ชจ๋๋ฅผ ํด๊ฒฐํ๋ฉฐ, ์ด๋ฌํ ๋๊ตฌ๋ค์ ํ์ผ์ ์ธ ๋ฐฉ์์ผ๋ก ์ ์ฉํ๋ฉด ์ง์์ ์ผ๋ก ๋ ธ์ด์ฆ ๋ฐ์, ์ฐํ ํ์ ๋๋ ์๋ชป๋ ํ์ ์ ์ด๋ํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ํ๋ ฅ์ ์ธ ๊ธฐ์ ๋ค์ Ruby ์ ์ ๋ถ์์ ๊ณ์ธตํ๋ ์ ์ด ์์คํ ์ผ๋ก ํ์ฉํฉ๋๋ค. ๋น ๋ฅด๊ณ ๊ฒฐ์ ๋ก ์ ์ธ ๋๊ตฌ๋ ๋ณํฉ ๋์์ ์์ ํํ๊ณ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๋ณดํธํฉ๋๋ค. ์ฌ์ธต์ ์ธ ์๋งจํฑ ๋ฐ ๋ณด์ ์ค์บ๋๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฐจ๋จํ์ง ์๊ณ ๋ ์๋ช ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ํ์ ๋ฐ๊ฒฌํ ์ ์๋๋ก ํฉ๋๋ค. ์ ์ง ๊ด๋ฆฌ ์ฉ์ด์ฑ๊ณผ ํ์ ๊ธฐ๋ฐ ๋๊ตฌ๋ ๊ตฌ์กฐ์ ์ํ์ ๊ฐ์ํํ๊ณ ์ธํฐํ์ด์ค ๋ณํ๋ฅผ ๋ช ํํ ํจ์ผ๋ก์จ ํ๋ํ๋ฅผ ์๋ดํฉ๋๋ค. ์ด๋ฌํ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ CI ํ์ดํ๋ผ์ธ์ด ๊ท๋ชจ ํ์ฅ๊ณผ ๋ณํ ์๋ ฅ ์์์๋ ์ ๋ขฐ์ฑ์ ์ ์งํ ์ ์๋๋ก ํด์ค๋๋ค.
๋ชจ๋ ์น์ ์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ํ๋๋ ํจํด์ ์ ์ ๋ถ์์ ๊ฐ์น๊ฐ ๋งฅ๋ฝ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค๋ ๊ฒ์ ๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๋ ์คํ ๊ฒฝ๋ก, ์์กด์ฑ ๊ตฌ์กฐ, ์์ ๊ถ ๊ฒฝ๊ณ ๋ฐ ๋ฆด๋ฆฌ์ค ์๋์ ๊ด๋ จํ์ฌ ํด์๋ ์ ์์ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋งฅ๋ฝ์ด ์๋ค๋ฉด ์๋ฌด๋ฆฌ ํ๋ฅญํ ๋๊ตฌ๋ผ๋ ๋จ์ ๋ ์ ํธ ์์ฑ๊ธฐ์ ๋ถ๊ณผํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์ํคํ ์ฒ ๊ฐ์์ฑ๊ณผ ๋๊ตฌ ๊ฐ ์๊ด๊ด๊ณ๊ฐ ๊ฒฐ์ ์ ์ธ ์ญํ ์ ํฉ๋๋ค. ์ด๋ ๋ฃจ๋น ๋ถ์ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ, ๊ธฐ์ ์ด ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ ์ ๊ฐ์ง๊ณ ํ์ฉํ ์ ์๋๋ก ํ๋ ๋ฉ์ปค๋์ฆ์ผ๋ก์์ ์ญํ ์ ํฉ๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ๊ธฐ์ ๋ฆฌ๋์๊ฒ ์ค์ํ ์ง๋ฌธ์ ์ด๋ค ๋ฃจ๋น ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ๊ฐ์ฅ ์ข์๊ฐ๊ฐ ์๋๋ผ, ๋ถ์์ด ๋ ๊ด๋ฒ์ํ ๋ฐฐํฌ ์ ์ด ์์ญ์ ์ด๋ป๊ฒ ํตํฉ๋๋๊ฐ์ ๋๋ค. ์ํ ์ฐจ๋ณํ, ์คํ ์ธ์, ๊ทธ๋ฆฌ๊ณ ๊ด๋ฆฌ๋๋ ์งํ๋ฅผ ์ค์ฌ์ผ๋ก CI๋ฅผ ์ค๊ณํ๋ ์กฐ์ง์ ๋จ์ํ ๊ฒฐํจ์ ๊ฐ์งํ๋ ๋ฐ ๊ทธ์น์ง ์์ต๋๋ค. ์ด๋ฌํ ์กฐ์ง์ ์ ์ ๋ถ์์ ํ์ดํ๋ผ์ธ์ ์ฒดํฌ๋ฆฌ์คํธ ํญ๋ชฉ์ด ์๋, ํ๋ํ, ๊ท์ ์ค์, ๊ทธ๋ฆฌ๊ณ ๋๊ท๋ชจ ์ง์ ๊ฐ๋ฅํ ๋ฐฐํฌ๋ฅผ ์ง์ํ๋ ์ ๋ต์ ์์ฐ์ผ๋ก ํ์ฉํฉ๋๋ค.
