CI/CD ์ž๋™ํ™”, ์ฆ‰ ์ง€์†์ ์ธ ํ†ตํ•ฉ ๋ฐ ์ง€์†์ ์ธ ๋ฐฐํฌ ์ž๋™ํ™”๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํšจ์œจ์„ฑ, ํ’ˆ์งˆ ๋ฐ ์ œ๊ณต ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ˆ˜๋ช… ์ฃผ๊ธฐ์˜ ๋‹ค์–‘ํ•œ ๋‹จ๊ณ„๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ์‚ฌ๋žŒ์˜ ๊ฐœ์ž…์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. CI/CD ์ž๋™ํ™”์˜ ๋งฅ๋ฝ์—์„œ AppMasterno-code ํ”Œ๋žซํผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ ๊ฐ€์†ํ™”ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ๋Œ€์ƒ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ๊ณ ํ’ˆ์งˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

CI(์ง€์†์  ํ†ตํ•ฉ)๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ ์ €์žฅ์†Œ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์‹๋ณ„๋˜๊ณ  ํ•ด๊ฒฐ๋˜๋ฏ€๋กœ ์˜ค๋ฅ˜๋‚˜ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์œ„ํ—˜์ด ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋˜ํ•œ CI๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ๊ฐ€ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋„๋ก ํ•˜์—ฌ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž ์ฝ”๋“œ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. State of DevOps Report์˜ 2020๋…„ ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด CI ์›์น™์„ ์ฑ„ํƒํ•œ ์กฐ์ง์€ ๋ณ€๊ฒฝ ๋ฆฌ๋“œ ํƒ€์ž„์„ 2.6๋ฐฐ ๋” ๋น ๋ฅด๊ฒŒ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฒฝ์Ÿ ์‹œ์žฅ์—์„œ ์‹ ์†ํ•œ ํ˜์‹ ์„ ์œ„ํ•œ ํ•„์ˆ˜ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

CD(์ง€์†์  ๋ฐฐํฌ)๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋œ ํ›„ ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๋ฆด๋ฆฌ์Šคํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ…Œ์ŠคํŠธ๋˜๊ณ  ๊ฒ€์ฆ๋œ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ค€๋น„ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜์–ด ์งง์€ ๊ธฐ๊ฐ„ ๋‚ด์— ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. 2017๋…„ Puppet State of DevOps ๋ณด๊ณ ์„œ์—์„œ CD๋ฅผ ์ฑ„ํƒํ•œ ๊ณ ์„ฑ๋Šฅ ์กฐ์ง์€ ๋ฆฌ๋“œ ํƒ€์ž„์ด 440๋ฐฐ ๋นจ๋ผ์ง€๊ณ  ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ๋Œ€ 46๋ฐฐ ๋” ์ž์ฃผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

CI/CD ์ž๋™ํ™” ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ, ํ…Œ์ŠคํŠธ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฐฐํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Gradle ๋˜๋Š” Maven๊ณผ ๊ฐ™์€ ๋นŒ๋“œ ๋„๊ตฌ, Git ๋˜๋Š” SVN๊ณผ ๊ฐ™์€ ์ฝ”๋“œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, Jenkins, Bamboo ๋˜๋Š” GitLab๊ณผ ๊ฐ™์€ CI/CD ์„œ๋ฒ„, Docker ๋˜๋Š” Kubernetes์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆํ™” ๊ธฐ์ˆ ์€ ์ผ๋ฐ˜์ ์ธ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ณตํ†ต ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์œ„, ํ†ตํ•ฉ ๋ฐ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋Š” ๋ฐฐํฌ ์ „์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

AppMasterno-code ํ”Œ๋žซํผ์€ CI/CD ์ž๋™ํ™” ์›์น™์„ ์™„์ „ํžˆ ์ฑ„ํƒํ•œ ํฌ๊ด„์ ์ธ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE)์˜ ์˜ˆ์™ธ์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๊ฐ–์ถ˜ AppMaster ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค, ํ”„๋ŸฐํŠธ์—”๋“œ ์›น ์ธํ„ฐํŽ˜์ด์Šค, Android ๋ฐ iOS์šฉ ๊ธฐ๋ณธ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•˜๋Š” ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ๊ฐ์ ์œผ๋กœ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , REST API ๋ฐ WSS endpoints ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AppMaster ๊ณ ์œ ํ•œ ์„œ๋ฒ„ ์ค‘์‹ฌ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ณ ๊ฐ์€ ์•ฑ ์Šคํ† ์–ด์— ์ƒˆ ๋ฒ„์ „์„ ์ œ์ถœํ•  ํ•„์š” ์—†์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ, UI ๋ณ€๊ฒฝ ๋ฐ ๊ตฌ์„ฑ์œผ๋กœ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํ–ฅ์ƒ๋œ ์œ ์—ฐ์„ฑ์€ ๋ฌผ๋ก  ๋” ๋น ๋ฅด๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

AppMaster ํ”Œ๋žซํผ์€ CI/CD ์ž๋™ํ™” ์›์น™์„ ํ™œ์šฉํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ค„์—ฌ ์กฐ์ง์ด ์‹œ์žฅ์— ๋” ๋น ๋ฅด๊ฒŒ ๋„๋‹ฌํ•˜๊ณ  ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ์„ ์ง€์†์ ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster๊ฐ€ ๊ตฌ์ถ•ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฒ ์ €ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ๊ณ ํ’ˆ์งˆ ์ฝ”๋“œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ธฐ๋ณธ ์ธํ”„๋ผ ๋ชจ๋‘์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฐํ•จ ๋ฐ ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ์˜ ์œ„ํ—˜์„ ์ค„์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ CI/CD ์ž๋™ํ™”๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค AppMaster ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ตœ์‹  ์ƒํƒœ, ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐ ํ™•์žฅ์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ ๊ธฐ์—…์˜ ์„ฑ์žฅ๊ณผ ๊ฒฝ์Ÿ๋ ฅ์„ ์ง€์›ํ•˜๋Š” ์ง€์† ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฏธ๋ž˜ ์ง€ํ–ฅ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ CI/CD ์ž๋™ํ™”๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ตฌ์ถ•, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€ํ™”์‹œํ‚จ ํ•„์ˆ˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. CI/CD ์›์น™์„ ์ˆ˜์šฉํ•จ์œผ๋กœ์จ AppMasterno-code ํ”Œ๋žซํผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์†ํ™”ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ๋Œ€์ƒ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ๊ณ ํ’ˆ์งˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ์—…์— ์ง€์† ๊ฐ€๋Šฅํ•˜๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.