๐Ÿš€ "๊ฐœ๋ฐœ ๋! ์ด์ œ ๋ฐฐํฌํ• ๊นŒ?" ์ž๋™ ๋ฐฐํฌ์˜ ์‹ ์„ธ๊ณ„, CI/CD & AWS CodeDeploy

์„ํ˜„ยท2025๋…„ 3์›” 2์ผ
0

Insight

๋ชฉ๋ก ๋ณด๊ธฐ
25/43

๐Ÿค” CI/CD๋ž€?

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ์ƒ๊ฐํ•ด๋ณธ ์  ์žˆ๋‚˜์š”? ๋ฐ”๋กœ CI/CD(Continuous Integration / Continuous Deployment)์ž…๋‹ˆ๋‹ค!

CI/CD๋Š” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ, ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ , ์˜ค๋ฅ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐ์ง€ํ•˜๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ”ฅ

์˜ค๋Š˜์€ CI/CD์˜ ๊ฐœ๋…๊ณผ ์—ญํ• , ๊ทธ๋ฆฌ๊ณ  ์‹ค๋ฌด์—์„œ AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์ž๋™ ๋ฐฐํฌ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐ŸŽฏ CI/CD๊ฐ€ ๋“ฑ์žฅํ•œ ์ด์œ 

์ด์ „์—๋Š” ๋ฐฐํฌํ•  ๋•Œ Tar ํŒŒ์ผ์„ ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ์—์„œ ์••์ถ•ํ•˜์—ฌ ์šด์˜ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ ํ›„, ์••์ถ•์„ ํ•ด์ œํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์ด ๋‚˜์˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.์•„๋งˆ ํšŒ์‚ฌ by ํšŒ์‚ฌ์˜€๊ฒ ์ง€๋งŒ ์ œ๊ฐ€ ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ํšŒ์‚ฌ์—์„œ๋Š” ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌ๋ฅผ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ๋ฐฐํฌ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ โ†’ 20๋Œ€์˜ ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ชจ๋“  ์„œ๋ฒ„์— ๋ฐฐํฌ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํœด๋จผ ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ โ†’ ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ๋ฒ„์ „์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ๋ˆ„๋ฝํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ ์ค‘ ์žฅ์•  ๋ฐœ์ƒ ๊ฐ€๋Šฅ โ†’ ๋ฐฐํฌ ๋„์ค‘ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์„œ๋น„์Šค ์ค‘๋‹จ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•˜์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ์ž์˜ ๋ถ€๋‹ด ์ฆ๊ฐ€ โ†’ ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ๊ธด์žฅํ•˜๊ณ  ์‹ ๊ฒฝ์ด ๊ณค๋‘์„ฐ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ CI/CD์ž…๋‹ˆ๋‹ค.


โœ… CI/CD์˜ ํ•ต์‹ฌ ๊ฐœ๋…

์ง€์†์  ํ†ตํ•ฉ (Continuous Integration, CI)

CI๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ†ตํ•ฉํ•˜๊ณ , ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ํ›„ PR์„ ์˜ฌ๋ฆฌ๋ฉด โ†’ ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋จ
  • ๋ชจ๋“  ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ์ง€์†์ ์œผ๋กœ ๋ฐ˜์˜๋จ
  • ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๊ฐ์ง€ํ•˜์—ฌ ๋ฌธ์ œ ๋ฐœ์ƒ์„ ์ตœ์†Œํ™”

CI ๋•๋ถ„์— ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ›‘


์ง€์†์  ๋ฐฐํฌ (Continuous Deployment, CD)

CD๋Š” CI๋ฅผ ๊ฑฐ์นœ ์ฝ”๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๊นŒ์ง€ ๋ฐฐํฌ๋˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • CI ๊ณผ์ •์—์„œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด, ์ฝ”๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋จ
  • ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ”๋กœ ์ตœ์‹  ๊ธฐ๋Šฅ๊ณผ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฐฐํฌ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๋ฉด์„œ, ๊ณ ๊ฐ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜๋Š” ์ฃผ๊ธฐ๋„ ๋‹จ์ถ•๋จ

CD ๋•๋ถ„์— ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ๊ธด์žฅํ•  ํ•„์š” ์—†์ด, ์•ˆ์ •์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿš€


์ง€์†์  ์ „๋‹ฌ (Continuous Delivery)

CD(Continuous Deployment)์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ์ „์— ์ˆ˜๋™ ์Šน์ธ ์ ˆ์ฐจ๊ฐ€ ํฌํ•จ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • ์ž๋™ํ™”๋œ ๋นŒ๋“œ & ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นœ ํ›„, ์ตœ์ข… ๋ฐฐํฌ๋Š” ์ˆ˜๋™ ์Šน์ธ ํ›„ ์ง„ํ–‰๋จ
  • ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ์•ˆ์ •์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐฐํฌ ์ „์— ์ถ”๊ฐ€ ๊ฒ€ํ† ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฐฐํฌ ์ž๋™ํ™”์˜ ์ด์ ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ์ˆ˜๋™ ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณ ์•ˆ์ „์„ฑ์„ ๋”ํ•  ์ˆ˜ ์žˆ์Œ

์ด ๋ฐฉ์‹์€ ์™„์ „ ์ž๋™ ๋ฐฐํฌ๊ฐ€ ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”ง CI/CD๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๐Ÿ“Œ 1. CI/CD ๋„๊ตฌ ์„ ํƒ

CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ ๋„๊ตฌ
CI/CD ์ž๋™ํ™”Jenkins, GitHub Actions, GitLab CI, Travis CI, CircleCI
๋นŒ๋“œ ๋ฐ ๋ฐฐํฌDocker, Kubernetes, AWS CodeDeploy, ArgoCD
ํ…Œ์ŠคํŠธ ์ž๋™ํ™”JUnit, Selenium, Cypress, Jest
๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ ์ €์žฅAWS S3, Docker Registry, Nexus Repository

๊ฐ ํ™˜๊ฒฝ์— ๋งž๋Š” ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ตœ์ ์˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ 2. CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ๋ณธ ํ๋ฆ„

๐Ÿ—๏ธ 1. ์ฝ”๋“œ ๋ณ€๊ฒฝ ๊ฐ์ง€ ๋ฐ ๋นŒ๋“œ ์‹คํ–‰

โœ… ๊ฐœ๋ฐœ์ž๊ฐ€ Git์— ์ฝ”๋“œ Push & Pull Request(PR) ์ƒ์„ฑ
โœ… CI ์‹œ์Šคํ…œ(Jenkins, GitHub Actions ๋“ฑ)์ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰

๐Ÿ“ฆ 2. ํ…Œ์ŠคํŠธ ๋ฐ ํŒจํ‚ค์ง•

โœ… ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜์—ฌ ๋ฐฐํฌ ์ค€๋น„

๐Ÿš€ 3. ๋ฐฐํฌ ์ง„ํ–‰

โœ… ๋ฐฐํฌ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ž๋™ ๋ฐฐํฌ(Continuous Deployment) ๋˜๋Š” ์ˆ˜๋™ ์Šน์ธ ํ›„ ๋ฐฐํฌ(Continuous Delivery) ์ง„ํ–‰

๐Ÿ“Š 4. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กค๋ฐฑ

โœ… ๋ฐฐํฌ ์ƒํƒœ ๋ฐ ์„ฑ๋Šฅ ์ ๊ฒ€
โœ… ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋กค๋ฐฑ ์‹คํ–‰

์ด ๊ณผ์ •์„ ํ†ตํ•ด ์ง€์†์ ์ธ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”ฅ


๐ŸŽฌ AWS CodeDeploy๋กœ ์ž๋™ ๋ฐฐํฌํ•˜๊ธฐ

๐Ÿš€ AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

๐Ÿ“Œ 1. ์ฝ”๋“œ ๋ณ€๊ฒฝ ๊ฐ์ง€ ๋ฐ ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •

โœ… ๊ฐœ๋ฐœ์ž๊ฐ€ GitHub ๋˜๋Š” GitLab์— ์ฝ”๋“œ Push & PR ์ƒ์„ฑ
โœ… GitHub Actions, Jenkins ๋“ฑ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜๊ณ  ํŠธ๋ฆฌ๊ฑฐ ํ™œ์„ฑํ™”

๐Ÿ“Œ 2. CI ์‹œ์Šคํ…œ์—์„œ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰

โœ… ์ฝ”๋“œ๊ฐ€ ๋นŒ๋“œ๋˜๊ณ  ์œ ๋‹› ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹คํ–‰
โœ… ์„ฑ๊ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฐฐํฌ ์ค€๋น„ ์‹œ์ž‘

๐Ÿ“Œ 3. ๋ฐฐํฌ ํŒŒ์ผ ํŒจํ‚ค์ง• ๋ฐ ์—…๋กœ๋“œ

โœ… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๊ณ , AWS S3 ๋˜๋Š” Docker Registry์— ์—…๋กœ๋“œ
โœ… CodeDeploy๊ฐ€ ์ƒˆ๋กœ์šด ๋ฐฐํฌ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ์ง€

๐Ÿ“Œ 4. CodeDeploy๋ฅผ ์ด์šฉํ•œ ๋ฐฐํฌ ์ง„ํ–‰

โœ… CodeDeploy๊ฐ€ ๋ฐฐํฌ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , ์ง€์ •๋œ EC2 ์ธ์Šคํ„ด์Šค ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌ ์ง„ํ–‰
โœ… ๋ฐฐํฌ ์™„๋ฃŒ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ํ™•์ธ
โœ… ํ•„์š” ์‹œ ๋กค๋ฐฑ ์‹คํ–‰ํ•˜์—ฌ ์•ˆ์ •์„ฑ ํ™•๋ณด

AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์„œ๋น„์Šค ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”ฅ


๐ŸŽฏ ๊ฒฐ๋ก 

CI/CD๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ , ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๊ฐ€์†ํ•˜๋Š” ํ•„์ˆ˜ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๐Ÿš€ CI/CD & AWS CodeDeploy๋ฅผ ๋„์ž…ํ•˜๋ฉด?
โœ” ๋” ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌ ๊ฐ€๋Šฅ
โœ” ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ ์‚ฌ์ด์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ ์ œ๊ฑฐ
โœ” ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ ํ–ฅ์ƒ
โœ” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ๋‚˜์€ ์ฝ”๋“œ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Œ

CI/CD๋ฅผ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์€ ์–ด๋ ต์ง€ ์•Š์œผ๋ฉฐ, ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„๋ฒฝํ•œ ์ž๋™ํ™”๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ฐ”๋กœ CI/CD๋ฅผ ๋„์ž…ํ•ด๋ณด์„ธ์š”! ๐ŸŽฏ

0๊ฐœ์˜ ๋Œ“๊ธ€