IBM Bluemix Continuous Delivery ์„œ๋น„์Šค๊ฐ€ ๋“œ๋””์–ด ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ๋ฅผ ๋๋‚ด๊ณ  ์ •์‹ ์„œ๋น„์Šค๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํ˜์‹ ์ ์ธ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Continuous Delivery ๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ์—… ์ˆ˜์ค€์œผ๋กœ ๋น ๋ฅธ ๋ฐฐํฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Continuous Delivery ์„œ๋น„์Šค๋Š” ์ด๋ฏธ ์ต์ˆ™ํ•œ Delivery Pipeline, Eclipse Orion Web IDE ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ๋„๊ตฌ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Open Toolchain fabric ๋“ฑ์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์—๋Š” ์‹œ๋ฒ” ๋‹จ๊ณ„์˜ IBM Cloud DevOps Insights ๋„๊ตฌ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋ฐฐํฌ์˜ ์„ฑ๊ณต ๊ฐ€๋Šฅ์„ฑ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Continuous Delivery ๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”

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

์˜ค๋Š˜ ๋ฐ”๋กœ ํ™œ์šฉํ•˜๊ณ  ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ Continuous Delivery ๋ฅผ ์‹œ์ž‘ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 1: GitHub ์—์„œ Bluemix ๋กœ ๋ฐ”๋กœ ๋ฐฐํฌํ•˜๊ธฐ

๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹น์žฅ ์žˆ๋‹ค๋ฉด, GitHub.com ์˜ ์ €์žฅ์†Œ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ„๋‹จํ•œ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•ด์„œ Cloud Foundry ๋‚˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•˜๋„๋ก ํ†ตํ•ฉ ๊ฐ€
๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Delivery Pipeline ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ดํ”„๋ผ์ธ์„ ์„ค์ •ํ•  ๋•Œ Git ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œ(clone)ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌ(fork)ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ํŒŒ์ดํ”„๋ผ์ธ์€ ํ•ด๋‹น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ๋ฐฐ์น˜ํ•˜๊ฒŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ํด๋ฆญ ๋ช‡๋ฒˆ์œผ๋กœ GitHub ์ด์Šˆ์™€ ์†Œ์Šค ๊ด€๋ฆฌ ์ €์žฅ์†Œ, ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ํฌํ•จํ•˜๋Š” ๋„๊ตฌ ์ฒด์ธ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

b-pipeline1

GitHub ์ €์žฅ์†Œ์— ์†Œ์Šค๋ฅผ ํ‘ธ์‹œํ• ๋•Œ๋งˆ๋‹ค ๋นŒ๋“œ์™€ ๋ฐฐํฌ๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์„ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค๋ฅธ ๋‹จ๊ณ„๋‚˜ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ๋„๊ตฌ ๋ชฉ
๋ก์—์„œ ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 2: ์—…๊ณ„๋ฅผ ์„ ๋„ํ•˜๋Š” ๋„๊ตฌ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ๊บผ๋ฒˆ์— ๊ตฌ์ถ•ํ•˜๊ธฐ

์ด๋ฏธ ํด๋ผ์šฐ๋“œ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ํ˜„์žฌ์˜ ๋ฐฐํฌ ๊ณผ์ •์€ ํŒŒ์ดํ”„๋ผ์ธ ํ•˜๋‚˜๋กœ ๋๋‚˜์ง€ ์•Š๊ณ , ์•ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ํ†ตํ•ฉ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„๊ตฌ ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜์˜ Slack, PagerDuty, Sauce Labs ๋“ฑ์˜ ์ด๋ฏธ ํ†ตํ•ฉ๋œ ๋„๊ตฌ ๋ชจ์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์„ ์ž์„ธํžˆ ๋ณด๋ฉด ์ด ๋„๊ตฌ ์ฒด์ธ์€ ์„ธ๊ฐ€์ง€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ์ด๋ฃจ์–ด์ง„ ์˜จ๋ผ์ธ ์ƒ์  ์˜ˆ์ œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ ์ฒด์ธ์€ ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ๋ฐฐํฌ, ์†Œ์Šค ๊ด€๋ฆฌ, ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ, ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ, ์ด์Šˆ ๊ด€๋ฆฌ, ์˜จ๋ผ์ธ ์†Œ์Šค ํŽธ์ง‘์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. http://bluemix.net/devops/create ๋งํฌ์— ๋” ๋‹ค์–‘ํ•œ ํ…œํ”Œ๋ฆฟ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ํˆด์ฒด์ธ ์‹œ์ž‘ํ•˜๊ธฐ

microserves-toolchain

์„ค์ • ๊ณผ์ •์—์„œ ์„ธ๊ฐœ์˜ GitHub ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œ(clone) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ €์žฅ์†Œ๋Š” ๋ณ„๋„๋กœ ๋…๋ฆฝ์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ๋”ฐ๋กœ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„
ํ•ด์„œ Eclipse Orion ๊ธฐ๋ฐ˜์˜ ๋‚ด์žฅ๋œ ๊ธฐ๋ณธ ์›น ๊ฐœ๋ฐœํˆด(IDE)์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ DevOps Insights ์‹œ๋ฒ” ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ž๋™ํ™”๋œ ์œ ๋‹› ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์™€
์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฐฐํฌ ์ •์ฑ…์„ ์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ์จ๋“œํŒŒํ‹ฐ ๋„๊ตฌ๋ฅผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์„œ๋น„์Šค์˜ ๊ณ„์ •์ด ํ•„์š”ํ•˜์ง€๋งŒ, ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ
์ง€ ์•Š๋‹ค๋ฉด ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ• ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. “์ž‘์„ฑ” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋„๊ตฌ ์ฒด์ธ์ด ์ค€๋น„๋ฉ๋‹ˆ๋‹ค.

b-toolchain

catalog-api ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์˜ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋ˆŒ๋Ÿฌ์„œ ๊ฐœ๋ฐœ(DEV), ํ…Œ์ŠคํŠธ(TEST), ์šด์˜(PROD) ํ™˜๊ฒฝ์— ์–ด๋–ป๊ฒŒ ๋นŒ๋“œํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฐฐํฌํ•˜๋„๋ก ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด
์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ gate ์ž‘์—…์„ ์‚ดํŽด๋ณด๋ฉด DevOps Insights ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

b-pipeline2

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

b-controlcenter

๋ฏธ๋ฆฌ ์„ค์ •๋œ decision gate ๋ฅผ ํ…Œ์ŠคํŠธํ•ด ๋ณด๋ ค๋ฉด ์ฃผ์„์„ ํ‘ธ๋Š” ์ •๋„๋กœ ์ฝ”๋“œ๋ฅผ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด catalog-api ์ฝ”๋“œ์—์„œ /routes/item.js ํŒŒ์ผ
์„ ์ˆ˜์ •ํ•˜์—ฌ #loadTest() ์—์„œ ์ฃผ์„์„ ํ’€์–ด์ค๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์œ ๋‹› ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ๋น„์œจ์ด ์ •์ฑ…๊ฐ’๋ณด๋‹ค ๋‚ฎ์•„์ง€๊ฒŒ ๋ฉ
๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ณ  ํ‘ธ์‹œํ•˜๋ฉด catalog-api ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž๋™์œผ๋กœ ์ƒˆ ๋นŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ œํ•œ์œผ๋กœ ๋ฐฐํฌ๋ฅผ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

b-pipeline3

ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ž‘์—… ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ด์— ๊ด€๋ จ๋œ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ณด๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

b-decisionreport