200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

Angielski ๋ฒ„์ „

์ด๊ฑด ๋‚ด ๋…น์ทจ๋ก์ด์•ผ ๊ณต์—ฐ ์— ๋ฐ๋ธŒ์˜ต์Šค์ปจํผ๋Ÿฐ์Šค 2019-05-28.

์Šฌ๋ผ์ด๋“œ ๋ฐ ๋น„๋””์˜ค

Bash ๊ธฐ๋ก์œผ๋กœ์„œ์˜ ์ธํ”„๋ผ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

์•ฝ๊ฐ„์˜ ์š•๋ง์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Bash ๊ธฐ๋ก์œผ๋กœ์„œ์˜ ์ธํ”„๋ผ ์ด๊ฒƒ์€ ์ฝ”๋“œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ์žฌํ˜„์„ฑ: bash ๊ธฐ๋ก์„ ๊ฐ€์ ธ์™€ ๊ฑฐ๊ธฐ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ž‘์—… ๊ตฌ์„ฑ์„ ์ถœ๋ ฅ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฒ„์ „ ๊ด€๋ฆฌ: ๋ˆ„๊ฐ€ ๋“ค์–ด์™”๊ณ  ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ถœ๊ตฌ์—์„œ ์ž‘์—… ๊ตฌ์„ฑ์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.
  3. ์—ญ์‚ฌ: ๋ˆ„๊ฐ€ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ. ์„œ๋ฒ„๋ฅผ ์žƒ์œผ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌด์—‡์„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

๋งˆ๋ฅธ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์— ํ•˜์œ„ ์ž‘์—…์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๊ธฐ์ ์œผ๋กœ SDS ๊ตฌ์„ฑ: ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ถœ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

  • SSH๋ฅผ ํ†ตํ•ด ์—ฌ๊ธฐ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
  • ๊ฑฐ๊ธฐ์— ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜์„ธ์š”.
  • ์—ฌ๊ธฐ์—์„œ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•˜์„ธ์š”.
  • ๊ฑฐ๊ธฐ์„œ ์„œ๋น„์Šค ์‹œ์ž‘ํ•ด
  • ...
  • ์ด์ต!

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

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

DRY(Do not Repeat Yourself)์™€ ๊ฐ™์€ ๊ด€ํ–‰์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋Š” ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋ฐ”๋กœ ํ•ด๊ฒฐํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ตฌ์„ฑ์„ ์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ง„๋ถ€ํ•œ ์•„์ด๋””์–ด์˜€์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์„ค์น˜๊ฐ€ ๋ณ„๋„๋กœ ๋ฐฐํฌ๋˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ, ๋ณ„๋„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

CFM์šฉ ์†”๋ฆฌ๋“œ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

๋‹จ์ผ ์ฑ…์ž„ ์›์น™

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

๊ฐ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

๊ฐœ๋ฐฉํ˜• ํ์‡„ ์›์น™

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

๊ฐœ๋ฐฉ/ํ์‡„ ์›์น™.

  • ํ™•์žฅ ๊ฐ€๋Šฅ: ์ƒˆ๋กœ์šด ์—”ํ„ฐํ‹ฐ ์œ ํ˜•์„ ์ƒ์„ฑํ•˜์—ฌ ์—”ํ„ฐํ‹ฐ์˜ ๋™์ž‘์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ํ์‡„: ์—”ํ„ฐํ‹ฐ์˜ ๋™์ž‘์„ ํ™•์žฅํ•œ ๊ฒฐ๊ณผ ํ•ด๋‹น ์—”ํ„ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

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

๋ฆฌ์Šค์ฝ”ํ”„ ๋Œ€์ฒด ์›์น™

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

๋ฐ”๋ฐ”๋ผ ๋ฆฌ์Šค์ฝ”ํ”„์˜ ๋Œ€์ฒด ์›๋ฆฌ. ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ์ฒด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ฌ๋ฐ”๋ฅธ ์‹คํ–‰์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ํ•ด๋‹น ํ•˜์œ„ ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ธํ”„๋ผ ํŒ€ ๋‚ด์—์„œ๋Š” imbjava ๋˜๋Š” oraclejava ์—ญํ• ์„ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ Java ๋ฐ”์ด๋„ˆ๋ฆฌ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค๋Š” ํ•ฉ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ์—…์ŠคํŠธ๋ฆผ ์—ญํ• ์€ ์ด ๋™์ž‘์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ java๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ๋กœ์ง์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ํ•˜๋‚˜์˜ Java ๊ตฌํ˜„/๋ฒ„์ „์„ ๋‹ค๋ฅธ Java ๊ตฌํ˜„/๋ฒ„์ „์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ์ด๋ฅผ Ansible์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ํŒ€ ๋‚ด์— ์ผ๋ถ€ ํ•ฉ์˜๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค๋Š” ์‚ฌ์‹ค์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™: โ€œ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋ณ„ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•˜๋‚˜์˜ ๋ฒ”์šฉ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

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

์ข…์†์„ฑ ๋ฐ˜์ „ ์›์น™

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์˜์กด์„ฑ ์—ญ์ „์˜ ์›๋ฆฌ. ๋†’์€ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์€ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ชจ๋“ˆ ๋ชจ๋‘ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”์ƒํ™”๋Š” ์„ธ๋ถ€์‚ฌํ•ญ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์ถ”์ƒํ™”์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์˜ˆ์ œ๋Š” ์•ˆํ‹ฐํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ณ ๊ฐ ์ค‘ ํ•œ ๋ช…์€ ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ์šฐ๋ฆฌ๋Š” ํด๋ผ์šฐ๋“œ ๋‚ด๋ถ€์— ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ฃผ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. ๊ทธ๋Ÿฌ๋‚˜ ํด๋ผ์šฐ๋“œ์˜ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋Š” VM์ด โ€‹โ€‹์–ด๋Š ํ•˜์ดํผ๋ฐ”์ด์ €์— ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

์ƒํ˜ธ ์ž‘์šฉ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ฝ”๋“œํ˜• ์ธํ”„๋ผ๋Š” ์ฝ”๋“œ์— ๊ด€ํ•œ ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ์™€ ์‚ฌ๋žŒ ๊ฐ„์˜ ๊ด€๊ณ„, ์ธํ”„๋ผ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฒ„์Šค ํŒฉํ„ฐ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

ํŽ˜์–ด ๋ฐ๋ธŒ์˜ต์‹ฑ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

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

์ฝ”๋“œ ๊ฒ€ํ† 

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

  • ์ธํ”„๋ผ๋Š” ์ €์žฅ์†Œ์˜ ์ฝ”๋“œ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ณ„๋„์˜ ๋ถ„๊ธฐ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘ํ•ฉ ์š”์ฒญ ์ค‘์— ์ธํ”„๋ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ธํƒ€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ”๋“œ ์Šคํƒ€์ผ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ฆฌ๋ทฐ ์ค‘์— ๋ง๋‹คํˆผ์ด ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ์–ด๋“ค์€ ์ž์‹ ๋งŒ์˜ ์Šคํƒ€์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ณ  ๋ฆฌ๋ทฐ์–ด๋“ค์˜ ์ˆœํ™˜์— ๋”ฐ๋ผ ๊ณต๋ฐฑ 2๊ฐœ ๋˜๋Š” 4๊ฐœ, camelCase ๋˜๋Š” snake_case ๋“ฑ ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ๋กœ ์Œ“์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์•„์ด๋””์–ด๋Š” linter ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์—”์ง€๋‹ˆ์–ด์ด๊ณ  ๋ชจ๋‘ ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํŽธ์ง‘๊ธฐ, OS๋Š” ํŽธ๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ด๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฐ ์ปค๋ฐ‹์— ๋Œ€ํ•ด Slack์— ์ž‘์„ฑํ•˜๊ณ  linter ์ถœ๋ ฅ์„ ์ฒจ๋ถ€ํ•˜๋Š” ๋ด‡์œผ๋กœ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ•ด์•ผ ํ•  ๋” ์ค‘์š”ํ•œ ์ผ์ด ์žˆ์—ˆ๊ณ  ์ฝ”๋“œ๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ฑ„๋กœ ๋‚จ์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฐ ๋นŒ๋“œ ๋งˆ์Šคํ„ฐ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์‹œ๊ฐ„์ด ํ๋ฅด๊ณ  ํŠน์ • ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ ์ปค๋ฐ‹์€ ๋งˆ์Šคํ„ฐ์— ํ—ˆ์šฉ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์งœ์ž”! ์šฐ๋ฆฌ๋Š” ์˜ค๋žซ๋™์•ˆ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ํ™œ์šฉ๋˜์–ด ์˜จ Green Build Master๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ„๋„์˜ ์ง€์ ์—์„œ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
  • ์ด ์Šค๋ ˆ๋“œ์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋งˆ์Šคํ„ฐ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

IaC ํ…Œ์ŠคํŠธ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

์™œ ๋ณต์žกํ•œ ์ธํ”„๋ผ๋ฅผ ๋”์šฑ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š”๊ฐ€? ์ฝ”๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธํ”„๋ผ ํ…Œ์ŠคํŠธ๋Š” ๋‹จ์ˆœํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ์ธํ”„๋ผ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

IaC ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

IaC ํ…Œ์ŠคํŠธ: ์ •์  ๋ถ„์„

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

๋ฐฐ์‰ฌ๋Š” ๊นŒ๋‹ค๋กญ๋‹ค

๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  ๋‹ค๋ฅธ ์œ„์น˜์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ์€:

for i in * ; do 
    cp $i /some/path/$i.bak
done

ํŒŒ์ผ ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ๊ธ€์Ž„์š”, ์šฐ๋ฆฌ๋Š” ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

for i in * ; do cp "$i" "/some/path/$i.bak" ; done

์ž˜ํ•˜์…จ์–ด์š”? ์•„๋‹ˆ์š”! ๋””๋ ‰ํ† ๋ฆฌ์— ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ธ€๋กœ๋น™์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

find . -type f -exec mv -v {} dst/{}.bak ;

์ด์ œ ์ž˜ ๋๋‚˜์š”? ์•„๋‹ˆ์š”... ํŒŒ์ผ ์ด๋ฆ„์— ๋ฌด์—‡์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. n.

touch x
mv x  "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir

์ •์  ๋ถ„์„ ๋„๊ตฌ

์ด์ „ ๋‹จ๊ณ„์˜ ๋ฌธ์ œ๋Š” ์ธ์šฉ๋ฌธ์„ ์žŠ์–ด๋ฒ„๋ ธ์„ ๋•Œ ๋ฐœ๊ฒฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์—ฐ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‰˜์ฒดํฌ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์œผ๋ฉฐ IDE์—์„œ ์Šคํƒ์— ๋Œ€ํ•œ ๋ฆฐํ„ฐ๋ฅผ ์ฐพ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์ง€์›ํ•˜๋Š” ์–ธ์–ด
์ˆ˜๋‹จ

์„ธ๊ฒŒ ๋•Œ๋ฆฌ๋‹ค
์‰˜์ฒดํฌ

๋ฃจ๋น„
๋ฃจ๋ณด์บ…

ํŒŒ์ด์ฌ
Pylint

๋จน์„ ์ˆ˜์žˆ๋Š”
์•ค์„œ๋ธ” ๋ฆฐํŠธ

IaC ํ…Œ์ŠคํŠธ: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ด์ „ ์˜ˆ์—์„œ ๋ณด์•˜๋“ฏ์ด ๋ฆฐํ„ฐ๋Š” ์ „๋Šฅํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ชจ๋“  ๋ฌธ์ œ ์˜์—ญ์„ ์ง€์ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ํ…Œ์ŠคํŠธ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์žฅ ์ƒ๊ฐ๋‚˜๋Š” ๊ฒƒ์€ ์Šˆ๋‹ˆํŠธ, ์ฃผ๋‹ˆํŠธ, rspec, ํŒŒ์ด ํ…Œ์ŠคํŠธ. ํ•˜์ง€๋งŒ Ansible, Chef, SaltStack ๋ฐ ์ด์™€ ์œ ์‚ฌํ•œ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

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

  1. ์ธํ”„๋ผ๋Š” Ansible ์—ญํ• ๊ณผ ๊ฐ™์€ ์ž‘์€ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
  2. Docker ๋˜๋Š” VM๊ณผ ๊ฐ™์€ ์ผ์ข…์˜ ํ™˜๊ฒฝ์ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  3. ์ด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— Ansible ์—ญํ• ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค).
  5. ์šฐ๋ฆฌ๋Š” ๊ดœ์ฐฎ์€์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

IaC ํ…Œ์ŠคํŠธ: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋„๊ตฌ

์งˆ๋ฌธ, CFM ํ…Œ์ŠคํŠธ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ„๋‹จํžˆ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์ด๋ฅผ ์œ„ํ•ด ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CFM
์ˆ˜๋‹จ

์ฑ…์ž„๊ฐ์žˆ๋Š”
ํ…Œ์ŠคํŠธ์ธํ”„๋ผ

์š”๋ฆฌ์‚ฌ
์ธ์Šค ํŽ™

์š”๋ฆฌ์‚ฌ
์„œ๋ฒ„ ์‚ฌ์–‘

์—ผ์ „
๊ณ ์Šค

testinfra์˜ ์˜ˆ, ์‚ฌ์šฉ์ž ํ™•์ธ test1, test2 ์กด์žฌํ•˜๋ฉฐ ๊ทธ๋ฃน์— ์†ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. sshusers:

def test_default_users(host):
    users = ['test1', 'test2' ]
    for login in users:
        assert host.user(login).exists
        assert 'sshusers' in host.user(login).groups

๋ฌด์—‡์„ ์„ ํƒํ• ๊นŒ์š”? ์งˆ๋ฌธ์€ ๋ณต์žกํ•˜๊ณ  ๋ชจํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ 2018-2019๋…„ github ํ”„๋กœ์ ํŠธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

IaC ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

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

CFM
์ˆ˜๋‹จ

์ฑ…์ž„๊ฐ์žˆ๋Š”
๋ถ„์ž

์š”๋ฆฌ์‚ฌ
์ฃผ๋ฐฉ ํ…Œ์ŠคํŠธ

ํ…Œ๋ผ ํผ
ํ…Œ๋ผํ…Œ์ŠคํŠธ

2018~2019๋…„ github ํ”„๋กœ์ ํŠธ ๋ณ€๊ฒฝ ์˜ˆ:

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

๋ถ„์ž ๋Œ€ ํ…Œ์ŠคํŠธํ‚ค์นœ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ฒ˜์Œ์— ์šฐ๋ฆฌ๋Š” testkitchen์„ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.:

  1. VM์„ ๋ณ‘๋ ฌ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. Ansible ์—ญํ• ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

25~35๊ฐœ ์—ญํ• ์˜ ๊ฒฝ์šฐ 40~70๋ถ„ ๋™์•ˆ ์ž‘๋™ํ–ˆ๋Š”๋ฐ ์ด๋Š” ๊ธด ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

๋‹ค์Œ ๋‹จ๊ณ„๋Š” jenkins/docker/ansible/molecule๋กœ์˜ ์ „ํ™˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋…์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋™์ผํ•ฉ๋‹ˆ๋‹ค

  1. ๋ฆฐํŠธ ํ”Œ๋ ˆ์ด๋ถ.
  2. ์—ญํ• ์„ ์ •๋ ฌํ•˜์‹ญ์‹œ์˜ค.
  3. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
  4. Ansible ์—ญํ• ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  5. ํ…Œ์ŠคํŠธ์ธํ”„๋ผ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.
  6. ๋ฉฑ๋“ฑ์„ฑ์„ ํ™•์ธํ•˜์„ธ์š”.

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

40๊ฐœ ์—ญํ• ์— ๋Œ€ํ•œ Linting๊ณผ 15๊ฐœ ์—ญํ• ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์—๋Š” ์•ฝ XNUMX๋ถ„์ด ์†Œ์š”๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

๋ฌด์—‡์„ ์„ ํƒํ• ์ง€๋Š” ์‚ฌ์šฉ๋œ ์Šคํƒ, ํŒ€์˜ ์ „๋ฌธ์„ฑ ๋“ฑ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์š”์†Œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋‘๊ฐ€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์งˆ๋ฌธ์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

IaC ํ…Œ์ŠคํŠธ: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ธํ”„๋ผ ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  1. ์ธํ”„๋ผ๋Š” Ansible ์—ญํ• ๊ณผ ๊ฐ™์€ ์ž‘์€ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
  2. Docker ๋˜๋Š” VM๊ณผ ๊ฐ™์€ ์ผ์ข…์˜ ํ™˜๊ฒฝ์ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
  3. ์ด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์— ์ ์šฉ ์„ธํŠธ Ansible ์—ญํ• .
  4. ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค).
  5. ์šฐ๋ฆฌ๋Š” ๊ดœ์ฐฎ์€์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

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

IaC ํ…Œ์ŠคํŠธ: ์ข…๋‹จ ๊ฐ„ ํ…Œ์ŠคํŠธ

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

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

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์—ฐ๊ตฌ ์•„์ด๋””์–ด๋Š” ๋” ๋‚˜์•„๊ฐ€ ์˜คํ”ˆ์‹œํ”„ํŠธ์—์„œ ์ธํ”„๋ผ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์‹์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” APB(Ansible Playbook Bundle)์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์ธํ”„๋ผ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ง€์‹ ์ง€์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ด๊ธฐ์ข… ์ธํ”„๋ผ๋ฅผ ๋งŒ๋‚˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ๊ฒŒ ๋“ค๋ ธ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์—๋Š” Windows๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฌด์—‡์„, ์–ด๋””์„œ, ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ• ์ง€์— ๋Œ€ํ•œ ์ง€์‹์ด ์  ํ‚จ์Šค์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

200์ค„์˜ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ

์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ

  • ์ €์žฅ์†Œ์˜ ์ฝ”๋“œ.
  • ์ธ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ.
  • ์ธํ”„๋ผ ํ…Œ์ŠคํŠธ.

๋ชจ๋ž˜๋ฐญ

์ถœ์ฒ˜ : habr.com

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