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

CI(์ง€์†์  ํ†ตํ•ฉ)๋Š” ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜์–ด ์ƒˆ๋กœ ๊ฐœ๋ฐœ๋œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ž์ฃผ(์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋ฃจ์— ์—ฌ๋Ÿฌ ๋ฒˆ) ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ด€ํ–‰์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ํ˜‘์—…ํ•˜๊ณ , ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ดˆ๊ธฐ์— ํ†ตํ•ฉ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒ€์€ ์ฝ”๋“œ์˜ ์ƒํƒœ์™€ ํ’ˆ์งˆ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ๋ฒ„๊ทธ, ์ž˜๋ชป๋œ ๋ณ‘ํ•ฉ ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๊ธฐ ์žˆ๋Š” CI ์‹œ์Šคํ…œ์œผ๋กœ๋Š” Jenkins, Travis CI, CircleCI ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

CD(์ง€์†์  ๋ฐฐํฌ)์—๋Š” ์ผ๋ จ์˜ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ํ›„ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•จ์œผ๋กœ์จ CD๋ฅผ ํ†ตํ•ด ํŒ€์€ ์‚ฌ๋žŒ์˜ ๊ฐœ์ž…์„ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ๊ธฐ๋Šฅ, ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ์‹ ์†ํ•˜๊ฒŒ ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์†ํ™”ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์•„์ด๋””์–ด์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. AWS CodeDeploy, Spinnaker ๋ฐ GitLab CI/CD์™€ ๊ฐ™์€ CD ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

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

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

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

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