โ€œ์ง€์†์  ํ†ตํ•ฉ, ์ง€์†์  ์ œ๊ณต(๋ฐฐํฌ)โ€

CI/CD๋ž€?

  • Continuous Integration ์ง€์†์  ํ†ตํ•ฉ
  • Continuous Delivery(Deployment) ์ง€์†์  ์ œ๊ณต(๋ฐฐํฌ)

: ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ~ ๋ฐฐํฌ๊นŒ์ง€, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ!


Continuous Integration

: ์ง€์†์  ํ†ตํ•ฉ

๋ฒ„๊ทธ์ˆ˜์ •์ด๋‚˜ ์ƒˆ๊ธฐ๋Šฅ์ด ๋ฉ”์ธ repository์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋˜์–ด์„œ ๋จธ์ง€๋˜๋Š” ๋ฐฉ์‹.

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

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฝ”๋“œ์˜ ํ€„๋ฆฌํ‹ฐ ํ–ฅ์ƒ


Continuous Delivery(Deployment)

: ์ง€์†์  ์ œ๊ณต(๋ฐฐํฌ)

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

  3. continuous delivery์˜ ๊ฒฝ์šฐ
    ์ค€๋น„๋œ release๊ฐ€ ๋ฌธ์ œ์—†๋Š”์ง€ ๊ฒ€์ฆ ๋’ค์— ์ˆ˜๋™์ ์œผ๋กœ
  4. continuous deployment์˜ ๊ฒฝ์šฐ
    release๊ฐ€ ์ค€๋น„๋˜์ž๋งˆ์ž ์ž๋™์ ์œผ๋กœ
  5. Deploy Release

ํšŒ์‚ฌ๋งˆ๋‹ค continuous delivery๋ฅผ ์ด์šฉํ•ด์„œ ์ตœ์ข…๋‹จ๊ณ„๋Š” ์ˆ˜๋™์ ์œผ๋กœ releaseํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ณ ,
continuous deployment๋กœ release๊นŒ์ง€ ๋ชจ๋“  ๊ณผ์ •์„ ์ž๋™ํ™”๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค


CI/CD pipe line


CI/CD๋Š” ์™„๋ฒฝํžˆ ๋ถ„๋ฆฌ๋œ ๊ฒƒ์ด ์•„๋‹Œ, ๋Œ€๋ถ€๋ถ„ ํšŒ์‚ฌ์—์„œ CI/CD๋ฅผ ๊ฑฐ์ณ์„œ ๋ฐฐํฌํ•œ๋‹ค.

CI/CD๋ฅผ ์œ„ํ•œ ํˆด๋กœ๋Š” Jenkins, Buildkite, GitHub Actions ๋“ฑ ๋งŽ์€ ๊ฒƒ์ด ์žˆ์Œ!