Azure DevOps๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์ •์  ๋ถ„์„ ๋„๊ตฌ

Azure DevOps๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์ •์  ๋ถ„์„ ๋„๊ตฌ: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ทœ๋ชจ์˜ ์‹คํ–‰ ์ธ์‹ SAST

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

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

ํ˜„๋Œ€ํ™” ์œ„ํ—˜ ๋ช…ํ™•์„ฑ

Smart TS XL์€ ์Šค์บ๋„ˆ ์ถœ๋ ฅ์„ ๋™์ž‘ ๋ฐ ์ข…์†์„ฑ ์ปจํ…์ŠคํŠธ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ Azure DevOps ๊ฒŒ์ดํŠธ ๊ฒฐ์ •์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ ํƒ์ƒ‰

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

๋”ฐ๋ผ์„œ Azure DevOps์šฉ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ‰๊ฐ€ํ•˜๋ ค๋ฉด ๊ธฐ๋Šฅ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ค‘์‹ฌ์—์„œ ์‹คํ–‰ ๋™์ž‘ ์ค‘์‹ฌ์œผ๋กœ ๊ด€์ ์„ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ์งˆ๋ฌธ์€ ๋ถ„์„์ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์›Œํฌํ”Œ๋กœ์™€ ์–ด๋–ป๊ฒŒ ํ†ตํ•ฉ๋˜๋Š”์ง€, ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ •๊ทœํ™”๋˜๊ณ  ๋ฆด๋ฆฌ์Šค ์ฆ๊ฑฐ๋กœ ์–ด๋–ป๊ฒŒ ๋ณด์กด๋˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฐœ๊ฒฌ ์‚ฌํ•ญ์„ ์ข…์†์„ฑ ๊ตฌ์กฐ ๋ฐ ๋ฐฐํฌ ์œ„ํ—˜๊ณผ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€์— ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค‘์‹ฌ ํ™˜๊ฒฝ์—์„œ ์ •์  ๋ถ„์„์€ ์ฝ”๋“œ ์Šค์บ”๋ณด๋‹ค๋Š” ๊ทœ๋ชจ, ๋ณ€๊ฒฝ ์†๋„ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ์••๋ ฅ ํ•˜์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์˜์‚ฌ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐ ๋” ์ค‘์ ์„ ๋‘๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ฐจ๋ก€

Azure DevOps ํ™˜๊ฒฝ์˜ Smart TS XL: ๋Œ€๊ทœ๋ชจ ์ •์  ๋ถ„์„์„ ์œ„ํ•œ ์‹คํ–‰ ์ธ์‹ ์ธ์‚ฌ์ดํŠธ

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Azure DevOps ์กฐ์ง์€ ์ •์  ๋ถ„์„์˜ ํšจ๊ณผ๊ฐ€ ๊ทœ์น™ ํ’ˆ์งˆ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ, ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์  ๋งฅ๋ฝ์ด ๋ถ€์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œํ•œ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ ์  ๋” ๋งŽ์ด ๋ฐœ๊ฒฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Smart TS XL์€ ์‹คํ–‰ ๋ฐ ์ข…์†์„ฑ ์ธ์‚ฌ์ดํŠธ ๋ ˆ์ด์–ด ์—ญํ• ์„ ํ•จ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ ๋ฐฐํฌ ํ™˜๊ฒฝ ์ „๋ฐ˜์— ๊ฑธ์ณ ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™œ์šฉ, ์šฐ์„ ์ˆœ์œ„ ์ง€์ • ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. Smart TS XL์˜ ๊ฐ€์น˜๋Š” ๊ธฐ์กด SAST ๋„๊ตฌ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์•„ํ‚คํ…ํŠธ, ํ”Œ๋žซํผ ํŒ€ ๋ฐ ์œ„ํ—˜ ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์˜์‚ฌ ๊ฒฐ์ • ํ™˜๊ฒฝ์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜๋ฏธ ์žˆ๋Š” SAST ์šฐ์„ ์ˆœ์œ„ ์ง€์ •์„ ์œ„ํ•œ ํ•„์ˆ˜ ์กฐ๊ฑด์œผ๋กœ์„œ ์‹คํ–‰ ๊ฒฝ๋กœ ์ธ์‹

Azure DevOps์— ํ†ตํ•ฉ๋œ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ, ํ•จ์ˆ˜ ๋˜๋Š” ๊ทœ์น™ ๋ฒ”์œ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ธ๋ถ„ํ™” ์ˆ˜์ค€์€ ๋กœ์ปฌ ๊ฒฐํ•จ ๊ฐ์ง€์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, ๋ฐœ๊ฒฌ๋œ ์˜ค๋ฅ˜๊ฐ€ ํ”„๋กœ๋•์…˜ ์‹คํ–‰์—์„œ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ฐฐํฌ ๊ฒฐ์ •์ด ์ขŒ์šฐ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ถˆ์ถฉ๋ถ„ํ•ด์ง‘๋‹ˆ๋‹ค. Smart TS XL์€ ์‹คํ–‰ ๊ฒฝ๋กœ ์ธ์‹์„ ๋„์ž…ํ•˜์—ฌ ๊ตฌ๋ฌธ์  ๊ทผ์ ‘์„ฑ์ด ์•„๋‹Œ ์‹ค์ œ ์ œ์–ด ํ๋ฆ„์˜ ๊ด€์ ์—์„œ ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

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

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

์‹คํ–‰ ์ค‘์‹ฌ์ ์ธ ์ฃผ์š” ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

ํ”Œ๋žซํผ ์†Œ์œ ์ž์™€ ์„ค๊ณ„์ž์—๊ฒŒ ์žˆ์–ด ์‹คํ–‰ ๊ฒฝ๋กœ ์ธ์‹์€ ์ •์  ๋ถ„์„์„ ๋‹จ์ˆœํ•œ ๊ทœ์ • ์ค€์ˆ˜ ์‹ ํ˜ธ๊ฐ€ ์•„๋‹Œ ์ •๋ฐ€ํ•œ ๋„๊ตฌ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ๊ฐ„ ๋ฐ ํŒ€ ๊ฐ„ ์œ„ํ—˜ ๊ฐ€์‹œ์„ฑ์„ ์œ„ํ•œ ์ข…์†์„ฑ ํ‘œ๋ฉด ๋งคํ•‘

Azure DevOps ์กฐ์ง์€ ์ข…์ข… ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ, ํŒ€ ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์— ์†Œ์œ ๊ถŒ์„ ๋ถ„์‚ฐํ•˜์—ฌ ๊ทœ๋ชจ๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฒฝ๊ณ„ ๋‚ด์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ๊ณต์œ  ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐœ๊ฒฌ๋œ ๋‚ด์šฉ์ด ํ•˜์œ„ ๊ตฌ์„ฑ ์š”์†Œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Smart TS XL์€ ์ฝ”๋“œ ๋‹จ์œ„๊ฐ€ ๋” ๋„“์€ ์‹œ์Šคํ…œ ๋™์ž‘์— ์–ด๋–ป๊ฒŒ ๊ด€์—ฌํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์ข…์†์„ฑ ํ‘œ๋ฉด ๋งต์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

Smart TS XL์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ •์  ๋ถ„์„ ์ถœ๋ ฅ์˜ ์ข…์†์„ฑ ์ธ์‹ ํ•ด์„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

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

์šด์˜์ ์ธ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ, ์ด๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํŒ€์ด ์‹ฌ๊ฐ๋„ ๋“ฑ๊ธ‰๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜ํ–ฅ ๋ฒ”์œ„๊นŒ์ง€ ๊ณ ๋ คํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์„ฑ์ด ๋†’์€ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ค‘๊ฐ„ ์‹ฌ๊ฐ๋„ ๋ฌธ์ œ๋Š” ์˜ํ–ฅ ๋ฒ”์œ„๊ฐ€ ๋‚ฎ์€ ๊ฒฝ๋กœ์— ๊ตญํ•œ๋œ ์‹ฌ๊ฐ๋„ ๋†’์€ ๋ฌธ์ œ๋ณด๋‹ค ๋” ์ฆ‰๊ฐ์ ์ธ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜์กด์„ฑ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์šฐ์„ ์ˆœ์œ„ ์ง€์ •์€ ๋ฌธ์ œ ํ•ด๊ฒฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ์ •ํ™”ํ•˜๊ณ  ๊ณผ์ž‰ ๋Œ€์‘๊ณผ ๊ณผ์†Œ ๋Œ€์‘ ์‚ฌ์ด์˜ ๋ณ€๋™์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

Azure ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด ์ •์  ๋ถ„์„ ์‹ ํ˜ธ์˜ ๋„๊ตฌ ๊ฐ„ ํ•ฉ๋ฆฌํ™”

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์€ ์ฝ”๋“œ ํ’ˆ์งˆ, ๋ณด์•ˆ, ๊ตฌ์„ฑ ๋ฐ ์ธํ”„๋ผ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํฌ๊ด„ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋„๊ตฌ๋Š” ์œ ํšจํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ, ์ข…ํ•ฉ์ ์ธ ์‹ ํ˜ธ๋Š” ์ข…์ข… ์ผ๊ด€์„ฑ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ๊ฐ๋„ ์ƒ์ถฉ, ์ค‘๋ณต๋˜๋Š” ๊ฒฐ๊ณผ, ๊ทธ๋ฆฌ๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ์ค€์„ ์œผ๋กœ ์ธํ•ด ๋ช…ํ™•ํ•œ ์ด์œ  ์—†์ด ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ฐจ๋‹จ๋˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ํ•ฉ๋ฆฌํ™” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ๋™์ผํ•œ ์‹คํ–‰ ๊ฒฝ๋กœ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋„๊ตฌ ์ „๋ฐ˜์— ๊ฑธ์นœ ๊ฒฐ๊ณผ์˜ ์ƒ๊ด€๊ด€๊ณ„
  • ์„œ๋กœ ๋‹ค๋ฅธ ์Šค์บ๋„ˆ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ๊ฒน์น˜๋Š” ๊ฒฝ๊ณ  ์‹๋ณ„
  • ์ง€์—ญ์  ๋ฌธ์ œ์™€ ์‹œ์Šคํ…œ์  ์œ„ํ—˜ ํŒจํ„ด์˜ ๋ถ„๋ฆฌ
  • ๊ฐ์‚ฌ ๋ฐ ๋ฆด๋ฆฌ์Šค ๊ฒ€ํ†  ์ค‘ ๋” ํƒ€๋‹นํ•œ ๊ฒŒ์ดํŠธ ๊ฒฐ์ •

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

Azure DevOps ์ œ๊ณต ์ฃผ๊ธฐ์— ๋งž์ถ˜ ํ˜„๋Œ€ํ™” ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ จ ์ธ์‚ฌ์ดํŠธ

๋งŽ์€ Azure DevOps ํ™˜๊ฒฝ์—์„œ ํด๋ผ์šฐ๋“œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์„œ๋น„์Šค ๋ถ„ํ•ด ๋ฐ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ๊ต์ฒด์™€ ๊ฐ™์€ ํ˜„๋Œ€ํ™” ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„๋งŒ์œผ๋กœ๋Š” ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ์ œํ•œ์ ์ธ ์ง€์นจ๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„์€ ๋ฌธ์ œ๋ฅผ ๊ฐ•์กฐํ•˜์ง€๋งŒ, ๋ณ€๊ฒฝ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‚˜ ๋ณ€๊ฒฝ์— ๊ณผ๋„ํ•œ ์œ„ํ—˜์ด ๋”ฐ๋ฅด๋Š” ๋ถ€๋ถ„์„ ๋ช…ํ™•ํžˆ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

ํ˜„๋Œ€ํ™” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์  ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ ์ง„์  ๋ณ€ํ™”์— ์ €ํ•ญํ•˜๋Š” ๊ธด๋ฐ€ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ์‹คํ–‰ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ ํ™•๋ณด
  • ์˜์กด์„ฑ ๊ฒฉ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ„ํ—˜๋„๊ฐ€ ๋‚ฎ์€ ๋ฆฌํŒฉํ† ๋ง ์ง„์ž…์  ์‹๋ณ„
  • ๊ณต์œ  ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋ช…ํ™•ํžˆ ํ•จ์œผ๋กœ์จ ๋ณ‘๋ ฌ ์‹คํ–‰ ์ „๋žต์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ๊ณ„์  ์ด์ฃผ ๋…ธ๋ ฅ ์ค‘ ํ‡ด๋ณด ๊ฐ€๋Šฅ์„ฑ ๊ฐ์†Œ

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

CTO, ํ”Œ๋žซํผ ์ฑ…์ž„์ž ๋ฐ ์œ„ํ—˜ ๊ด€๋ฆฌ ๋‹ด๋‹น์ž๋ฅผ ์œ„ํ•œ ์˜์‚ฌ ๊ฒฐ์ • ์ง€์›

Smart TS XL์˜ ์ฃผ์š” ์‚ฌ์šฉ์ž์ธต์€ ๊ฐœ๋ฐœ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐœ๋ณ„ ์ฝ”๋“œ ๋ฌธ์ œ๋ณด๋‹ค๋Š” ๊ฒฐ๊ณผ๋ฌผ ์ œ๊ณต์— ์ฑ…์ž„์ด ์žˆ๋Š” CTO, ํ”Œ๋žซํผ ์†Œ์œ ์ž ๋ฐ ์œ„ํ—˜ ๊ด€๋ฆฌ์ž๊นŒ์ง€ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์˜ ๊ธฐ๋Šฅ์€ ์ด๋Ÿฌํ•œ ์—ญํ• ์˜ ๋‹ด๋‹น์ž๋“ค์ด Azure DevOps ํ™˜๊ฒฝ์—์„œ ์ผ์ƒ์ ์œผ๋กœ ์ง๋ฉดํ•˜๋Š” ์งˆ๋ฌธ๋“ค์„ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์งˆ๋ฌธ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ ์ค‘ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ์‹ค์ œ ๋ฐฐ์†ก ์œ„ํ—˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ๊ณต์œ ๋œ ์˜์กด์„ฑ์ด ๋กœ์ปฌ ๊ฒฐํ•จ์˜ ์˜ํ–ฅ์„ ์ฆํญ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ
  • ํ˜„๋Œ€ํ™” ํ™œ๋™์ด ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ ์‹คํ–‰ ๋™์ž‘์„ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”์‹œํ‚ค๋Š”์ง€
  • ํŒŒ์ดํ”„๋ผ์ธ ๊ฒŒ์ดํŠธ๊ฐ€ ๊ณ ์žฅ๋‚œ ์ด์œ ์™€ ๊ทธ ๊ณ ์žฅ์ด ์‹ค์ œ ๋…ธ์ถœ์„ ๋ฐ˜์˜ํ•˜๋Š”์ง€ ์—ฌ๋ถ€

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

์Šค์บ๋„ˆ ์ค‘์‹ฌ์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋„˜์–ด์„œ๊ณ ์ž ํ•˜๋Š” ์กฐ์ง์—๊ฒŒ Smart TS XL์€ Azure DevOps ๋‚ด์—์„œ ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ๊ฑฐ๋ฒ„๋„Œ์Šค, ํ˜„๋Œ€ํ™” ๋ฐ ๋ฆด๋ฆฌ์Šค ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ์‹์„ ์žฌ์ •๋ฆฝํ•˜๋Š” ์ธ์‚ฌ์ดํŠธ ํ”Œ๋žซํผ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์šฉ ์ •์  ๋ถ„์„ ๋„๊ตฌ: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ SAST ์—”์ง„ ๋น„๊ต

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

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ •์  ๋ถ„์„์ด ๋ฐฐํฌ ์ธํ”„๋ผ์˜ ์ผ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋„๊ตฌ๋Š” ์‹คํ–‰ ๊ฒฐ์ •์„ฑ, ๊ฑฐ๋ฒ„๋„Œ์Šค ์ ํ•ฉ์„ฑ, ๋ฌธ์ œ ํ•ด๊ฒฐ ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๋ชจ์ˆœ๋˜๋Š” ์‹ ํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ณ‘๋ ฌ ์Šค์บ” ์ „๋žต๊ณผ ๊ณต์กดํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด๋Ÿฌํ•œ ์šด์˜ ํ˜„์‹ค์— ๋ถ€ํ•ฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ Azure DevOps ํ™˜๊ฒฝ์—์„œ ๊พธ์ค€ํžˆ ์ฑ„ํƒ๋˜๊ณ  ์žˆ๋Š” ๋„๊ตฌ๋“ค์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Azure DevOps ๋ชฉํ‘œ์— ๋งž๋Š” ์ตœ๊ณ ์˜ ์ •์  ๋ถ„์„ ๋„๊ตฌ

  • ์—ฌ๋Ÿฌ ํŒ€์— ๊ฑธ์ณ ์ค‘์•™ ์ง‘์ค‘์‹ ํ’ˆ์งˆ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค.: ์†Œ๋‚˜ํ๋ธŒ
  • SARIF ์ถœ๋ ฅ๊ฐ’์„ ํ™œ์šฉํ•œ ํ‘œ์ค€ํ™”๋œ ๋ณด์•ˆ ๊ฒ€์‚ฌ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๋ณด์•ˆ DevOps
  • ๊ณ ์œ„ํ—˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์‹ฌ์ธต ์˜๋ฏธ๋ก ์  ๋ณด์•ˆ ๋ถ„์„: GitHub ๊ณ ๊ธ‰ ๋ณด์•ˆ(CodeQL)
  • ๊ทœ์ œ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์ •์ฑ… ์ˆ˜์ค€์˜ SAST์˜คํ”ˆํ…์ŠคํŠธ ํฌํ‹ฐํŒŒ์ด
  • ๋น ๋ฅธ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์Šค์บ” ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ๊ธฐ๋Šฅ: ์…ˆ๊ทธ๋ ™
  • ๊ทœ์ • ์ค€์ˆ˜ ๋ณด๊ณ  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ”„๋กœ๊ทธ๋žจ: ์ฒดํฌ๋งˆ๋ฅดํฌ์Šค
  • ๋Œ€๊ทœ๋ชจ C/C++ ๋ฐ ์•ˆ์ „ ํ•„์ˆ˜ ์‹œ์Šคํ…œ: ํด๋ผ๋ฆฌ์Šค์˜ ์ปค๋ฒ„๋ฆฌํ‹ฐ

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ๊ฐ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ดํŽด๋ณด๊ณ  ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ, ๊ฐ€๊ฒฉ ํŠน์„ฑ, Azure ํŒŒ์ดํ”„๋ผ์ธ์—์„œ์˜ ์‹คํ–‰ ๋™์ž‘, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™•์žฅ ํ˜„์‹ค ๋ฐ ์žฅ๊ธฐ์ ์ธ ๋„์ž…์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ตฌ์กฐ์  ์ œํ•œ ์‚ฌํ•ญ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

SonarQube๋ฅผ ํ™œ์šฉํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฐ ๋‹ค๊ตญ์–ด ๊ธฐ์ค€์„  ์ œ์–ด

๊ณต์‹ ์‚ฌ์ดํŠธ: SonarQube

SonarQube๋Š” ์ •์  ๋ถ„์„์ด ๊ฐœ๋ฐœ์ž ์ธก ์ž๋ฌธ ๋„๊ตฌ๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๊ธฐ๋Šฅํ•ด์•ผ ํ•˜๋Š” Azure DevOps ํ™˜๊ฒฝ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. SonarQube์˜ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ์€ ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ํŒ€ ์ „์ฒด์— ๊ฑธ์ณ ์ผ๊ด€๋œ ๊ทœ์น™ ์„ธํŠธ์™€ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ์ ์šฉํ•˜๋Š” ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ๋ถ„์„ ํ”Œ๋žซํผ์„ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์€ ๋นŒ๋“œ ๋‹จ๊ณ„์˜ ์ผ๋ถ€๋กœ ์Šค์บ๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜์ง€๋งŒ, ๊ฒฐ๊ณผ, ๊ธฐ์ค€์„  ๋ฐ ์ž„๊ณ„๊ฐ’์— ๋Œ€ํ•œ ์ตœ์ข… ํ•ด์„์€ SonarQube ํ”Œ๋žซํผ ์ž์ฒด์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

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

๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ SonarQube๋Š” ํฌ๊ด„์ ์ธ ์œ„ํ—˜ ๋ถ„์„ ์—”์ง„๋ณด๋‹ค๋Š” ํ’ˆ์งˆ ๊ธฐ์ค€์„  ์—ญํ• ์„ ํ•  ๋•Œ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. Azure DevOps์—์„œ SonarQube์˜ ํšจ๊ณผ๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๋ ค๋ฉด ์ฒด๊ณ„์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ํ‘œ์ค€ํ™”, ํ†ต์ œ๋œ ๊ทœ์น™ ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ํ’ˆ์งˆ ๊ด€๋ฆฌ์™€ ์‹ฌ์ธต์ ์ธ ์•„ํ‚คํ…์ฒ˜ ์œ„ํ—˜ ํ‰๊ฐ€๋ฅผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ช…ํ™•ํ•œ ๋ถ„๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

Azure Pipelines์—์„œ ํ‘œ์ค€ํ™”๋œ ๋ณด์•ˆ ์Šค์บ” ๋ฐ SARIF ๊ธฐ๋ฐ˜ ์ฆ๊ฑฐ๋ฅผ ์œ„ํ•œ Microsoft ๋ณด์•ˆ DevOps

๊ณต์‹ ์‚ฌ์ดํŠธ: Microsoft Security DevOps

Microsoft Security DevOps๋Š” Azure DevOps ํ™˜๊ฒฝ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ธฐ์—… ๋ฌธ์ œ, ์ฆ‰ ํŒŒํŽธํ™”๋œ ํˆด์ฒด์ธ๊ณผ ์ž„์˜์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•œ ์ผ๊ด€์„ฑ ์—†๋Š” ๋ณด์•ˆ ์Šค์บ” ๋™์ž‘์„ ํ•ด๊ฒฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Microsoft Security DevOps๋Š” ๋‹จ์ผ ์ •์  ๋ถ„์„ ์—”์ง„์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋Œ€์‹ , ์—ฌ๋Ÿฌ Microsoft ์ง€์› ๋ณด์•ˆ ๋ถ„์„๊ธฐ๋ฅผ ํŒŒ์ดํ”„๋ผ์ธ ์ „๋ฐ˜์— ๊ฑธ์ณ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์„ค์น˜, ๊ตฌ์„ฑ ๋ฐ ์‹คํ–‰ํ•˜๋Š” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ณ„์ธต ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ์ธก๋ฉด์—์„œ ์ด ๋ชจ๋ธ์€ Azure DevOps ํ”Œ๋žซํผ ๊ฑฐ๋ฒ„๋„Œ์Šค์™€ ์ž˜ ๋ถ€ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ์Šค์บ๋‹์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ณ„ ์‚ฌ์šฉ์ž ์ง€์ •์ด ์•„๋‹Œ ํ‘œ์ค€ํ™”๋œ ํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ํ…œํ”Œ๋ฆฟ๊ณผ ํ•จ๊ป˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ด์‹ ๊ฐ€๋Šฅํ•œ ์ •์ฑ… ์ •์˜๋กœ ํ‘œํ˜„๋˜๋ฏ€๋กœ ๋ณด์•ˆ ํŒ€์€ ์—์ด์ „ํŠธ ํ’€ ๋ฐ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์— ๊ฑธ์ณ ๊ฒฐ์ •๋ก ์  ์‹คํ–‰์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ค‘์•™์—์„œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Azure Pipelines ๋‚ด๋ถ€ ์‹คํ–‰ ๋™์ž‘์€ ๋ฐ˜๋ณต์„ฑ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. Microsoft Security DevOps๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ ๋กœ์ง๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ „์šฉ ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„๋กœ ๋ฐฐํฌ๋˜๋ฏ€๋กœ ์ปดํŒŒ์ผ ๋ณ€๋™์„ฑ๊ณผ ์Šค์บ” ๊ฒฐ๊ณผ ๊ฐ„์˜ ์—ฐ๊ด€์„ฑ์„ ์ค„์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ๋Š” SARIF ์ถœ๋ ฅ์— ์ค‘์ ์„ ๋‘๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋งž์ถคํ˜• ๋ณ€ํ™˜ ๋กœ์ง ์—†์ด๋„ Azure DevOps ๋นŒ๋“œ ์š”์•ฝ, ๋ณด์•ˆ ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ํ•˜์œ„ ์ฆ๊ฑฐ ์‹œ์Šคํ…œ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ธฐ๋Šฅ์ ์ธ ์ธก๋ฉด์—์„œ Microsoft Security DevOps๋Š” ์ด๊ธฐ์ข… ํŒ€๊ณผ ์–ธ์–ด ํ™˜๊ฒฝ์— ๊ฑธ์ณ ๋ณด์•ˆ ์Šค์บ”์„ ์ผ๊ด€๋˜๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€๋œ ๋„๊ตฌ ๋ฒ„์ „ ๊ด€๋ฆฌ, ํ‘œ์ค€ํ™”๋œ ๋ณด๊ณ ์„œ, Azure DevOps ์ •์ฑ… ์‹œํ–‰๊ณผ์˜ ๊ฐ„ํŽธํ•œ ํ†ตํ•ฉ์ด ์ฃผ์š” ๊ฐ•์ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ๊ณ ๋„๋กœ ๋งž์ถคํ™”๋œ ๊ทœ์น™ ์ž‘์„ฑ๋ณด๋‹ค๋Š” ๋ณด์•ˆ ํƒœ์„ธ์˜ ์ผ๊ด€์„ฑ๊ณผ ๊ฐ์‚ฌ ์ค€๋น„ ํƒœ์„ธ๋ฅผ ์šฐ์„ ์‹œํ•˜๋Š” ์กฐ์ง์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

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

Azure DevOps ์•„ํ‚คํ…์ฒ˜ ๋‚ด์—์„œ Microsoft Security DevOps๋Š” ์ผ๊ด€๋œ ์ฆ๊ฑฐ ๋ฐ ์ ์šฉ ๋ฒ”์œ„ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋ณธ ๋ณด์•ˆ ์Šค์บ” ๊ณ„์ธต์œผ๋กœ ๋ฐฐ์น˜๋  ๋•Œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ด๋ฉฐ, ๋ณด๋‹ค ์ „๋ฌธํ™”๋œ ๋„๊ตฌ๋Š” ์œ„ํ—˜๋„๊ฐ€ ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์‹ฌ์ธต ๋ถ„์„์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Azure ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์˜๋ฏธ๋ก ์  ๋ณด์•ˆ ๋ถ„์„์„ ์œ„ํ•œ CodeQL์„ ์‚ฌ์šฉํ•œ GitHub ๊ณ ๊ธ‰ ๋ณด์•ˆ

๊ณต์‹ ์‚ฌ์ดํŠธ: GitHub ๊ณ ๊ธ‰ ๋ณด์•ˆ

GitHub Advanced Security with CodeQL์€ ํŒจํ„ด ๋งค์นญ๋ณด๋‹ค๋Š” ์˜๋ฏธ๋ก ์  ์ถ”๋ก ๊ณผ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ถ„์„์ด ํ•„์š”ํ•œ ๋ณด์•ˆ ์œ ํ˜•์„ ๋ถ„์„ํ•ด์•ผ ํ•˜๋Š” Azure DevOps ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์˜ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ์€ ์ฟผ๋ฆฌ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜์˜ ์ฝ”๋“œ ํ‘œํ˜„์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜, ํŒŒ์ผ, ์‹คํ–‰ ๊ฒฝ๋กœ ์ „๋ฐ˜์— ๊ฑธ์นœ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Azure Repos ํ™˜๊ฒฝ์—์„œ ์ด ๋ชจ๋ธ์€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค์™€ ํ†ตํ•ฉ๋œ ์ฝ”๋“œ ์Šค์บ” ๊ฒฝ๊ณ  ํ˜•ํƒœ๋กœ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ์Šค์บ” ์›Œํฌํ”Œ๋กœ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐ€๊ฒฉ ์ฑ…์ • ๋ฐฉ์‹์€ GitHub Advanced Security ๋ผ์ด์„ ์Šค์™€ ์—ฐ๊ด€๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” GitHub ๋ณด์•ˆ ๋„๊ตฌ๋ฅผ ํ‘œ์ค€ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Azure DevOps ์กฐ์ง์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์šฉ ๋ชจ๋ธ์€ ํ”Œ๋žซํผ ์—”์ง€๋‹ˆ์–ด๋ง ์˜ˆ์‚ฐ๋ณด๋‹ค๋Š” ๊ธฐ์—… ๋ณด์•ˆ ์˜ˆ์‚ฐ์— ๋งž์ถฐ ์ฑ…์ •๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ๋„์ž… ํŒจํ„ด์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub Advanced Security๊ฐ€ ์ด๋ฏธ GitHub์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ „๋ฐ˜์— ๊ฑธ์ณ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, CodeQL ์Šค์บ๋‹์„ Azure DevOps๋กœ ํ™•์žฅํ•˜๋ฉด ๋ณด์•ˆ ์›Œํฌํ”Œ๋กœ ๋ฐ ๋ณด๊ณ  ์˜๋ฏธ ์ฒด๊ณ„์—์„œ ์•„ํ‚คํ…์ฒ˜ ์ผ๊ด€์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋ณด์•ˆ ์ค‘์‹ฌ ๋ถ„์„ ์˜์—ญ ์™ธ์—์„œ๋„ ๊ตฌ์กฐ์  ํ•œ๊ณ„๊ฐ€ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. CodeQL์€ ๋ฒ”์šฉ ํ’ˆ์งˆ ๊ฒ€์ฆ ์—”์ง„์œผ๋กœ ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ํ”Œ๋žซํผ ๊ฑฐ๋ฒ„๋„Œ์Šค ํŒ€์—์„œ ๊ธฐ๋Œ€ํ•˜๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด๋‚˜ ์ฝ”๋“œ ์ƒํƒœ ์ง€ํ‘œ์™€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํŠนํžˆ ์กฐ์ง์ด ์ถฉ๋ถ„ํ•œ ์˜๋ฏธ๋ก ์  ์ „๋ฌธ โ€‹โ€‹์ง€์‹ ์—†์ด ํƒ์ง€ ๋กœ์ง์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ์ฟผ๋ฆฌ ์ž‘์„ฑ ๋ฐ ํŠœ๋‹์— ์šด์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ GitHub Advanced Security with CodeQL์€ Azure DevOps ๋‚ด์˜ ํŠน์ˆ˜ ๋ณด์•ˆ ๋ถ„์„ ๊ณ„์ธต์œผ๋กœ ํ†ตํ•ฉ๋  ๋•Œ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ์ „๋žต ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ชจ๋ธ์ด ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ์ปดํ“จํŒ… ๋ฐ ์šด์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด, ์˜ํ–ฅ๋ ฅ์ด ํฐ ์ทจ์•ฝ์  ์œ ํ˜•์— ์ง‘์ค‘ํ•จ์œผ๋กœ์จ ๋ณด๋‹ค ๊ด‘๋ฒ”์œ„ํ•œ ์Šค์บ” ๋ฐ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ๋ณด์™„ํ•ฉ๋‹ˆ๋‹ค.

์ •์ฑ… ์ˆ˜์ค€์˜ SAST ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ์‹œํ–‰์„ ์œ„ํ•œ OpenText Fortify Static Code Analyzer

๊ณต์‹ ์‚ฌ์ดํŠธ: OpenText Fortify

OpenText Fortify Static Code Analyzer๋Š” ์ •์  ๋ถ„์„์ด ๊ฐœ๋ฐœ์ž ์ƒ์‚ฐ์„ฑ ์ง€์› ๋„๊ตฌ๋ผ๊ธฐ๋ณด๋‹ค๋Š” ๊ณต์‹์ ์ธ ๋ณด์•ˆ ์ œ์–ด ์ˆ˜๋‹จ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” Azure DevOps ํ™˜๊ฒฝ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ์ด ์ œํ’ˆ์˜ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ์€ ์ด๋Ÿฌํ•œ ๋ฐฉํ–ฅ์„ฑ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์„ ์‹คํ–‰์€ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ ๋˜๋Š” ์ „์šฉ ์Šค์บ” ๋‹จ๊ณ„ ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ •์ฑ… ์ •์˜, ์ทจ์•ฝ์  ๋ถ„๋ฅ˜ ์ฒด๊ณ„ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ์›Œํฌํ”Œ๋กœ๋Š” ๋ฐฐํฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ Fortify Software Security Center ๋˜๋Š” Fortify On Demand๋ฅผ ํ†ตํ•ด ์ค‘์•™ ์ง‘์ค‘ํ™”๋ฉ๋‹ˆ๋‹ค.

Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์—์„œ Fortify๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ •์  ๋ถ„์„๊ธฐ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ•˜์œ„ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‹ฐํŒฉํŠธ๋กœ ๊ฒŒ์‹œํ•˜๋Š” ์ „์šฉ ํ™•์žฅ ์ž‘์—…์„ ํ†ตํ•ด ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด 2๊ณ„์ธต ์‹คํ–‰ ๋ชจ๋ธ์ด ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์€ ํ™•์ •์  ์Šค์บ” ์‹คํ–‰ ๋ฐ ์•„ํ‹ฐํŒฉํŠธ ์ƒ์„ฑ์„ ๋‹ด๋‹นํ•˜๊ณ , ์ค‘์•™ ์ง‘์ค‘์‹ Fortify ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ƒ๊ด€ ๊ด€๊ณ„ ๋ถ„์„, ๋ณด๊ณ  ๋ฐ ์ •์ฑ… ์‹œํ–‰์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์—…์€ ์ข…์ข… ์ด ๋ชจ๋ธ์„ ๋ณด์•ˆ ์šด์˜ ์›Œํฌํ”Œ๋กœ์™€ ์—ฐ๊ณ„ํ•˜์—ฌ ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐํฌ ํŒ€๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๊ฒฉ ์ฑ…์ • ๋ฐฉ์‹์€ Fortify๊ฐ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ”Œ๋žซํผ์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ•˜๊ณ  ์žˆ์Œ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด์„ ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜, ์Šค์บ” ๋ณผ๋ฅจ ๋˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ตฌ๋… ๋“ฑ๊ธ‰์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ˆ˜๋งŽ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณด์œ ํ•œ Azure DevOps ํ™˜๊ฒฝ์— ์‹ค์งˆ์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜จ๋ณด๋”ฉ ๊ฒฐ์ •์€ ์‹ ์ค‘ํ•˜๊ณ  ๋ฒ”์œ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค์ •๋˜๋ฉฐ, ๋ชจ๋“  ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๋ณด์•ˆ๋ณด๋‹ค๋Š” ๊ทœ์ œ ๋…ธ์ถœ ์œ„ํ—˜, ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋˜๋Š” ์™ธ๋ถ€ ๊ณต๊ฒฉ ํ‘œ๋ฉด์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ์šฐ์„ ์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๊ตฌ์กฐ์  ํ•œ๊ณ„๋Š” ๊ฐœ๋ฐœ์ž ํ”ผ๋“œ๋ฐฑ ์ง€์—ฐ ๋ฐ ํ†ตํ•ฉ ๋ณต์žก์„ฑ์—์„œ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. Fortify์˜ ์‹ฌ์ธต์ ์ธ ๋ถ„์„ ๊ธฐ๋Šฅ์€ ๋” ๊ธด ์Šค์บ” ์‹œ๊ฐ„๊ณผ ๋” ๋ณต์žกํ•œ ๊ฒฐ๊ณผ ๋ถ„๋ฅ˜ ๊ณผ์ •์„ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์ฒด๊ณ„์ ์ธ ์˜คํƒ์ง€ ์–ต์ œ ๊ด€๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด ์˜คํƒ์ด ๋ˆ„์ ๋˜์–ด ์Šค์บ” ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Fortify๋Š” ๋ณด์•ˆ์— ์ค‘์ ์„ ๋‘๊ธฐ ๋•Œ๋ฌธ์— ํ’ˆ์งˆ ์ค‘์‹ฌ ๋„๊ตฌ๋‚˜ ์‹คํ–‰ ์ •๋ณด ๊ธฐ๋ฐ˜ ๋ถ„์„ ํ”Œ๋žซํผ์„ ๋Œ€์ฒดํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

Azure DevOps ํ™˜๊ฒฝ์—์„œ Fortify๋Š” ์ •์ฑ… ์ˆ˜์ค€์˜ ๋ณด์•ˆ ๊ธฐ๊ด€์œผ๋กœ ํ™œ์šฉ๋  ๋•Œ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. Fortify์˜ ์—ญํ• ์€ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๊ทœ์ œ ๋˜๋Š” ํ‰ํŒ์— ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋ฐฉ์–ด ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฐ์‚ฌ ๊ฐ€๋Šฅํ•œ ๋ณด์•ˆ ํ‰๊ฐ€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ์ˆ˜๋ช…์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋” ๋น ๋ฅด๊ณ  ์ƒํ™ฉ ์ธ์‹์ด ๋›ฐ์–ด๋‚œ ๋„๊ตฌ๋ฅผ ๋ณด์™„ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Azure DevOps ํ™˜๊ฒฝ์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ์›Œํฌํ”Œ๋กœ๋ฅผ ์œ„ํ•œ Checkmarx CxSAST

๊ณต์‹ ์‚ฌ์ดํŠธ: Checkmarx

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

์‹คํ–‰ ๊ด€์ ์—์„œ Checkmarx๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ชจ๋ธ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šค์บ” ์‹คํ–‰์€ ๋ฐฐํฌ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ Azure ํŒŒ์ดํ”„๋ผ์ธ ์—์ด์ „ํŠธ ๋‚ด์—์„œ ๋˜๋Š” Checkmarx ํ”Œ๋žซํผ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์›๊ฒฉ ์—”์ง„์„ ํ†ตํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ๊ธฐ์—…์€ ์Šค์บ” ์„ฑ๋Šฅ์„ ๋นŒ๋“œ ์ธํ”„๋ผ์™€ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์กฐ์ • ๋ณต์žก์„ฑ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฒฐ์ •์„ฑ์€ Azure DevOps์™€ ์Šค์บ” ๋ฐฑ์—”๋“œ ๊ฐ„์˜ ์ผ๊ด€๋œ ์—”์ง„ ๊ตฌ์„ฑ, ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ๋„คํŠธ์›Œํฌ ์•ˆ์ •์„ฑ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

๊ตฌ์กฐ์  ์ œ์•ฝ์€ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜๊ณผ ํ”ผ๋“œ๋ฐฑ ์‹œ์ ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. Checkmarx๋Š” ๊ฑฐ๋ฒ„๋„Œ์Šค์™€ ๋ณด์•ˆ ๋ณด์ฆ์„ ์šฐ์„ ์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒฝ๋Ÿ‰ํ˜• ๋˜๋Š” ์‹คํ–‰ ์ธ์‹ ๋„๊ตฌ์— ๋น„ํ•ด ๋ฐœ๊ฒฌ ์‚ฌํ•ญ์ด ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ํ›„๋ฐ˜์— ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Azure DevOps ์›Œํฌํ”Œ๋กœ์— ์‹ ์ค‘ํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณด์•ˆ ํ”ผ๋“œ๋ฐฑ์ด ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์™ธ๋ถ€์ ์ธ ๊ฒƒ์œผ๋กœ ์ธ์‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Azure DevOps ์•„ํ‚คํ…์ฒ˜์—์„œ Checkmarx๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๋„ค์ดํ‹ฐ๋ธŒ ์Šค์บ๋„ˆ๋ฅผ ๋ณด์™„ํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ(AppSec) ๋„๊ตฌ๋กœ ํ™œ์šฉ๋  ๋•Œ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€๋œ ์œ„ํ—˜ ์ ์ˆ˜ ์‚ฐ์ •, ๊ทœ์ • ์ค€์ˆ˜ ๋ณด๊ณ  ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ๊ฐ€์‹œ์„ฑ์ด ์ฆ‰๊ฐ์ ์ด๊ณ  ์„ธ๋ถ€์ ์ธ ๊ฐœ๋ฐœ์ž ํ”ผ๋“œ๋ฐฑ๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— Checkmarx์˜ ๊ฐ€์น˜๊ฐ€ ๊ฐ€์žฅ ๋†’์Šต๋‹ˆ๋‹ค.

Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋น ๋ฅด๊ณ  ๊ทœ์น™ ๊ธฐ๋ฐ˜์˜ ์ •์  ๋ถ„์„์„ ์œ„ํ•œ Semgrep

๊ณต์‹ ์‚ฌ์ดํŠธ: Semgrep

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

Azure Pipelines์—์„œ ๊ทœ์น™ ์„ธํŠธ์™€ Semgrep ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๋ฉด ์‹คํ–‰ ๋™์ž‘์ด ๋งค์šฐ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Semgrep์€ ์ „์ฒด ๋นŒ๋“œ๋‚˜ ์ค‘๊ฐ„ ํ‘œํ˜„ ์—†์ด ์ฃผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทœ๋ชจ๊ฐ€ ์ค‘๊ฐ„ ์ •๋„์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ๋„ ์Šค์บ” ์‹œ๊ฐ„์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์งง์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•๋ถ„์— ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋Š˜๋ฆฌ์ง€ ์•Š๊ณ ๋„ ๋ชจ๋“  ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—…๋“ค์€ ์ด๋Ÿฌํ•œ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋ฐ ํ’ˆ์งˆ ๊ด€๋ จ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐฐํฌ ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

Semgrep ์ปค๋ฎค๋‹ˆํ‹ฐ ์—๋””์…˜ ๋˜๋Š” Semgrep AppSec ํ”Œ๋žซํผ ์ค‘ ์–ด๋–ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๊ฐ€๊ฒฉ ํŠน์„ฑ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์—๋””์…˜์€ ์ค‘์•™ ์ง‘์ค‘์‹ ๊ฑฐ๋ฒ„๋„Œ์Šค ์—†์ด ๊ทœ์น™ ์‹คํ–‰ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด, ์œ ๋ฃŒ ํ”Œ๋žซํผ์€ ์ค‘์•™ ์ง‘์ค‘์‹ ๊ฒฐ๊ณผ ๊ด€๋ฆฌ, ๊ทœ์น™ ๋ฐฐํฌ, ๋ถ„์„ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Azure DevOps ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ฐจ์ด๊ฐ€ ์šด์˜ ์ธก๋ฉด์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ ์—๋””์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ํŒ€์€ ์ž์œจ์„ฑ๊ณผ ์†๋„๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ„์— ๊ทœ์น™์ด ์„œ๋กœ ๋‹ค๋ฅผ ๊ฒฝ์šฐ ํŒŒํŽธํ™”๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋ฃŒ ํ”Œ๋žซํผ์€ ์ค‘์•™ ์ง‘์ค‘์‹ ์ œ์–ด๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ, ์šด์˜ํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ๊ฑฐ๋ฒ„๋„Œ์Šค ์‹œ์Šคํ…œ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์ ์ธ ์ธก๋ฉด์—์„œ Semgrep์˜ ๊ฐ•์ ์€ ๊ทœ์น™ ์ž‘์„ฑ ๋ฐ ์ ์‘์„ฑ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทœ์น™์€ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šฐ๋ฉฐ ๊ธฐ์—… ์ฝ”๋”ฉ ํ‘œ์ค€, ์•„ํ‚คํ…์ฒ˜ ์ œ์•ฝ ์กฐ๊ฑด ๋˜๋Š” ์กฐ์ง๋ณ„ ์ทจ์•ฝ์  ํŒจํ„ด์— ๋งž๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Semgrep์€ ์ผ๋ฐ˜์ ์ธ ๋„๊ตฌ๋กœ๋Š” ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ธˆ์ง€๋œ API, ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ตฌ์„ฑ ํŒจํ„ด๊ณผ ๊ฐ™์€ ์ง€์—ญํ™”๋œ ์ •์ฑ…์„ ์‹œํ–‰ํ•˜๋Š” ๋ฐ ํŠนํžˆ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. Azure DevOps์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ํŒŒ์ดํ”„๋ผ์ธ ํ…œํ”Œ๋ฆฟ์— ์ง์ ‘ ํฌํ•จํ•˜์—ฌ ํŒ€ ๊ฐ„ ์ผ๊ด€์„ฑ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ Semgrep์€ Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ๊ณ„์ธต์œผ๋กœ ๊ฐ€์žฅ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Semgrep์€ ๋” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ๋ณด์™„ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ์กฐ์ง๋ณ„ ํ‘œ์ค€์„ ์ ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ ๋ถ„์„ ๋„๊ตฌ๋Š” ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ํ›„๋ฐ˜๋ถ€์—์„œ ์‹ฌ์ธต์ ์ธ ๋ณด์•ˆ ํ‰๊ฐ€ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ๋ณด๊ณ ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Polaris ๊ธฐ๋ฐ˜ Coverity๋ฅผ โ€‹โ€‹์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฐ ์•ˆ์ „ ์ค‘์š” ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์‹ฌ์ธต์ ์ธ ๊ฒฐํ•จ์„ ํƒ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ์‚ฌ์ดํŠธ: Polaris์˜ Coverity

Polaris ๊ธฐ๋ฐ˜ Coverity๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ, ๋™์‹œ์„ฑ ์˜ค๋ฅ˜, ๋ฆฌ์†Œ์Šค ์ˆ˜๋ช… ์ฃผ๊ธฐ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์ €์ˆ˜์ค€ ๋™์ž‘๊ณผ ๊ด€๋ จ๋œ ๊ฒฐํ•จ ์œ ํ˜•์„ ์ •์  ๋ถ„์„์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” Azure DevOps ํ™˜๊ฒฝ์— ๋„์ž…๋ฉ๋‹ˆ๋‹ค. Coverity์˜ ์•„ํ‚คํ…์ฒ˜ ๋ชจ๋ธ์€ ์ด๋Ÿฌํ•œ ์ดˆ์ ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์„์€ ๊ณ ๊ธ‰ ์˜๋ฏธ ๋ชจ๋ธ๋ง ๋ฐ ๊ฒฝ๋กœ ๊ฐ์ง€ ๊ธฐ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ํŠนํžˆ C, C++ ๋ฐ ๊ธฐํƒ€ ์–ธ์–ด์—์„œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฏธ๋ฌ˜ํ•œ ์ œ์–ด ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ƒํ˜ธ ์ž‘์šฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์—์„œ Polaris์šฉ Coverity๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Polaris ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์Šค์บ”์„ ํ˜ธ์ถœํ•˜๋Š” ์ „์šฉ ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—…์„ ํ†ตํ•ด ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋Ÿ‰ ์Šค์บ๋„ˆ์™€ ๋‹ฌ๋ฆฌ Coverity๋Š” ์ปดํŒŒ์ผ ๋‹จ์œ„์™€ ์–ธ์–ด ์˜๋ฏธ๋ก ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋‹ค ๋ช…ํ™•ํ•œ ๋นŒ๋“œ ์บก์ฒ˜ ๋‹จ๊ณ„๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ”Œ๋žซํผ ํŒ€์€ ์—์ด์ „ํŠธ ํฌ๊ธฐ ์กฐ์ •, ๋นŒ๋“œ ์žฌํ˜„์„ฑ, ๊ฒฐ์ •์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋นŒ๋“œ ๋ฐ ์Šค์บ” ๋‹จ๊ณ„ ๋ถ„๋ฆฌ ๋“ฑ ์‹คํ–‰ ๊ด€๋ จ ๊ณ ๋ ค ์‚ฌํ•ญ์„ ๊ณ„ํšํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

๊ตฌ์กฐ์  ์ œ์•ฝ ์‚ฌํ•ญ์œผ๋กœ๋Š” ํ”ผ๋“œ๋ฐฑ ์ฃผ๊ธฐ๊ฐ€ ๊ธธ๊ณ  ์ง€์›๋˜๋Š” ์–ธ์–ด ์˜์—ญ ์™ธ์—๋Š” ์ ์šฉ์ด ์ œํ•œ์ ์ด๋ผ๋Š” ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Coverity๋Š” ๋ฒ”์šฉ ํ’ˆ์งˆ ๊ฒ€์‚ฌ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ ๋‹ค์–‘ํ•œ ์Šคํƒ์—์„œ ๊ด‘๋ฒ”์œ„ํ•œ ์–ธ์–ด ์ง€์›์„ ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Coverity๋Š” Azure DevOps ์ œ๊ณต ์ˆ˜๋ช…์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋” ๋น ๋ฅด๊ณ  ์œ ์—ฐํ•œ ๋„๊ตฌ๋ฅผ ๋ณด์™„ํ•˜๋Š” ํŠน์ˆ˜ ๋ถ„์„ ๊ณ„์ธต์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๊ทธ ๊ฐ€์น˜๋ฅผ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Azure DevOps ์•„ํ‚คํ…์ฒ˜์—์„œ Polaris ๊ธฐ๋ฐ˜ Coverity๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ๋ถ„์„ ์—”์ง„์œผ๋กœ์„œ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. Coverity์˜ ์—ญํ• ์€ ์žฅ์•  ํ—ˆ์šฉ์น˜๊ฐ€ ๋‚ฎ์€ ์‹œ์Šคํ…œ์—์„œ ์šด์˜์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฐํ•จ ์œ ํ˜•์„ ์ฐพ์•„๋‚ด์–ด, ์ฒด๊ณ„์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๊ด€ํ–‰๊ณผ ์—ฐ๊ณ„๋  ๋•Œ ๋ฐฐํฌ ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ •์  ๋ถ„์„ ๋„๊ตฌ์— ๋Œ€ํ•œ ๋น„๊ต ๋ถ„์„

๋‹ค์Œ ๋น„๊ตํ‘œ๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ๋‹จ์ผ ์•„ํ‚คํ…์ฒ˜ ๊ด€์ ์œผ๋กœ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‘œ๋Š” ํ”Œ๋žซํผ ์ฑ…์ž„์ž, ๋ณด์•ˆ ์„ค๊ณ„์ž ๋ฐ ๋ฐฐํฌ ๋‹ด๋‹น์ž๊ฐ€ ๊ธฐ๋Šฅ ์ฐจ์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ ๋„๊ตฌ๊ฐ€ Azure DevOps ์‹คํ–‰ ๋ชจ๋ธ, ๊ฑฐ๋ฒ„๋„Œ์Šค ๊ธฐ๋Œ€์น˜ ๋ฐ ํ™•์žฅ ์••๋ ฅ ํ•˜์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋น„๊ต๋Š” ๋งˆ์ผ€ํŒ… ์ฃผ์žฅ๋ณด๋‹ค๋Š” ์‹คํ–‰ ํŠน์„ฑ, ๊ฐ€๊ฒฉ ์ฑ…์ • ๋ฐฉ์‹, ํ™•์žฅ์„ฑ ์ œ์•ฝ ๋ฐ ๊ตฌ์กฐ์  ํ•œ๊ณ„์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ด€์ ์€ ํŒŒ์ดํ”„๋ผ์ธ ํ™•์ •์„ฑ, ์ฆ๊ฑฐ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ๋ถ„๋ฅ˜ ํ™•์žฅ์„ฑ์ด ๋‹จ์ˆœํ•œ ๊ทœ์น™ ๊ฐœ์ˆ˜๋ณด๋‹ค ๋” ์ค‘์š”ํ•œ ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋“ค์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ํ‰๊ฐ€๋˜๋Š”์ง€๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๋‹จ์ฃผ์š” ์ดˆ์ Azure DevOps ํ†ตํ•ฉ ๋ชจ๋ธ๋ถ„์„ ์‹ฌ๋„๊ฐ€๊ฒฉ ํŠน์„ฑ๊ธฐ์—… ๊ทœ๋ชจ ํ™•์žฅ์˜ ํ˜„์‹ค๊ตฌ์กฐ์  ํ•œ๊ณ„
์†Œ๋‚˜ํ๋ธŒ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๊ฒŒ์ดํŠธ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ๋ถ„์„ ๋ฐ ์ค‘์•™ ์ง‘์ค‘์‹ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ๊ฐ–์ถ˜ ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—…๊ทœ์น™ ๊ธฐ๋ฐ˜, ๋‹ค๊ตญ์–ด ์ง€์›, ์ œํ•œ๋œ ์˜๋ฏธ ๊นŠ์ด์ผ๋ฐ˜์ ์œผ๋กœ LOC(๋กœํŠธ ์ˆ˜) ๋ฐ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋“ฑ๊ธ‰์ด ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ํ”Œ๋žซํผ ์ˆ˜์ค€์˜ ์šฉ๋Ÿ‰ โ€‹โ€‹๊ณ„ํš์ด ํ•„์š”ํ•˜๋ฉฐ, ํŒŒ์ดํ”„๋ผ์ธ ๋นŒ๋“œ ๋ณ€๋™์— ๋ฏผ๊ฐํ•ฉ๋‹ˆ๋‹ค.์‹คํ–‰ ๊ฒฝ๋กœ ๋ฐ ์ข…์†์„ฑ ์ธ์‹ ๊ธฐ๋Šฅ์ด ์ œํ•œ์ ์ด๋ฉฐ, ๋ณด์•ˆ ์ˆ˜์ค€์€ ๋ถ€์ฐจ์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๋ณด์•ˆ DevOpsํ‘œ์ค€ํ™”๋œ ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ฐ ์ฆ๊ฑฐ ์ •๊ทœํ™”Azure DevOps ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ SARIF ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ถ„์„๊ธฐ๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.๊ธฐ๋ณธ ๋„๊ตฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ, ์ฃผ๋กœ ํŒจํ„ด ๋ฐ ๊ตฌ์„ฑ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ณ„ ๋ผ์ด์„ ์Šค๋ณด๋‹ค๋Š” ํ”Œ๋žซํผ ์ค‘์‹ฌ์˜ ๋ผ์ด์„ ์Šค๊ฐ€ ๋” ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.๊ตฌ์„ฑ ์„ค์ •์ด ์ค‘์•™์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ ๊ด‘๋ฒ”์œ„ํ•œ ์ ์šฉ ๋ฒ”์œ„์— ๊ฑธ์ณ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.์ œํ•œ์ ์ธ ์‹ฌ์ธต ์˜๋ฏธ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค์—๋Š” ๋ณด์™„์ ์ธ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
GitHub ๊ณ ๊ธ‰ ๋ณด์•ˆ(CodeQL)์‹ฌ์ธต ์˜๋ฏธ๋ก  ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ณด์•ˆ ๋ถ„์„Azure Repos ์›Œํฌํ”Œ๋กœ์— CodeQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๋ฐ ์Šค์บ” ๊ธฐ๋Šฅ์ด ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.์งˆ์˜ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ถ”๋ก ์„ ํ†ตํ•œ ๋†’์€ ์˜๋ฏธ ์‹ฌ๋„GitHub Advanced Security์— ๋งž์ถฐ ์กฐ์ •๋œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ณด์•ˆ ๋ผ์ด์„ ์Šค๊ณ„์‚ฐ๋Ÿ‰์ด ๋งŽ์œผ๋ฉฐ, ์—์ด์ „ํŠธ ์ „๋žต, ์บ์‹ฑ ๋ฐ ์„ ํƒ์  ์‹คํ–‰์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์ธ ํ’ˆ์งˆ ๊ฒ€์‚ฌ ์šฉ๋„๋กœ ์„ค๊ณ„๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์งˆ์˜ ๊ด€๋ฆฌ๋กœ ์ธํ•ด ์šด์˜ ๋ถ€๋‹ด์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
OpenText Fortify SCA์ •์ฑ… ์ˆ˜์ค€์˜ SAST ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ์ง‘ํ–‰Fortify ํ”Œ๋žซํผ์„ ํ†ตํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ๊ฐ–์ถ˜ Azure DevOps ์ž‘์—…์‹ฌ์ธต์ ์ธ ๋ณด์•ˆ ์ค‘์‹ฌ ๋ถ„์„ ๋ฐ ์„ฑ์ˆ™ํ•œ ์ทจ์•ฝ์  ๋ถ„๋ฅ˜ ์ฒด๊ณ„์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ๋ผ์ด์„ ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์Šค์บ” ๋ณผ๋ฅจ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.๊ณ ์œ„ํ—˜ ์‹œ์Šคํ…œ์˜ ์„ ๋ณ„์  ์˜จ๋ณด๋”ฉ์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋ฉฐ, ๊ณผ๋„ํ•œ ์Šค์บ”์œผ๋กœ ์ธํ•ด PR ์‚ฌ์šฉ์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๊ธด ํ”ผ๋“œ๋ฐฑ ์ฃผ๊ธฐ; ์˜คํƒ์ง€์œจ ์ฆ๊ฐ€๋กœ ์ธํ•œ ์กฐ์ • ๋…ธ๋ ฅ ์ฆ๊ฐ€; ๋ณด์•ˆ ์ค‘์‹ฌ์  ์ ‘๊ทผ
์ฒดํฌ๋งˆ๋ฅดํฌ์Šค CxSAST๊ด€๋ฆฌํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ”„๋กœ๊ทธ๋žจํŒŒ์ดํ”„๋ผ์ธ ๊ธฐ๋ฐ˜ ์Šค์บ” ๋ฐ ์ค‘์•™ ์ง‘์ค‘์‹ ์œ„ํ—˜ ๋Œ€์‹œ๋ณด๋“œ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•œ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ถ„์„์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ”„๋กœ๊ทธ๋žจ์— ๋งž์ถ˜ ๊ธฐ์—… ๋ผ์ด์„ ์Šค์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ์˜ํ–ฅ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ณ„์ธตํ˜• ์Šค์บ๋‹ ๋ชจ๋ธ์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์ž ํ”ผ๋“œ๋ฐฑ ์†๋„๊ฐ€ ๋А๋ ค ์‹ ์†ํ•œ PR๊ธ‰ ์กฐ์น˜์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ
์…ˆ๊ทธ๋ ™๋น ๋ฅด๊ณ  ๋งž์ถค ์„ค์ •์ด ๊ฐ€๋Šฅํ•œ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์Šค์บ”Azure ํŒŒ์ดํ”„๋ผ์ธ ์—์ด์ „ํŠธ์—์„œ CLI๋ฅผ ์ง์ ‘ ์‹คํ–‰ํŒจํ„ด ๊ธฐ๋ฐ˜์ด๋ฉฐ ์ ˆ์ฐจ ๊ฐ„ ๊นŠ์ด๊ฐ€ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.์ปค๋ฎค๋‹ˆํ‹ฐ ์—๋””์…˜๊ณผ ์ค‘์•™ ์ง‘์ค‘์‹ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์œ ๋ฃŒ ํ”Œ๋žซํผ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.์ €์žฅ์†Œ ์ „๋ฐ˜์— ๊ฑธ์ณ ์†์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ทœ์น™ ๋ถˆ์ผ์น˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฑฐ๋ฒ„๋„Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.์ œํ•œ์ ์ธ ์‹ฌ์ธต ์˜๋ฏธ ์ถ”๋ก  ๊ธฐ๋Šฅ; ํšจ์œจ์„ฑ์€ ๊ทœ์น™์˜ ํ’ˆ์งˆ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
ํด๋ผ๋ฆฌ์Šค์˜ ์ปค๋ฒ„๋ฆฌํ‹ฐ์ €์ˆ˜์ค€ ์ฝ”๋“œ์—์„œ ๋†’์€ ์ˆ˜์ค€์˜ ๊ฒฐํ•จ ํƒ์ง€๋นŒ๋“œ ์บก์ฒ˜ ๋ฐ ์›๊ฒฉ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ „์šฉ ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์—…๋งค์šฐ ์‹ฌ์ธต์ ์ธ ์˜๋ฏธ๋ก ์  ๋ฐ ๊ฒฝ๋กœ ๋ฏผ๊ฐ ๋ถ„์„ํ•ต์‹ฌ ์‹œ์Šคํ…œ์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ธฐ์—… ๋ผ์ด์„ ์‹ฑ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์  ์ž‘์—…์ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ‘ํ•ฉ, ์•ผ๊ฐ„ ๋˜๋Š” ๋ฆด๋ฆฌ์Šค ์Šค์บ”์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.ํŠน์ • ์–ธ์–ด์—๋งŒ ์ดˆ์ ์„ ๋งž์ถ”๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ ํŒŒ์ดํ”„๋ผ์ธ ๊ฒŒ์ดํŠธ๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŠน์ˆ˜ํ•œ Azure DevOps ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•œ ๋‹ค๋ฅธ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ •์  ๋ถ„์„ ๋Œ€์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ„์—์„œ ๋น„๊ตํ•œ ์ฃผ์š” ๋„๊ตฌ ์™ธ์—๋„ ๋งŽ์€ Azure DevOps ์กฐ์ง์—์„œ๋Š” ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ, ์–ธ์–ด๋ณ„ ์ œ์•ฝ ์กฐ๊ฑด ๋˜๋Š” ๋ณด์™„์ ์ธ ์œ„ํ—˜ ์˜์—ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ์ •์  ๋ถ„์„ ์†”๋ฃจ์…˜์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ๋ณดํŽธ์ ์ธ ํ‘œ์ค€์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ฌผ๋ฉฐ, ์˜คํžˆ๋ ค ๊ธฐ๋ณธ SAST ์Šคํƒ์ด ์ถฉ๋ถ„ํ•œ ๊นŠ์ด, ๋ฒ”์œ„ ๋˜๋Š” ์šด์˜ ์ ํ•ฉ์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•˜๋Š” ํŠน์ • ๊ฒฉ์ฐจ๋ฅผ ๋ฉ”์šฐ๊ธฐ ์œ„ํ•ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

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

ํŠน์ • ๋ถ„์•ผ ์ ์šฉ ๊ฐ€๋Šฅ์„ฑ์— ๋”ฐ๋ฅธ ์ถ”๊ฐ€ ์ •์  ๋ถ„์„ ๋„๊ตฌ

  • Veracode ์ •์  ๋ถ„์„
    ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ์Šค์บ๋‹ ๋ฐ ํ‘œ์ค€ํ™”๋œ ์ •์ฑ… ๋ณด๊ณ ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ธฐ์—… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜จํ”„๋ ˆ๋ฏธ์Šค ์šด์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ๊ฐ•๋ ฅํ•œ ๊ทœ์ • ์ค€์ˆ˜๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ์กฐ์ง์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • Snyk ์ฝ”๋“œ
    ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ์˜ ๋ณด์•ˆ ์Šค์บ”์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์œผ๋ฉฐ CI ํŒŒ์ดํ”„๋ผ์ธ๊ณผ์˜ ๊ฐ•๋ ฅํ•œ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋…๋ฆฝ์ ์ธ SAST(์‹œ์Šคํ…œ ๋ณด์•ˆ ํ…Œ์ŠคํŠธ) ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋ณด๋‹ค๋Š” ์ข…์†์„ฑ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ์Šค์บ”์„ ๋ณด์™„ํ•˜๋Š” ์šฉ๋„๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • KICS(Keeping Infrastructure as Code Secure)
    Terraform, ARM, CloudFormation๊ณผ ๊ฐ™์€ IaC ํ…œํ”Œ๋ฆฟ์˜ ์ •์  ๋ถ„์„์— ํŠนํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Azure ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ IaC ๊ตฌ์„ฑ ์˜ค๋ฅ˜ ์œ„ํ—˜์„ ํ‰๊ฐ€ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • PMD์™€ SpotBugs
    ์ž๋ฐ” ์ค‘์‹ฌ ํ™˜๊ฒฝ์—์„œ ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ๊ฒฐํ•จ ํŒจํ„ด์„ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰์˜ ์–ธ์–ด๋ณ„ ๋„๊ตฌ๋กœ, ํŒŒ์ดํ”„๋ผ์ธ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ESLint ๋ฐ ์–ธ์–ด๋ณ„ ๋ฆฐํ„ฐ
    ํ”„๋ŸฐํŠธ์—”๋“œ ๋ฐ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์ง์ ‘ ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ๋ฐ ๊ธฐ๋ณธ ์ •ํ™•์„ฑ์„ ๊ฐ•์ œํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ด์ง€๋งŒ ๊ธฐ์—… ์ฐจ์›์˜ ์œ„ํ—˜ ํ‰๊ฐ€์—๋Š” ๋ถˆ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • OWASP ์ข…์†์„ฑ ๊ฒ€์‚ฌ
    ์ฝ”๋“œ ์ˆ˜์ค€์˜ ๊ฒฐํ•จ๋ณด๋‹ค๋Š” ์•Œ๋ ค์ง„ ์ทจ์•ฝํ•œ ์ข…์†์„ฑ์„ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๊ณต๊ธ‰๋ง ์œ„ํ—˜ ๊ฐ€์‹œ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด SAST ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • Bandit ๋ฐ ์œ ์‚ฌํ•œ ๋ณด์•ˆ ๋ฆฐํ„ฐ
    ํŒŒ์ด์ฌ ์ค‘์‹ฌ ํ™˜๊ฒฝ์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฝ”๋”ฉ ํŒจํ„ด์„ ์‹ ์†ํ•˜๊ฒŒ ๊ฐ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒŒ์ดํŒ… ์ œ์–ด๋ณด๋‹ค๋Š” ์ดˆ๊ธฐ ํ”ผ๋“œ๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Azure DevOps์—์„œ ์ •์  ๋ถ„์„ ๋„์ž…์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ธฐ์—… ํ™˜๊ฒฝ ์š”์ธ

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

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

๋ฐฐ์†ก ๊ทœ๋ชจ ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ฒฐ์ •๋ก ์€ ํ•„์ˆ˜ ์š”๊ฑด์ž…๋‹ˆ๋‹ค.

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

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

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

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

๊ทœ์ œ ๋…ธ์ถœ ๋ฐ ๊ฐ์‚ฌ ๊ธฐ๋ฐ˜ ์ฆ๊ฑฐ ๊ธฐ๋Œ€์น˜

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

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

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

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

Azure DevOps์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Œ€์น˜๋กœ ์ธํ•ด ์ •์  ๋ถ„์„์ด ์ •ํ˜•ํ™”๋˜๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค. ๋„๊ตฌ๋Š” ๊ทœ์ • ์ค€์ˆ˜ ์•„ํ‚คํ…์ฒ˜์˜ ์ผ๋ถ€๊ฐ€ ๋˜๋ฉฐ, ๋„์ž… ๊ฒฐ์ •์€ ํƒ์ง€ ์ •ํ™•๋„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณด๊ณ  ๋ฐ ์ฆ๊ฑฐ ๊ธฐ๋Šฅ์— ์˜ํ•ด์„œ๋„ ํฐ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์กฐ์ง์˜ ๋ณต์žก์„ฑ๊ณผ ํŒ€ ๊ฐ„ ํ˜‘์—… ์••๋ ฅ

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

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

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

Azure DevOps๋Š” ์ •์ฑ… ์‹œํ–‰์ด ์ค‘์•™ ์ง‘์ค‘ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์—ญํ•™ ๊ด€๊ณ„๋ฅผ ๋”์šฑ ์‹ฌํ™”์‹œํ‚ต๋‹ˆ๋‹ค. ๋ธŒ๋žœ์น˜ ์ •์ฑ…, ํ•„์ˆ˜ ๊ฒ€์‚ฌ ๋ฐ ์Šน์ธ ๊ฒŒ์ดํŠธ๋Š” ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์ด ํฌ๊ฒŒ ๋‹ค๋ฅด๋”๋ผ๋„ ์ผ๊ด€๋˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ์กฐ์ง์ด ์‹œ์Šคํ…œ ์ค‘์š”๋„ ๋ฐ ๋ณ€๊ฒฝ ์œ„ํ—˜์— ๋งž์ถฐ ๊ธฐ๋Œ€์น˜๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹จ๊ณ„๋ณ„ ์‹œํ–‰ ๋ชจ๋ธ์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

Azure ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ๊ธฐ์—…์ด ๊ธฐ๋Œ€ํ•˜๋Š” ์ „๋žต์  ๊ฒฐ๊ณผ

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

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

๋ฐฐ์†ก ์œ„ํ—˜์— ๋งž์ถ˜ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ถœ์‹œ ๊ฒŒ์ดํŒ…

Azure DevOps์—์„œ ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ๊ธฐ์—…์ด ์–ป๊ณ ์ž ํ•˜๋Š” ์ฃผ์š” ์ „๋žต์  ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๋Š” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฆด๋ฆฌ์Šค ๊ฒŒ์ดํŒ…์ž…๋‹ˆ๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ํ—ˆ์šฉํ•  ์ˆ˜ ์—†๋Š” ์œ„ํ—˜์„ ์ดˆ๋ž˜ํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฐจ๋‹จํ•˜๊ณ , ์˜ํ–ฅ์ด ์ ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๊ณผ๋„ํ•œ ๋งˆ์ฐฐ ์—†์ด ํ†ต๊ณผ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„์€ ๋ถ„์„ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐฐํฌ ์œ„ํ—˜๊ณผ ์•ˆ์ •์ ์œผ๋กœ ์—ฐ๊ด€๋  ๋•Œ๋งŒ ์ด๋Ÿฌํ•œ ๋ชฉํ‘œ ๋‹ฌ์„ฑ์— ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค.

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

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

Azure DevOps๋Š” ๊ฒŒ์ดํŒ… ๋กœ์ง์ด ์ด์ง„๋ฒ•์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋”์šฑ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์‚ฌ๋Š” ํ†ต๊ณผํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์ •์  ๋ถ„์„ ๋„๊ตฌ๋กœ ์ธํ•ด ์กฐ์ง์€ ๋ณต์žก์„ฑ์„ ์ •์ฑ… ์˜ˆ์™ธ ๋ฐ ์ˆ˜๋™ ์Šน์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ด๋Š” ์ž๋™ํ™”๋œ ๊ฒŒ์ดํŠธ์˜ ๊ฐ€์น˜๋ฅผ ์•ฝํ™”์‹œํ‚ค๊ณ  ์˜์‚ฌ ๊ฒฐ์ •์„ ๋น„๊ณต์‹์ ์ธ ์ฑ„๋„๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์„ฑ์ˆ™ํ•œ Azure DevOps ํ™˜๊ฒฝ์€ ๋ฆด๋ฆฌ์Šค ํ๋ฆ„์„ ์ œํ•œํ•˜๋Š” ๋Œ€์‹  ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ •์  ๋ถ„์„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜ ์œ„ํ—˜ ์š”์†Œ์— ๋งž์ถฐ ๊ฒŒ์ดํŒ… ๋™์ž‘์„ ์กฐ์ •ํ•จ์œผ๋กœ์จ ์กฐ์ง์€ ์˜ˆ์™ธ ๋ฐœ์ƒ๋Ÿ‰์„ ์ค„์ด๊ณ  ์ฐจ๋‹จ๋œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์‹ค์ œ ์ทจ์•ฝ์ ์„ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ํ™•์‹ ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ข…์†์„ฑ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ์ „ํŒŒ๋˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋งŽ์€ ๊ธฐ์—…์ด ์ •์  ๋ถ„์„์˜ ํšจ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ ์œ„ํ—˜์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„ ์— ์ ์  ๋” ์ง‘์ค‘ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

ํŒ€ ์ „์ฒด์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์šฐ์„ ์ˆœ์œ„ ์„ค์ •

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

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

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

Azure DevOps ํ™˜๊ฒฝ์€ ํŒ€๋“ค์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋”์šฑ ์‹ฌํ™”์‹œํ‚ต๋‹ˆ๋‹ค. ๊ณต์œ ๋˜๋Š” ์ข…์†์„ฑ ๋ฐ ๋ฆด๋ฆฌ์Šค ์‹œ์ ์— ๋”ฐ๋ผ ํ•œ ํŒ€์—์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ๋ฐœ๊ฒฌ ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ ํŒ€์—์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์—…์€ ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ ํŒŒ์ดํ”„๋ผ์ธ ์ „๋ฐ˜์— ๊ฑธ์ณ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ์œจํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถฉ๋ถ„ํ•œ ๋งฅ๋ฝ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋Š” ์ •์  ๋ถ„์„์„ ๋…๋ฆฝ์ ์ธ ์Šค์บ” ๋‹จ๊ณ„๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๋Œ€์‹ , ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์‹œ์Šคํ…œ ๊ตฌ์กฐ ๋ฐ ๋ณ€ํ™”์˜ ์˜ํ–ฅ๊ณผ ์—ฐ๊ด€์‹œํ‚ค๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ์ ์  ๋” ๋†’์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ์„ค์ •์€ ๊ฐœ๋ณ„ ํŒ€์˜ ๋ถ€๋‹ด์ด ์•„๋‹ˆ๋ผ ๊ธฐ์—… ์ „์ฒด์˜ ๊ณต์œ  ์—ญ๋Ÿ‰์ด ๋ฉ๋‹ˆ๋‹ค.

์ง€๋ฐฐ๊ตฌ์กฐ ๋ฐ ๊ฐ์‚ฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์ฆ๊ฑฐ ์ƒ์„ฑ

์„ธ ๋ฒˆ์งธ ์ „๋žต์  ์„ฑ๊ณผ๋Š” ๊ธฐ์—…์ด ๊ธฐ๋Œ€ํ•˜๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฆ๊ฑฐ ์ƒ์„ฑ์ž…๋‹ˆ๋‹ค. Azure DevOps์—์„œ ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ ๊ณผ์ •์—์„œ ์ ์ ˆํ•œ ์ œ์–ด๊ฐ€ ์ ์šฉ๋˜์—ˆ์Œ์„ ์ž…์ฆํ•˜๋Š” ๊ณต์‹ ๊ธฐ๋ก์˜ ์ผ๋ถ€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Œ€๋Š” ๋ณด์•ˆ ํŒ€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทœ์ • ์ค€์ˆ˜, ์œ„ํ—˜ ๊ด€๋ฆฌ ๋ฐ ๋‚ด๋ถ€ ๊ฐ์‚ฌ ๊ธฐ๋Šฅ๊นŒ์ง€ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

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

Azure DevOps ํŒŒ์ดํ”„๋ผ์ธ์€ ๋กœ๊ทธ, ์•„ํ‹ฐํŒฉํŠธ ๋ฐ ๋นŒ๋“œ ์š”์•ฝ์„ ํ†ตํ•ด ์ฆ๊ฑฐ ๋ณด์กด์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋Š” ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ๋ณ‘๋ ฌ ๋ฌธ์„œํ™” ํ”„๋กœ์„ธ์Šค์˜ ํ•„์š”์„ฑ์„ ์ค„์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ๋ณ„๋„์˜ ์ฆ๊ฑฐ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•œ ๋„๊ตฌ๋Š” ์šด์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์ผ๊ด€์„ฑ ๋ถ€์กฑ์˜ ์œ„ํ—˜์„ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋Š” ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๋ฐ ๊ธฐ์ค€์„  ์„ค์ • ๋ฐฉ์‹์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ธฐ์—…์€ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๊ฒฐ์ •์ด ์ž„์˜์ ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์‚ฌ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ธฐํ•œ์ด ์ •ํ•ด์ ธ ์žˆ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ๊ฑฐ๋ฒ„๋„Œ์Šค ๊ฒฐ์ •์ด ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ๊ตฌ์กฐํ™”๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์ผ๊ด€๋œ ์‹๋ณ„์ž๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

Azure ์ •์  ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ํƒ์›”ํ•œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋Š” ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€

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

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

๋น ๋ฅธ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์œ„ํ—˜ ๊ด€๋ฆฌ

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

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

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

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

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

๊ทœ์ œ ๋Œ€์ƒ ์‹œ์Šคํ…œ ๋ฐ ์™ธ๋ถ€ ๋…ธ์ถœ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ณด์•ˆ ๋ณด์žฅ

๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ํ™œ์šฉ ์‚ฌ๋ก€๋Š” ๊ทœ์ œ ๊ฐ๋… ๋Œ€์ƒ ์‹œ์Šคํ…œ์ด๋‚˜ ์™ธ๋ถ€ ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์˜ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธˆ์œต ์„œ๋น„์Šค, ์˜๋ฃŒ ํ”Œ๋žซํผ ๋˜๋Š” ๊ณต๊ฐœ API๋ฅผ ์ง€์›ํ•˜๋Š” Azure DevOps ํ™˜๊ฒฝ์—์„œ ์ •์  ๋ถ„์„์€ ๋ฐฐํฌ ์ „์— ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•˜๋„๋ก ์„ค๊ณ„๋œ ์˜ˆ๋ฐฉ์  ์ œ์–ด ๊ธฐ๋Šฅ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ ์„ ์•Œ๋ ค์ง„ ์ทจ์•ฝ์  ๋ฒ”์ฃผ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ตฌ์กฐํ™”๋œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ ํŒ€์€ ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ถ€ ์ •์ฑ… ๋ฐ ์™ธ๋ถ€ ํ‘œ์ค€์— ๋งž์ถฐ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Azure DevOps์™€์˜ ํ†ตํ•ฉ์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆด๋ฆฌ์Šค ์ฆ๊ฑฐ๋กœ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๊ฐ์‚ฌ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜ ํ™œ๋™์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ฑฐ๋ฒ„๋„Œ์Šค ์›Œํฌํ”Œ๋กœ์˜ ์ค‘์š”์„ฑ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ์ ์€ ๋ฐฐํฌ ํŒ€์—์„œ ์ฆ‰์‹œ ํ•ด๊ฒฐํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€์˜ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Azure DevOps์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋ฉด์„œ ์ค‘์•™ ์ง‘์ค‘์‹ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ๋ณด๊ณ ๋ฅผ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค์ง€ ์•Š๊ณ ๋„ ์ด๋Ÿฌํ•œ ์—…๋ฌด ๋ถ„๋‹ด์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ •์  ๋ถ„์„์€ ๋ฒ”์šฉ์ ์ธ ๊ด€๋ฌธ์ด ์•„๋‹Œ ๊ณ„์ธตํ˜• ๋ฐฉ์–ด ์ „๋žต์˜ ์ผ๋ถ€๋กœ ํ™œ์šฉ๋  ๋•Œ ๊ฐ€์žฅ ํฐ ๋ณด์•ˆ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Azure DevOps์—์„œ๋Š” ์ž์‚ฐ ์œ„ํ—˜ ํ”„๋กœํ•„์— ๋งž์ถฐ ์Šค์บ” ๊นŠ์ด์™€ ์ ์šฉ ์‹œ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ๋ฐฐํฌ ํŒ€์— ๊ณผ๋ถ€ํ•˜๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ๋ณต์›๋ ฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„๋Œ€ํ™” ๊ณ„ํš ๋ฐ ๋ฆฌํŒฉํ† ๋ง ์œ„ํ—˜ ๊ฐ์†Œ

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

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

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

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

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

์ข…ํ•ฉํ•˜๊ธฐ: Azure ์ •์  ๋ถ„์„์„ ๊ธฐ์—… ํ™˜๊ฒฝ๊ณผ ํ†ตํ•ฉํ•˜๊ธฐ

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

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

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

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