๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TEAM STUDY/SERVER

๐Ÿ”ต์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ•์˜ 1์ฃผ์ฐจ - VM ๊ณผ Container ์ฐจ์ด

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ”ต ๊ฐ€์ƒ๋จธ์‹ (Virtual Machine, VM) ?

 

ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ๋Š” ๊ธฐ๋ณธ ์—”์ง„(AWS: EC2, GCP: GCE ๋“ฑ)์œผ๋กœ ์ œ๊ณต ๋˜๋ฉฐ 

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ๋…์ž์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์šด์˜ํ•ฉ๋‹ˆ๋‹ค. 

 

์ „๊ฐ€์ƒํ™”์˜ ๋Š๋ฆฐ ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ๋Š” ๋ฐ˜๊ฐ€์ƒํ™” ๋ฐฉ์‹์œผ๋กœ ์ผ์ • ํผํฌ๋จผ์Šค๋ฅผ ์ œ๊ณตํ•˜๋‚˜ 

๋ฆฌ์–ผ ๋จธ์‹ ์— ๋น„ํ•ด์„œ ์•„์ง๋„ ์†๋„๊ฐ€ ๋Š๋ฆฐํŽธ์ž…๋‹ˆ๋‹ค.


๋” ์‰ฝ๊ฒŒ ์„ค๋ช…์„ ํ•˜๋ฉด VMware, VirtualBox์™€ ๊ฐ™์ด Host OS์œ„์— Guest OS๋ฅผ ๊ฐ€์ƒํ™” ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. 

์˜ˆ์ „์—๋Š” Guest OS ์ „์ฒด๋ฅผ ๊ฐ€์ƒํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ๋ฒ•์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ฌด๊ฒ๊ณ  ๋Š๋ ค์„œ ์šด์˜ํ™˜๊ฒฝ์— ์ ์šฉํ•˜๊ธฐ๋Š” ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค

๊ทธ๋ž˜์„œ ํ˜„์žฌ๋Š” Xen๊ณผ ๊ฐ™์€ ๋ฐ˜๊ฐ€์ƒํ™” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 


๐Ÿ”ต Container ?

 

VM ๊ณผ ๊ฐ™์ด ๊ฐ€์ƒํ™”ํ•˜๋Š” ๋ฐฉ์‹์€ ๋ฌด๊ฒ๊ณ  ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ์— 

ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฐฉ์•ˆ์ด ๋“ฑ์žฅ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

์˜ค๋ž˜์ „๋ถ€ํ„ฐ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์€ chroot๋ผ๊ณ  ํ•˜์—ฌ 

ํŒŒ์ผ์‹œ์Šคํ…œ์—์„œ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

์ฆ‰ jail๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด์ฃ . 

(๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฒฉ๋ฆฌ) 

 

๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐˆ ์‹คํ–‰ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ค€๋น„ํ•ด์•ผํ•˜๊ณ  ์„ค์ • ๋ฐฉ๋ฒ•์ด ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

(๋ณต์žกํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์ด ์ž˜ ํ™œ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) 

 

๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด LXC(Linux Container)๋ผ๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

LXC๋Š” ๊ฐ€์ƒํ™”๋œ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

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

ํ•˜๋“œ์›จ์–ด ์ž์›๋“ค์„ cgroups์„ ํ†ตํ•ด ํ• ๋‹นํ•˜๊ณ  namespace๋ฅผ ํ™œ์šฉํ•˜์—ฌ 

ํ”„๋กœ์„ธ์Šค๋‚˜ IPC ๋“ฑ์„ ๊ฒฉ๋ฆฌ์‹œ์ผœ ๋ณ„๋กœ์˜ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. 

๋„์ปค๋„ ๊ธฐ์กด์—๋Š” LXC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


๐Ÿ”ต VM ๊ณผ Container ์ฐจ์ด

 

 

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ๋ฐ”์™€ ๊ฐ™์ด VM์€ ํ•˜์ดํผ๋ฐ”์ด์ € ์œ„์— Guest OS๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ 

๊ทธ ์œ„์— Binary์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ๋ชจ๋‘ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๊ธฐ์— ๋ฌด๊ฒ๊ณ  ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. (์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ) 

 

๊ทธ๋Ÿฐ๋ฐ ๋„์ปค์˜ ๊ฒฝ์šฐ์—๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ํ•„์š” ์—†๊ณ  ๋„์ปค์—”์ง„๋งŒ ์žˆ์œผ๋ฉด ๊ทธ ์œ„์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ๋˜๋Š” ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค. 

 

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

 

์ฆ‰ OS overhead๊ฐ€ ์—†์œผ๋‹ˆ Start Time๋„ ๋น ๋ฅด๊ณ  ์ž์› ํšจ์œจ์„ฑ๋„ ๋†’์Šต๋‹ˆ๋‹ค. 

 

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

์ด๋Ÿฐ ์‚ฌํ•ญ์„ ํ™•์žฅํ•˜๋ฉด ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ .


์ฐธ๊ณ  ์‚ฌ์ดํŠธ


728x90
๋ฐ˜์‘ํ˜•