์ด์ „ ๊ธ€์—์„œ ๊ฐ€์ƒํ™”์™€ ํ•˜์ดํผ๋ฐ”์ด์ €์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค.

 

ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ๋‹ค์‹œ ๊ฐ€์ƒํ™” ๋ฐฉ์‹์— ๋”ฐ๋ผ Full Virtualization๊ณผ Para Virtaulization์œผ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

 

Full Virtualization (์ „๊ฐ€์ƒํ™”)

ํ•˜๋“œ์›จ์–ด๋ฅผ ์™„์ „ํžˆ ๊ฐ€์ƒํ™”ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ „๋ถ€ ๊ฐ€์ƒํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Guest OS๊ฐ€ Host ์‹œ์Šคํ…œ๊ณผ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋˜์–ด ์‹คํ–‰๋œ๋‹ค. ๋”ฐ๋ผ์„œ Guest OS๋Š” ์ž์‹ ์ด VM์˜ OS์ธ์ง€ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ Guest OS๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ์กด์žฌ๋ฅผ ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

Hardware์™€ Guest OS ์‚ฌ์ด์— Hypervisor๊ฐ€ ๋ถ„๋ช… ์กด์žฌํ•˜์ง€๋งŒ, VM ์ž…์žฅ์—์„œ๋Š” ๊ฐ€์ƒํ™”๋œ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ง„์งœ(๋ฌผ๋ฆฌ) ํ•˜๋“œ์›จ์–ด๋กœ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ ๋ฌผ๋ฆฌ ์ž์›์— ๋Œ€ํ•ด ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋œ๋‹ค. ์›๋ž˜ system call์— ์˜ํ•ด App → Kernel → Hardware ์ˆœ์„œ๋กœ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์„ ํ•˜์ดํผ๋ฐ”์ด์ € ๋‹จ์—์„œ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ดํผ๋ฐ”์ด์ € ๊ด€๋ฆฌ์šฉ ๊ฐ€์ƒ๋จธ์‹ ์ด ์‹คํ–‰๋˜๋ฉฐ, ๋ชจ๋“  ๊ฐ€์ƒ๋จธ์‹ ๋“ค์˜ ํ•˜๋“œ์›จ์–ด ์ ‘๊ทผ์ด ํ•ด๋‹น ๊ด€๋ฆฌ ๋จธ์‹ ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค.

 

Hardware Assisted Full Virtualization vs Software Assisted Full Virtualization

Full Virtualization์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•˜๋“œ์›จ์–ด ์ง€์› ์ „๊ฐ€์ƒํ™”์™€ ์†Œํ”„ํŠธ์›จ์–ด์  ์ „๊ฐ€์ƒํ™”๋กœ ๋‚˜๋‰œ๋‹ค. ์‚ฌ์‹ค ์ „๊ฐ€์ƒํ™”๋Š” ํ•˜๋“œ์›จ์–ด ์ง€์› ์ „๊ฐ€์ƒํ™”์™€ ๋™์ผํ•œ ๊ฐœ๋…์œผ๋กœ ์–ธ๊ธ‰๋œ๋‹ค.

 

ํ•˜๋“œ์›จ์–ด ์ง€์› ์ „๊ฐ€์ƒํ™”์˜ ๊ฒฝ์šฐ, Trap๊ณผ Emulation์„ ์ด์šฉํ•ด Guest OS์˜ Application์ด ์ง์ ‘ ํ•˜๋“œ์›จ์–ด์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

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

 

Dual-mode operation

OS๋Š” Dual-mode operation(์ด์ค‘ ๋™์ž‘ ๋ชจ๋“œ)๋ผ๋Š” ๊ฒƒ์„ ์ง€์›ํ•œ๋‹ค. ์‚ฌ์šฉ์ž์™€ OS๋Š” ์‹œ์Šคํ…œ ์ž์›์„ ๊ณต์œ ํ•˜๋Š”๋ฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ์ฃผ์š” ์ž์›๋“ค์„ ๋ง๊ฐ€๋œจ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ณดํ˜ธํ•˜๊ณ ์ž ๋งˆ๋ จ๋œ ์žฅ์น˜์ด๋‹ค.

์ด์ค‘ ๋™์ž‘ ๋ชจ๋“œ๋Š” ์‚ฌ์šฉ์ž๋ชจ๋“œ์™€ ์ปค๋„๋ชจ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” application์ด ์‚ฌ์šฉ์ž๋ชจ๋“œ์—์„œ ์ž‘๋™๋˜๊ฑฐ๋‚˜ OS์—๊ฒŒ system call์„ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ปค๋„๋ชจ๋“œ๋กœ ๋ฐ”๊ฟ” ์š”์ฒญ๋œ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•œ ํ›„์— ๋‹ค์‹œ ์‚ฌ์šฉ์ž๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

Trap & Emulation

์ผ๋‹จ pass

 

Binary Translation

Guest OS๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ OS๊ฐ€ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ์—, ๊ฐ€์ƒํ™”๋œ ํ•˜๋“œ์›จ์–ด ์š”์ฒญ์„ ํ•  ๋•Œ OS๋งˆ๋‹ค ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ๊ธฐ ๋‹ค๋ฅด๋‹ค. ์ด๋Ÿฐ ๋‹ค์–‘ํ•œ ํ˜•์‹์„ ํ•˜๋‚˜์˜ ํ˜•์‹์œผ๋กœ ๋ฒˆ์—ญํ•ด์ฃผ๋Š” ์ž‘์—… Binary Translation์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‹น์—ฐํžˆ ์ด ๊ณผ์ •์—์„œ๋„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

Para Virtualization (๋ฐ˜๊ฐ€์ƒํ™”)

Full Virtualization์˜ ๊ฒฝ์šฐ ๊ฑฐ์ณ์•ผ ํ•  ๋‹จ๊ณ„๊ฐ€ ๋งŽ์•„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์„ฑ๋Šฅ์ด ๋А๋ ค์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž Para Virtualization์ด ๋“ฑ์žฅํ–ˆ๋‹ค.

๋ฐ˜๊ฐ€์ƒํ™”์˜ ํ•ต์‹ฌ์€ Hypercall์ด๋‹ค. ๋ฐ˜๊ฐ€์ƒํ™”์— ์‚ฌ์šฉ๋˜๋Š” Guest OS๋Š” Hypercall์ด๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํ•˜์ดํผ๋ฐ”์ด์ €์—๊ฒŒ ์ง์ ‘ ์š”์ฒญ์„ ๋‚ ๋ฆฐ๋‹ค. ๋ฐฉ์‹์€ ์‚ฌ์‹ค OS์—์„œ application์ด kernel์—๊ฒŒ system call๋กœ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๋‹ค. ์š”์ฒญ์„ ๋‚ ๋ฆฌ๋Š” ์ฃผ์ฒด๊ฐ€ Guest OS์ด๊ณ , ๋ฐ›๋Š” ๋Œ€์ƒ์ด ํ•˜์ดํผ๋ฐ”์ด์ €๋ผ๋Š” ์ ์ด ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.

 

 

์ „๊ฐ€์ƒํ™”์—์„œ Guest OS๋Š” ์ž์‹ ์ด Guest OS์ธ์ง€ ๋ชจ๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜๊ฐ€์ƒํ™”์—์„œ๋Š” Guest OS๊ฐ€ Hypervisor์— ์ง์ ‘ Hypercall์„ ๋‚ ๋ ค์•ผ ๋˜๋ฏ€๋กœ, ์ž์‹ ์ด Guest OS๋ผ๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๊ฐ€์ƒํ™” ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ฌ๋ผ๊ฐ€๋Š” Guest OS๋Š” ์ปค๋„์„ ์ˆ˜์ •ํ•ด, Guest์šฉ OS๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

 

 

์ •๋ฆฌ

ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ€์ƒํ™”(Type1)

  • ์ „๊ฐ€์ƒํ™” : Guest OS์˜ ์ˆ˜์ •์ด ํ•„์š”์—†๋„๋ก ํ•˜๋“œ์›จ์–ด ์ „์ฒด๋ฅผ ๊ฐ€์ƒํ™”ํ•˜๋Š” ๊ธฐ์ˆ 
  • ๋ฐ˜๊ฐ€์ƒํ™” : Guest OS๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ํŠน์ • ๋ช…๋ น์ด ์ˆ˜ํ–‰๋  ๋•Œ Hypercall์„ ํ˜ธ์ถœํ•˜์—ฌ ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ 

 

 

 

 

 

 

 

์ฐธ๊ณ ๋งํฌ

๊ฐ€์ƒํ™” (Virtualization)

๊ฐ€์ƒํ™”๋ž€?

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ๋ฌผ๋ฆฌ์ ์ธ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ

 

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

 

VM๊ณผ ์ปจํ…Œ์ด๋„ˆ

๊ฐ€์ƒํ™”์˜ ํ•ต์‹ฌ์€ Isolation์ด๋‹ค. ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฒฉ๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€๋ฉด, ๊ฐ๊ฐ์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„, ๋‹ค๋ฅธ ์˜์—ญ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

 

๊ฐ€์ƒํ™”๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ๊ฐ€์ƒ๋จธ์‹ (vm)๊ณผ ์ปจํ…Œ์ด๋„ˆ(container)์ด๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๊ผญ ์•Œ์•„๋‘์–ด์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

๊ฐ€์ƒํ™” ๊ด€์ ์—์„œ ๋‘ ๊ฐœ์˜ ์ฐจ์ด์ ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ฐ€์ƒ๋จธ์‹ ์€ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์ „์ฒด๋ฅผ ๊ฐ€์ƒํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , ์ปจํ…Œ์ด๋„ˆ๋Š” OS ์ˆ˜์ค€์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆ ํ˜•ํƒœ๋กœ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๋‘ ๋ฐฉ์‹์€ ์ฐจ์ด์ ์ด ํ™•์‹คํ•˜์—ฌ ๊ทธ์— ๋”ฐ๋ฅธ ์žฅ๋‹จ์ ๋„ ๋ถ„๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ๊ฐ์˜ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ๊ณผ ์ฒ ํ•™์„ ์ดํ•ดํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ€์ƒํ™”์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์–ด๋ณด๊ฒ ๋‹ค.

 

 

ํ•˜์ดํผ๋ฐ”์ด์ € (Hypervisor)

ํ•˜์ดํผ๋ฐ”์ด์ €๋ž€?

๊ฐ€์ƒํ™”์—์„œ ๊ณ„์† ํ•˜์ดํผ๋ฐ”์ด์ €๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์–ธ๊ธ‰ํ–ˆ๋Š”๋ฐ, ํ•˜์ดํผ๋ฐ”์ด์ €๋ž€ ๋Œ€์ฒด ๋ฌด์—‡์ผ๊นŒ?

 

  • ๊ฐ€์ƒ ๋จธ์‹ (VM)์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด
  • ๊ฐ€์ƒ ๋จธ์‹  ๋ชจ๋‹ˆํ„ฐ(VMM)๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
  • ํ•˜์ดํผ๋ฐ”์ด์ € ์šด์˜ ์ฒด์ œ์™€ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด VM์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ ์ง€์›ํ•จ
  • ์„œ๋กœ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์šด์˜ ์ฒด์ œ๋ฅผ ๋‚˜๋ž€ํžˆ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ์Œ

 

์•„์ง ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ ๋œ๋‹ค๋ฉด, Hypervisor๋ผ๋Š” ์ด๋ฆ„์„ ๋œฏ์–ด๋ณด์ž!

In general, operating systems are referred as supervisors.
As a hypervisor software is a supervisor of a “supervisor”, it is called hypervisor.

์ผ๋ฐ˜์ ์œผ๋กœ ์šด์˜์ฒด์ œ๋ฅผ supervisor๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” supervisor์˜ supervisor๋ผ๊ณ  ํ•œ๋‹ค.

 

 

Type 1 vs Type 2

๊ฐ€์ƒํ™”๋Š” ํฌ๊ฒŒ Type1์™€ Type2๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

Type1 ๋ฐฉ์‹์€ Native ํ˜น์€ ๋ฒ ์–ด๋ฉ”ํƒˆ(Bare Metal)ํ˜• ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ€์ƒํ™”๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ๋ฒ ์–ด๋ฉ”ํƒˆ์ด๋ž€ ํ•˜๋“œ์›จ์–ด ์ƒ์— ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด๋„ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ์ƒํƒœ์ด๋‹ค. Type1์€ ๋ฒ ์–ด๋ฉ”ํƒˆ ํ•˜๋“œ์›จ์–ด ์œ„์— ์ง์ ‘ ์„ค์น˜๋˜์–ด ๊ตฌ๋™๋œ๋‹ค. ESX-i(vmware), Xen, KVM, XenServer(citrix), Hyper-V(Microsoft) ๋“ฑ์ด ์žˆ๋‹ค. ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ์ „๊ฐ€์ƒํ™”์™€ ๋ฐ˜๊ฐ€์ƒํ™”๋กœ ๋‚˜๋‰œ๋‹ค.

 

Type2 ๋ฐฉ์‹์€ Host ๊ฐ€์ƒํ™”๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฒ ์–ด๋ฉ”ํƒˆ ํ•˜๋“œ์›จ์–ด ์œ„์— Host OS๊ฐ€ ์„ค์น˜๋˜๊ณ , ๊ทธ ์œ„์— ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” Oracle VirtualBox๋‚˜ VMware Workstation์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น๋œ๋‹ค.

 

Type2 ๋ฐฉ์‹ Host OS๋ผ๋Š” ํ•˜๋‚˜์˜ ๋ ˆ์ด์–ด๊ฐ€ ๋” ์กด์žฌํ•˜๋ฏ€๋กœ, ์„ฑ๋Šฅ ๋ฉด์—์„œ Type1์ด Type2๋ณด๋‹ค ์œ ๋ฆฌํ•˜๋‹ค. ์‹ค์ œ IDC ํด๋ผ์šฐ๋“œํ™” ์‹œํ‚ค๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๋„ ๋ชจ๋‘ Type1 ๋ฐฉ์‹์ด๋‹ค.

 

 

 

 

 

 

์ฐธ๊ณ ๋งํฌ

Ansible๊ณผ Vagrant๋Š” ๋‘˜ ๋‹ค ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ์ž๋™ํ™”์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด์ง€๋งŒ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ์ž‘๋™ ๋ฐฉ์‹ ์ธก๋ฉด์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Ansible

์„œ๋ฒ„ ๋ฐ ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Python ๊ธฐ๋ฐ˜์˜ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ์ž๋™ํ™” ๋„๊ตฌ

๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์ž๋™ํ™” ์‹œ์Šคํ…œ

์ฝ”๋“œ๋กœ ์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— IaC(Infrastructure as Code)๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•จ

ํŠน์ง•

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

์žฅ์ 

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

๋‹จ์ 

  • ๋งŽ์€ ์–‘์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•  ๋•Œ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค. (์ด๋•Œ๋ฌธ์— Nornir๊ฐ€ ๊ฐœ๋ฐœ๋จ)

 

โœ…  ๊ณต์‹๋ฌธ์„œ

https://www.redhat.com/ko/technologies/management/ansible/what-is-ansible

 

Ansible์ด๋ž€? ๊ฐœ๋…, ์ž‘๋™ ๋ฐฉ์‹, ์•ค์„œ๋ธ” ์„ค์น˜, ์•ค์„œ๋ธ” ํ”Œ๋ ˆ์ด๋ถ

Ansible์€ ์˜คํ”ˆ์†Œ์Šค IT ์ž๋™ํ™” ํˆด์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋น„์ €๋‹, ๊ตฌ์„ฑ ๊ด€๋ฆฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ๊ธฐํƒ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ˆ˜๋™ IT ์—…๋ฌด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

www.redhat.com

 

Vagrant

๊ฐ€์ƒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Ruby ๊ธฐ๋ฐ˜ ๋„๊ตฌ

์†Œ๊ทœ๋ชจ VM ์„ธํŠธ๋ฅผ ์ผ๊ด€๋œ ์ƒ์„ฑ์„ ์ž๋™ํ™”ํ•˜๋Š”๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ

ํ”„๋กœ๋น„์ €๋‹(Provisioning) ๋„๊ตฌ๋ผ๊ณ  ํ•˜๊ธฐ๋„ ํ•จ

ํŠน์ง•

  • ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์„ค๋ช…ํ•˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์ธ Vagrantfile์„ ์‚ฌ์šฉ
  • ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ œ์–ด ๋จธ์‹ ์—์„œ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” ํ’€ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉ
  • ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • Virtualbox, VMware ๋˜๋Š” Hyper-V์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ฐ€์ƒํ™” ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•จ๊ป˜ ์ž‘๋™
  • ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ณ  ์ด์‹ ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ

์žฅ์ 

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

๋‹จ์ 

  • ์ธํ”„๋ผ ๋ณ€๊ฒฝ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

Vagrant๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ?

Vagrant๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด

๋ฒ„์ถ”์–ผ๋ฐ•์Šค์—์„œ ๊ฐ๊ฐ์˜ ๊ฐœ๋ณ„ ๊ฐ€์ƒ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๊ณ  ํ•œ๋Œ€์”ฉ ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

Vagrant๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด

Vagrantfile์—์„œ ๊ฐ€์ƒ๋จธ์‹ ์— ๋Œ€ํ•œ ์„ค์ •๊ณผ ์„ธํŒ…์„ ๋ฏธ๋ฆฌ ํ•ด๋†“์„ ์ˆ˜ ์žˆ์–ด

Provisioning ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ก Provisioning ์ด๋ž€?

๋”๋ณด๊ธฐ

์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋งž๊ฒŒ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น, ๋ฐฐ์น˜, ๋ฐฐํฌํ•ด ๋‘์—ˆ๋‹ค๊ฐ€ ํ•„์š”์‹œ ์‹œ์Šคํ…œ์„ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด๋‘๋Š” ๊ฒƒ

 

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

 

โœ…  ๊ณต์‹๋ฌธ์„œ

https://developer.hashicorp.com/vagrant/downloads

 

Install | Vagrant | HashiCorp Developer

Explore Vagrant product documentation, tutorials, and examples.

developer.hashicorp.com

 

์ •๋ฆฌ

๋ถ„๋ฅ˜๋ฅผ ํ•ด๋ณด์ž๋ฉด Ansible์€ "์„œ๋ฒ„ ๊ตฌ์„ฑ ๋ฐ ์ž๋™ํ™”", Vagrant๋Š” "๊ฐ€์ƒ ๋จธ์‹  ๊ด€๋ฆฌ" ์ž…๋‹ˆ๋‹ค.

 

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

 

Ansible๊ณผ Vagrant๋Š” ๋‹ค๋ฅธ ๋ถ„๋ฅ˜์—ฌ์„œ ๋‘๊ฐœ๋ฅผ ์™œ ๋น„๊ต๋ฅผ ํ•˜์ง€? ํ• ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ธํ”„๋ผ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๋‘ ๊ฐœ๋…์ด ์–ด๋–ค ํŠน์ง•์ด ์žˆ๊ณ  ์–ด๋А ์ƒํ™ฉ์—์„œ ์“ฐ๋Š”๊ฑด์ง€ ํ™•์‹คํžˆ ์•Œ๊ณ  ์‹ถ์–ด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š

 

 

๐Ÿ”œ ๋” ์•Œ์•„๋ณผ ๋‚ด์šฉ

  • Terraform

 

 

์ฐธ๊ณ 

https://junior-developer.tistory.com/73

https://ganbarujoy.tistory.com/27

https://www.daddyprogrammer.org/post/7369/ansible-vagrant/

https://www.techtarget.com/searchnetworking/tip/Ansible-vs-Terraform-vs-Vagrant-Whats-the-difference

Ansible์€ ์„œ๋ฒ„ ๋ฐ ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๋ฐ ์ž๋™ํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

 

ํŠน์ง•

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

 

์‚ฌ์šฉ ์˜ˆ์‹œ

Ansible์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„์— ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜
  • Nginx, MySQL ๋ฐ Apache์™€ ๊ฐ™์€ ์„œ๋น„์Šค ๊ตฌ์„ฑ
  • ๊ด€๋ฆฌ ์‚ฌ์šฉ์ž ๋ฐ ๊ทธ๋ฃน ์ƒ์„ฑ
  • ๊ด€๋ฆฌ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ์ƒ์„ฑ
  • ๊ด€๋ฆฌ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค(์˜ˆ: Amazon EC2 ์ธ์Šคํ„ด์Šค) ๊ด€๋ฆฌ
  • ํ”„๋กœ๋น„์ €๋‹ ์ง€์†์ ์ธ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ

 

์ •๋ฆฌ

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

+ Recent posts