Ruby ์ •์  ๋ถ„์„ ๋„๊ตฌ ๋น„๊ต

CI ๊ฒŒ์ดํŠธํ‚คํ•‘ ๋ฐ ์œ„ํ—˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ Ruby ์ •์  ๋ถ„์„ ๋„๊ตฌ ๋น„๊ต

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ 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๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์กฐ์ง์€ ๋‹จ์ˆœํžˆ ๊ฒฐํ•จ์„ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ๊ทธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์กฐ์ง์€ ์ •์  ๋ถ„์„์„ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์ด ์•„๋‹Œ, ํ˜„๋Œ€ํ™”, ๊ทœ์ • ์ค€์ˆ˜, ๊ทธ๋ฆฌ๊ณ  ๋Œ€๊ทœ๋ชจ ์ง€์† ๊ฐ€๋Šฅํ•œ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์ „๋žต์  ์ž์‚ฐ์œผ๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.