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

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

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

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

AppMasterno-code ํ”Œ๋žซํผ ์—์„œ๋Š” ์ง€์†์ ์ธ ์ „๋‹ฌ ๊ฐœ๋…์ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ๊นŠ์ด ๋ฟŒ๋ฆฌ๋ฐ•ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค, REST API ๋ฐ WSS ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ AppMaster ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ ์‚ฌํ•ญ์˜ ์ง€์†์ ์ธ ๋ณ€ํ™”๋ฅผ ์‰ฝ๊ฒŒ ์ˆ˜์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” AppMaster ์˜ drag-and-drop ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  30์ดˆ ์ด๋‚ด์— ์—…๋ฐ์ดํŠธ๋œ ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster ์ž๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  Go(golang)์˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Vue3 ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ JS/TS์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, Android์šฉ Kotlin ๋ฐ Jetpack Compose, IOS์šฉ SwiftUI ์˜ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•˜์—ฌ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜์—ฌ CD๋ฅผ ๋”์šฑ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค.

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

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