CI/CD

CI/CD๋ž€?

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

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

์ถœ์ฒ˜ : Redhat

์œ„์˜ Redhat์˜ ์ •์˜๋ฅผ ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์„ค๋ช…ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

CI/CD๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋‹จ๊ณ„๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ๋”์šฑ ์งง์€ ์ฃผ๊ธฐ๋กœ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•.

Unity-what-is-ci-cd

Continuous Integration

๋” ์ž์„ธํžˆ ๋“ค์–ด๊ฐ€๋ณด์ž. CI๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ž๋™ํ™” ํ”„๋กœ์„ธ์Šค์ธ ์ง€์†์ ์ธ ํ†ตํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.

CI๊ฐ€ ์ œ๋Œ€๋กœ ๊ตฌํ˜„๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์˜ ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ •๊ธฐ์ ์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ๊ณต์œ  ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ณ‘ํ•ฉ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ ์ž‘์—…์„ ํ•  ๊ฒฝ์šฐ ์„œ๋กœ ์ถฉ๋Œํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค.

  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋ฅผ ๊ธฐ์กด ์ฝ”๋“œ์™€ ๋ณ‘ํ•ฉํ•œ๋‹ค.

  2. ๋ณ‘ํ•ฉ๋œ ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ๋นŒ๋“œ๋˜๋Š”์ง€ ๊ฒ€์ฆ

  3. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ 1๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐฐํฌํ•œ๋‹ค.

Continuous Delivery

CD๋Š” ์ง€์†์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต(Continuous Delivery) ๋˜๋Š” ์ง€์†์ ์ธ ๋ฐฐํฌ(Continuous Deploy)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ์ด ๋‘ ์šฉ์–ด๋Š” ์ƒํ˜ธ ๊ตํ™˜ํ•˜์—ฌ ์‚ฌ์šฉ๋œ๋‹ค.

๋‘ ๊ฐ€์ง€ ์˜๋ฏธ ๋ชจ๋‘ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ถ”๊ฐ€ ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์ž๋™ํ™”๋ฅผ ๋œปํ•œ๋‹ค.

๋•Œ๋กœ๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ž๋™ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋Š” ์ง€๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

์ง€์†์ ์ธ ์ œ๊ณต์ด๋ž€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฒ„๊ทธ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž๋™์œผ๋กœ ์—…๋กœ๋“œ ๋˜๋Š” ๊ฒƒ์„ ๋œปํ•˜๋ฉฐ, ์šด์˜ํŒ€ (์•„๋งˆ๋„ Devops)์€ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ค์‹œ๊ฐ„ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐœ๋ฐœํŒ€๊ณผ ๋น„์ฆˆ๋‹ˆ์ŠคํŒ€ ๊ฐ„์˜ ๊ฐ€์‹œ์„ฑ๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ถ€์กฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ง€์†์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต์€ ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ์œผ๋กœ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

Continuous Deploy

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

์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ๊ณต ์†๋„๋ฅผ ์ €ํ•ดํ•˜๋Š” ์ˆ˜๋™ ํ”„๋กœ์„ธ์Šค๋กœ ์ธํ•œ ์šด์˜ํŒ€์˜ ํ”„๋กœ์„ธ์Šค ๊ณผ๋ถ€ํ•˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

์ง€์†์ ์ธ ๋ฐฐํฌ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ž๋™ํ™”ํ•จ์œผ๋กœ์จ Continuous Delivery์˜ ์žฅ์ ์„ ํ™œ์šฉํ•œ๋‹ค.

CI/CD pipeline

๊ฒฐ๊ณผ์ ์œผ๋กœ CI/CD๋Š” ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ง€์†์ ์ธ ์ž๋™ํ™” ๋ฐ ์ง€์†์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

CI/CD ํŒŒ์ดํ”„๋ผ์ธ์ด ์ค‘์š”ํ•œ ์ด์œ 

CI์™€ CD๋Š” ๋ชจ๋‘ ์ตœ์‹  DevOps์— ํ•„์ˆ˜์ ์ด๋ฉฐ Agile ๋ฐฉ๋ฒ•๋ก  ์ง€์›์— ๋„์›€์ด ๋ค๋‹ค.

์ด์™€ ๊ฐ™์€ ํšจ๊ณผ์ ์ธ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค.

๋ช…ํ™•ํ•œ ํ”„๋กœ์„ธ์Šค

์ฒด๊ณ„์ ์ธ CI/CD ์ ‘๊ทผ ๋ฐฉ์‹์€ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐ ๋‹จ๊ณ„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ฐฐ์น˜ํ•˜์—ฌ ์ •ํ™•ํžˆ ์–ด๋–ค ์ž‘์—…์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๊ตฌ์ƒ๋ถ€ํ„ฐ ์™„๋ฃŒ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ์˜ ๊ธธ์žก์ด๊ฐ€ ๋œ๋‹ค.

๋†’์€ ํ’ˆ์งˆ์˜ ์ฝ”๋“œ

์ž‘๊ณ  ์ ์ง„์ ์ธ ๋ณ€ํ™”๋Š” ํ’ˆ์งˆ๊ณผ ํšจ๊ณผ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ฝ”๋“œ ๋‚ด์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ›จ์”ฌ ๋” ๋ช…๋ฐฑํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚˜๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ์ดˆ๊ธฐ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์ ํŠธ ์ „์ฒด์— ๊ฑธ์ณ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์ด ๋†’์•„์ง„๋‹ค.

์‰ฌ์šด ์•ก์„ธ์Šค

๋ณ€ํ™”๊ฐ€ ์ค‘์•™ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ž๋™์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ์ดํ•ด ๊ด€๊ณ„์ž, QA, ๊ธฐํƒ€ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ํŒ€๊ณผ ๊ฐœ์ธ์ด ์ตœ์‹  ๋ฒ„์ „์„ ํฌํ•จํ•œ ๋ชจ๋“  ๋ฒ„์ „์˜ ์ œํ’ˆ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ

์ฝ”๋“œ์— ๊ด€๋ จํ•œ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํšจ๊ณผ์ ์ธ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ด€ํ–‰์„ ํ†ตํ•ด ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ

์‚ฌ์šฉ์ž์™€ ํ…Œ์ŠคํŠธ ๋‹ด๋‹น์ž๋Š” CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ๊ฑฐ์˜ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ํŒ€๋„ ๊ทธ๋งŒํผ ์ฆ‰๊ฐ์ ์œผ๋กœ ํ”ผ๋“œ๋ฐฑ์— ๋Œ€ํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.

์งง์€ ํ…Œ์ŠคํŠธ ์ฃผ๊ธฐ

๊ธฐ์กด์˜ ๊ฐœ๋ฐœ์—์„œ๋Š” ์ œํ’ˆ ์ „์ฒด์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํด์ด ๊ธธ๊ณ  ๋ณต์žกํ–ˆ๋‹ค.

CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” ์ฝ”๋“œ์˜ ์–‘์ด ๊ณ„์†ํ•ด์„œ ๊ฐ์†Œํ•˜๊ณ  ์žˆ์–ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋” ์ด์ƒ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐœ๋ฐœ ๋ฏผ์ฒฉ์„ฑ ํ–ฅ์ƒ

๊ฐœ๋ฐœ ํŒ€์€ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์กฐ์ง์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ฆ‰๊ฐ์ ์œผ๋กœ ๋Œ€์‘ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ ์‘๋‹ต์„ฑ์ด ํ–ฅ์ƒ๋จ์— ๋”ฐ๋ผ, ๊ธฐ์—…์€ ํ•„์š”ํ•œ ์‹œ์ ์— ์ •ํ™•ํžˆ ๊ฐ•๋ ฅํ•˜๊ณ  ์ „๋ฌธ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

Last updated