์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

DevOps๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ์„ ์œ„ํ•œ XNUMX๋‹จ๊ณ„ ๊ฐ€์ด๋“œ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”.

์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

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

๋‚˜์˜ DevOps ์—ฌ์ •

์ €๋Š” ์ด์ „์— Citi์˜ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด IaaS(Infrastructure-as-a-Service) ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” Citi Group ํด๋ผ์šฐ๋“œ ํŒ€์—์„œ ์ผํ–ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ธ์ •์ ์ธ ๋ฌธํ™”์  ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์— ํ•ญ์ƒ ๊ด€์‹ฌ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํŒ€. ์ €๋Š” Citi์˜ ํด๋ผ์šฐ๋“œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์ธํ”„๋ผ ๋ถ€๋ฌธ CTO์ธ Greg Lavender๊ฐ€ ์ถ”์ฒœํ•œ ์ฑ…์—์„œ ๊ทธ ๋‹ต์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ์ฑ…์˜ ์ œ๋ชฉ์€ The Phoenix Project(ํ”ผ๋‹‰์Šค ํ”„๋กœ์ ํŠธ), DevOps์˜ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜์ง€๋งŒ ์†Œ์„ค์ฒ˜๋Ÿผ ์ฝํž™๋‹ˆ๋‹ค.

์ฑ… ๋’ท๋ถ€๋ถ„์˜ ํ‘œ๋Š” ์—ฌ๋Ÿฌ ํšŒ์‚ฌ๊ฐ€ ๋ฆด๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ ์‹œ์Šคํ…œ์„ ๋ฐฐํฌํ•˜๋Š” ๋นˆ๋„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์•„๋งˆ์กด: ํ•˜๋ฃจ 23
๊ตฌ๊ธ€: ํ•˜๋ฃจ 5
๋„ทํ”Œ๋ฆญ์Šค: ํ•˜๋ฃจ 500
ํŽ˜์ด์Šค๋ถ : ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ
ํŠธ์œ„ํ„ฐ: ์ฃผ 3ํšŒ
์ผ๋ฐ˜ ํšŒ์‚ฌ: 9๊ฐœ์›”์— ํ•œ ๋ฒˆ

Amazon, Google ๋ฐ Netflix ์ฃผํŒŒ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ์ด๋Š” ์ด๋“ค ํšŒ์‚ฌ๊ฐ€ ๊ฑฐ์˜ ์™„๋ฒฝํ•œ DevOps ํŒŒ์ดํ”„๋ผ์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Citi์—์„œ DevOps๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ด์™€ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ์šฐ๋ฆฌ ํŒ€์˜ ํ™˜๊ฒฝ์€ ๋‹ฌ๋ž์ง€๋งŒ ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ์˜ ๋ฐฐํฌ๋Š” ์™„์ „ํžˆ ์ˆ˜๋™์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋Š” IBM WebSphere Application Server Community Edition์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ ์„œ๋ฒ„์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐฐํฌ๋ฅผ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์„œ๋กœ ์˜๋„๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค ๊ณ ํ†ต์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„, ๋ฒˆ๊ฑฐ๋กœ์šด ์ˆ˜๋™ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค, ํŠน์ • ์ž‘์—… ๋˜๋Š” ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ ๋ฐฐํฌ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ญ”๊ฐ€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๊ณ  ๊ฐ™์€ ์ƒ๊ฐ์„ ๊ฐ€์ง„ ๋™๋ฃŒ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ดˆ๊ธฐ DevOps ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์— ํ˜‘๋ ฅํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ Jenkins ์ž‘์—…์„ ํ•˜๊ณ  Atlassian Jira ๋ฐ BitBucket์„ ํ†ตํ•ฉํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ ์šฉ ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ ๊ทธ๋Š” Tomcat ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋Š” ๋งค์šฐ ์„ฑ๊ณต์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์˜ ์™„์ „ํžˆ ์ž๋™ํ™”ํ•˜๊ณ , ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ ๊ฑฐ์˜ 100% ๊ฐ€๋™ ์‹œ๊ฐ„์„ ๋‹ฌ์„ฑํ–ˆ์œผ๋ฉฐ, ์ฝ”๋“œ ์ถ”์  ๋ฐ ํ–ฅ์ƒ๋œ ํ…Œ์ŠคํŠธ ๋ฒ”์œ„๋ฅผ ์ œ๊ณตํ•˜๊ณ , Git ๋ถ„๊ธฐ๋ฅผ Jira ๋ฌธ์ œ ๋˜๋Š” ๋ฐฐํฌ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. DevOps ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋„๊ตฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค์˜€์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ €๋Š” DevOps ํŒŒ์ดํ”„๋ผ์ธ์ด ์–ผ๋งˆ๋‚˜ ๋‹จ์ˆœํ–ˆ๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. Jenkins ํŒŒ์ผ์ด๋‚˜ Ansible๊ณผ ๊ฐ™์€ ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฐ„๋‹จํ•œ ํŒŒ์ดํ”„๋ผ์ธ์€ ํŒŒ๋ ˆํ†  ์›์น™(80/20 ๊ทœ์น™์ด๋ผ๊ณ ๋„ ํ•จ)์œผ๋กœ ์ธํ•ด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

DevOps ๋ฐ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ

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

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

DevOps ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์˜ฌ๋ฐ”๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ๋„๊ตฌ๋งŒ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ถ€ ๋„๊ตฌ๋Š” ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๋„๊ตฌ๋Š” CI/CD(์ง€์†์  ํ†ตํ•ฉ ๋ฐ ์ง€์†์  ๋ฐฐํฌ)์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ํ™˜๊ฒฝ์€ ๋‹ค์–‘ํ•œ ๋‹จ๊ณ„(์˜ˆ: DEV, INT, TST, QA, UAT, STG, PROD)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋งŽ์€ ์ž‘์—…์ด ์ž๋™ํ™”๋˜์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ํ’ˆ์งˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ฐœ๋ฐœ ๋ฏผ์ฒฉ์„ฑ๊ณผ ๋†’์€ ๋ฐฐํฌ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

1๋‹จ๊ณ„: CI/CD ๋ฐฉ๋ฒ•

๊ฐ€์žฅ ๋จผ์ € ํ•„์š”ํ•œ ๊ฒƒ์€ CI/CD ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Java ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ด์ž MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ผ์ด์„ ์Šค๊ฐ€ ๋ถ€์—ฌ๋œ Jenkins๋Š” DevOps๋ฅผ ๋Œ€์ค‘ํ™”ํ•˜๊ณ  ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด ๋œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

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

Jenkins๋Š” DevOps ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์˜คํ”ˆ ์†Œ์Šค CI/CD ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์  ํ‚จ์Šค: ํฌ๋ฆฌ์—์ดํ‹ฐ๋ธŒ ์ปค๋จผ์ฆˆ์™€ MIT
ํŠธ๋ž˜๋น„์Šค CI: MIT
ํฌ๋ฃจ์ฆˆ์ปจํŠธ๋กค:BSD
๋นŒ๋“œ๋ด‡: GPL
์•„ํŒŒ์น˜ ๊ฒ€ํ”„: ์•„ํŒŒ์น˜ 2.0
์บ๋น„: GNU

CI/CD ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•œ DevOps ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ CI/CD ๋„๊ตฌ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. DevOps ์—ฌ์ •์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ

CI/CD ๋„๊ตฌ๊ฐ€ ์ œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€(์•„๋งˆ๋„ ๊ฐ€์žฅ ์‰ฌ์šด) ๋ฐฉ๋ฒ•์€ SCM(์†Œ์Šค ์ฝ”๋“œ ์ œ์–ด) ๋„๊ตฌ์™€ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ Java, Python, C++, Go, Ruby, JavaScript ๋˜๋Š” ์ˆ˜๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์†Œ์Šค ์ฝ”๋“œ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š”, ํŠนํžˆ ํ˜ผ์ž ์ž‘์—…ํ•  ๋•Œ ๋ชจ๋“  ๊ฒƒ์„ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์–ด๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ๊ณต๋™ ์ž‘์—…์— ์ดˆ๋Œ€ํ•˜๋ฉด ์ˆ˜์ • ์‚ฌํ•ญ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ณต์œ ํ•˜๋ฉด์„œ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฑ์—…์„ ๋งŒ๋“ค๊ณ  ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๋Š” ๊ฒƒ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฒ„์ „์„ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ (๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์˜ ํŒ€์›)์—๊ฒŒ๋Š” ๋” ๋‚˜์€ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

๋งŽ์€ ์†Œ์Šค ์ œ์–ด ๋„๊ตฌ๊ฐ€ ์žˆ์ง€๋งŒ Git์ด ํ‘œ์ค€์ด๋ฉฐ ๋‹น์—ฐํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ์˜ต์…˜๋„ ์žˆ์ง€๋งŒ Git์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํž˜๋‚ด: GPLv2 ๋ฐ LGPL v2.1
์ „๋ณต: ์•„ํŒŒ์น˜ 2.0
๋™์‹œ ๋ฒ„์ „ ์‹œ์Šคํ…œ(CVS): GNU
๋ฒ ์Šคํƒ€: LGPL
๋จธํ๋ฆฌ์–ผ: GNU GPL v2+

์ด๋Š” ์†Œ์Šค ์ฝ”๋“œ ์ œ์–ด๊ฐ€ ์ถ”๊ฐ€๋œ DevOps ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

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

3๋‹จ๊ณ„: ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ ์ƒ์„ฑ

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

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

์ด๋ฆ„
๋ผ์ด์„ผ์Šค
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

๋ฉ”์ด๋ธ
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

๊ฐœ๋ฏธ
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

์š”๋žŒ
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

Bazel
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

ํ™•์ธ
GNU
ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

ํˆดํˆด ๊ฑฐ๋ฆฌ๋Š” ์†Œ๋ฆฌ
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

๊ฟ€๊บฝ ๊ฟ€๊บฝ ๋งˆ์‹œ๋‹ค
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

๋นŒ๋”
์•„ํŒŒ์น˜
๋ฃจ๋น„

๊ฐˆํ€ด
MIT
๋ฃจ๋น„

AAP
GNU
Python

SC์ฝ˜
MIT
Python

๋น„ํŠธ๋ฒ ์ดํฌ
GPLv2
Python

์ผ€์ดํฌ
MIT
C#

ASDF
๊ตญ์™ธ ๊ฑฐ์ฃผ์ž (MIT)
๋ฆฌ์Šคํ”„

์นด๋ฐœ
BSD
ํ•˜์Šค์ผˆ

์—„์ฒญ๋‚œ! ๋นŒ๋“œ ์ž๋™ํ™” ๋„๊ตฌ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ์— ๋„ฃ๊ณ  CI/CD ๋„๊ตฌ๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ํ†ตํ•ฉํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์ง€ ์•Š๋‚˜์š”? ํ•˜์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์–ด๋””์— ๋ฐฐํฌํ•ด์•ผ ํ• ๊นŒ์š”?

4๋‹จ๊ณ„: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„

์ง€๊ธˆ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ง„์ •์œผ๋กœ ์œ ์šฉํ•˜๋ ค๋ฉด ์ผ์ข…์˜ ์„œ๋น„์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜ธ์ŠคํŒ…ํ•  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ๋ฐ”๋กœ ๊ทธ๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋ฐฐํฌ๋˜๋Š” ํŒจํ‚ค์ง€์˜ ๋…ผ๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์†Œ์ผ“์„ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œ์ผœ ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด HTTP ์„œ๋ฒ„์™€ ์ผ๋ถ€ ํ™˜๊ฒฝ(์˜ˆ: ๊ฐ€์ƒ ๋จธ์‹ )์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(์•„๋ž˜์—์„œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค).

์—ฌ๋Ÿฌ ์˜คํ”ˆ ์†Œ์Šค ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฆ„
๋ผ์ด์„ผ์Šค
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์—ฌ์ž ๊ฝ๋ฌด๋‹ˆ๋ฅผ ์ซ“์•„ ๋‹ค๋‹ˆ๋‹ค
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

ํ‘ ์˜ฅ์˜
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

์™€์ผ๋“œ ํ”Œ๋ผ์ด
GNU ์•ฝ์†Œ ๊ณต๊ฐœ
์ž๋ฐ”

์œ ๋ฆฌ๊ณ ๊ธฐ
CDDL ๋ฐ GNU ๋œ ๊ณต๊ฐœ
์ž๋ฐ”

์žฅ๊ณ 
3์ ˆ BSD
Python

ํญํ’
์•„ํŒŒ์น˜ 2.0
Python

๊ตฌ๋‹ˆ์ฝ˜
MIT
Python

Python
MIT
Python

์šธํƒ€๋ฆฌ
MIT
๋ฃจ๋น„

Node.js๋ฅผ
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

DevOps ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๊ฑฐ์˜ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž˜ํ–ˆ์–ด์š”!

์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

์—ฌ๊ธฐ์„œ ๋ฉˆ์ถ”๊ณ  ํ†ตํ•ฉ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฝ”๋“œ ํ’ˆ์งˆ์€ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฑฑ์ •ํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

5๋‹จ๊ณ„: ์ฝ”๋“œ ํ…Œ์ŠคํŠธ ๋ฒ”์œ„

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

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

์ฝ”๋“œ ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ

์ด๋ฆ„
๋ผ์ด์„ผ์Šค
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

JUnit
Eclipse Public License
์ž๋ฐ”

EasyMock
์•„ํŒŒ์น˜
์ž๋ฐ”

๋ชจํ‚ค ํ† 
MIT
์ž๋ฐ”

ํŒŒ์›Œ๋ชฉ
์•„ํŒŒ์น˜ 2.0
์ž๋ฐ”

ํŒŒ์ดํ…Œ์ŠคํŠธ
MIT
Python

๊ฐ€์„ค
๋ชจ์งˆ๋ผ
Python

๋…๊ทน๋ฌผ
MIT
Python

์ฝ”๋“œ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ถ”์ฒœ ์‹œ์Šคํ…œ

์ด๋ฆ„
๋ผ์ด์„ผ์Šค
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ ์šฉ ๋ฒ”์œ„
GNU
์ž๋ฐ”

์ฝ”๋“œ์ปค๋ฒ„
์ดํด๋ฆฝ์Šค ํผ๋ธ”๋ฆญ(EPL)
์ž๋ฐ”

Coverage.py
์•„ํŒŒ์น˜ 2.0
Python

์— ๋งˆ
๊ณตํ†ต ๊ณต์ค‘ ๋ผ์ด์„ ์Šค
์ž๋ฐ”

์ž์ฝ”์ฝ”
Eclipse Public License
์ž๋ฐ”

๊ฐ€์„ค
๋ชจ์งˆ๋ผ
Python

๋…๊ทน๋ฌผ
MIT
Python

์žฌ์Šค๋ฏผ ์†
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

์—…
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

๋ชจ์นด
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

๋†๋‹ด
MIT
์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋„๊ตฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Java, Python ๋ฐ JavaScript์šฉ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด C++ ๋ฐ C#์€ ๋…์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(GCC๋Š” ์˜คํ”ˆ ์†Œ์Šค์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ).

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

์ถ”๊ฐ€ ๋‹จ๊ณ„

์ปจํ…Œ์ด๋„ˆ

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ๊ฐ€์ƒ ๋จธ์‹ ์ด๋‚˜ ์„œ๋ฒ„์—์„œ ์„œ๋ฒ„๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

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

๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ์˜ต์…˜๋„ ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒƒ์€ Docker์™€ Kubernetes์ž…๋‹ˆ๋‹ค.

๋„์ปค: ์•„ํŒŒ์น˜ 2.0
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค: ์•„ํŒŒ์น˜ 2.0

์ค‘๊ฐ„ ์ž๋™ํ™” ๋„๊ตฌ

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

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์˜คํ”ˆ ์†Œ์Šค ๋ฏธ๋“ค์›จ์–ด ์ž๋™ํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Ansible: GNU ํผ๋ธ”๋ฆญ
์†”ํŠธ์Šคํƒ: ์•„ํŒŒ์น˜ 2.0
์…ฐํ”„: ์•„ํŒŒ์น˜ 2.0
๊ผญ๋‘๊ฐ์‹œ: Apache ๋˜๋Š” GPL

์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ: DevOps ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ฑ

SkillFactory์—์„œ ์œ ๋ฃŒ ์˜จ๋ผ์ธ ๊ฐ•์ขŒ๋ฅผ ์ˆ˜๊ฐ•ํ•˜์—ฌ ์›ํ•˜๋Š” ์ง์—…์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌํ•˜๊ฑฐ๋‚˜ ๊ธฐ์ˆ  ๋ฐ ๊ธ‰์—ฌ ์ธก๋ฉด์—์„œ ๋ ˆ๋ฒจ ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด์„ธ์š”.

๋” ๋งŽ์€ ๊ฐ•์ขŒ

์œ ์šฉํ•œ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€