๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’Ž/DevOps

[DevOps] ์ปจํ…Œ์ด๋„ˆ์˜ ์ดํ•ด : ์™œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘์š”ํ•ด์กŒ์„๊นŒ?

by dar0m! 2021. 8. 3.

Immutable Infrastructure (๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ) ํƒ„์ƒ ๋ฐฐ๊ฒฝ

mutable Infrastructure (๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ)

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

์„œ๋ฒ„์˜ ๊ฒฝ์šฐ์—๋Š” OS ์„ค์ • ๋ณ€๊ฒฝ์ด๋‚˜ ์—…๋ฐ์ดํŠธ ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—

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

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•œ ์ดํ›„์—๋Š” ๋ณ€๊ฒฝ์ด๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜๋Š” Immutable Infrastructure (๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ ํ•œ ์ธํ”„๋ผ) ์ด๋‹ค.

 

Immutable Infrastructure (๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ) 

“๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ” ๋ž€ ์„œ๋ฒ„๋ฅผ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ(Immutable) ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

๋งŒ์•ฝ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์•„์˜ˆ ์ƒˆ๋กœ์šด ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์„œ๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋ฐ”๋กœ “์„œ๋ฒ„๋ฅผ ํ•ญ์ƒ ๊นจ๋—(Clean)ํ•œ ์ƒํƒœํ•œ ์ƒํƒœ๋กœ ์œ ์ง€” ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

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

Immutable Infrastructure ์˜ ๋ฐฐ๊ฒฝ ๊ธฐ์ˆ ๋กœ๋Š” ์˜คํ†  ์Šค์ผ€์ผ๋ง(Auto Scaling)๊ณผ ๋ธ”๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ ๋ฐฉ์‹(Blue-Green Deployment) ๊ฐ€ ์žˆ๋‹ค.

  • Auto Scaling์€ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์„œ๋ฒ„ ๋Œ€์ˆ˜๋ฅผ ์ฆ๊ฐ์‹œํ‚ค๋Š” ๊ธฐ์ˆ 
    • ํ•ญ์ƒ ํ•„์š”ํ•œ ๋Œ€์ˆ˜๋งŒ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ ์ ˆ๊ฐ๋œ๋‹ค. Auto Scaling์€ ์„œ๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ์ผํšŒ์šฉ์œผ๋กœ ์“ฐ๊ณ  ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Blue-Green Deployment ์ฃผ๋กœ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์ ์šฉ๋˜๋Š” ๋ฐฐํฌ ํŒจํ„ด
    • ์ง€๊ธˆ๊นŒ์ง€์˜ ๋ฐฐํฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„œ๋ฒ„์— ๋ณต์‚ฌํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Blue-Green Deployment์—์„œ๋Š” ์„œ๋ฒ„ ๊ทธ๋ฃน์„ ํ†ต์งธ๋กœ ๋ณต์ œํ•˜์—ฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์—์„œ ์ „ํ™˜ํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ๋งŒ์•ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ 100 ๋Œ€ ์žˆ์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ ํ•œ ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ 100 ๋Œ€ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ํ•œ ํ›„, ์ƒˆ๋กœ์šด ์„œ๋ฒ„ ๊ทธ๋ฃน์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋กค๋ฐฑ๋„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Auto Scaling๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Blue-Green Deployment์—์„œ ์„œ๋ฒ„๋Š” ์ผํšŒ์šฉ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์˜ ๊ตฌ์ถ•๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ(Immutable Infrastructure)๋Š” ์„œ๋ฒ„๋ฅผ ์ผํšŒ์šฉ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฐœ๋…์ด๊ณ ,
๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ(mutable Infrastructure)๋Š” ํ•ญ์ƒ ์šด์˜๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ด๊ณ , ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅํ•œ ์œ ์ผํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋…์ด๋‹ค.

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

 

๊ทผ๋ณธ์  ์ฐจ์ด์ 

๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ์™€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ ๊ฐ„์˜ ๊ฐ€์žฅ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์€ ์ •์ฑ…์— ์žˆ๋‹ค.

์ „์ž๋Š” ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฐฐํฌํ•œ ํ›„์—๋„ ๋ณ€๊ฒฝ๋˜๋„๋ก ์„ค๊ณ„๋œ ๋ฐ˜๋ฉด, ํ›„์ž์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐํฌ๋œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ถ๊ทน์ ์œผ๋กœ๋Š” ๊ธฐ์กด ๊ฒƒ์€ ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ ๊ฒƒ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‘ ๊ฐ€์ง€์˜ ์ธํ”„๋ผ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์€ ์„œ๋ฒ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ ( ์ƒ์„ฑ, ์œ ์ง€, ์—…๋ฐ์ดํŠธ, ์ œ๊ฑฐ)ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์—์„œ ๋‹ค๋ฅธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Container 

์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค.

์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฐจ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ผ๋ฆฌ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐœ๋ณ„์ ์ธ cpu, memory, network, disk ๋“ฑ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ–๊ณ  ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰์ค‘์ผ ๋•Œ ์ผ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ํ›„ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Docker

์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š๋ƒ? ๋„์ปค๋ฅผ ํ†ตํ•ด ๋™์ž‘๋œ๋‹ค.

Docker(๋„์ปค) ๋Š” Immutable Infrastructure(๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ)๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ์ˆ ์š”์†Œ์ด๋‹ค.

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

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

 

IMMUTABLE INFRASTRUCTURE ( ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ ) ์žฅ์  – DOCKER

  • ๋ชจ๋“  ์„œ๋ฒ„๋ฅผ ๋™์ผํ•œ ์ƒํƒœ๋กœ ์œ ์ง€
    • ์„œ๋ฒ„๋“ค์„ Ansible/Puppet/Chef ์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋žœ์‹œ๊ฐ„ ๋™์•ˆ ์—…๋ฐ์ดํŠธ์™€ ํŒจ์น˜๋ฅผ ๊ฑฐ๋“ญํ•˜๋ฉด์„œ ๊ด€๋ฆฌ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ์„œ๋ฒ„๋“ค์˜ ์ƒํƒœ๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๊ณ  ์žˆ๋‹ค๊ณ  ์ž์‹ ์žˆ๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์„œ๋ฒ„๋ฅผ ์ˆ˜๋™์ด ์•„๋‹Œ ์ž๋™ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ์€ ๋ณด์žฅํ•˜์ง€๋งŒ ๋ชจ๋“  ์„œ๋ฒ„๋“ค์˜ ์ƒํƒœ๋ฅผ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†๋‹ค.
    • “๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ”์—์„œ๋Š” ์„œ๋ฒ„์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜๋ฉด ๋ชจ๋“  ์„œ๋ฒ„์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ์ž„์„ ๋ณด์žฅํ•œ๋‹ค.
  • ์–ธ์ œ๋“ ์ง€ ์ฆ‰์‹œ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„ ๊ตฌ์ถ•
    • ์–ธ์ œ๋“ ์ง€ ์ฆ‰์‹œ ์šด์˜ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์„œ๋น„์Šค์˜ ๊ฐ€์šฉ์„ฑ์„ ํ™•์‹คํ•˜๊ฒŒ ๋ณด์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์•„๋ฌด๋ฆฌ ํด๋ผ์šฐ๋“œํ™˜๊ฒฝ์—์„œ ์‹œ์Šคํ…œ์„ ์šด์˜ ์ค‘์ด๋ผ๊ณ  ํ•˜๋”๋ผ๋„ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ๋ฌผ๋ฆฌ์ ์ธ ๊ณ ์žฅ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋งŒ์•ฝ ๋งŒ์•ฝ ์žฅ์•  ์ƒํ™ฉ์—์„œ ์„œ๋ฒ„๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ์‹œ๊ฐ„์˜ ๋ฌธ์ œ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ๋น„์ฆˆ๋‹ˆ์Šค์—๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • Provisioning ์€ ๋‹จ์ˆœํ•˜๊ฒŒ 
    • “๋ณ€๊ฒฝ ํ• ์ˆ˜ ์—†๋‹ค”๋Š” ๊ฒƒ์€ “Ansible์„ ์ตœ์ดˆ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ‘์ด๋‹ค.
    • Ansible์€ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๋น„์ €๋‹, ๊ตฌ์„ฑ ๊ด€๋ฆฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „๊ฐœ ๋„๊ตฌ์ด๋‹ค. 
    • Ansible์€ '๋ฉฑ๋“ฑ์„ฑ'์ด๋ผ๋Š” ์ค‘์š”ํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋™์ผํ•œ ์„œ๋ฒ„์— Ansible์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š” ๊ฒƒ์ด๋‹ค.
    • Immutable Infrastructure ํ™˜๊ฒฝ์—์„œ๋Š” ์ตœ์ดˆ์˜ ์ƒํƒœ์—์„œ ๋ณ€ํ™”๊ฐ€ ํ•„์š”์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฑ๋“ฑ์„ฑ์ด ๋ถˆํ•„์š”ํ•˜๋‹ค.
  • ํ…Œ์ŠคํŠธ์˜ ํŽธ์ด์„ฑ 
    • Immutable Infrastructure์—์„œ๋Š” ๊ฐœ๋ฐœ/์Šคํ…Œ์ด์ง•/์šด์˜ ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ์„œ๋ฒ„ ์ƒํƒœ๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๋ณด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, CI๋ฅผ ํ†ตํ•œ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋„๊ฐ€ ๋†’์•„์ง„๋‹ค.
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด์‹์„ฑ ํ–ฅ์ƒ Docker Hub๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์„ธ๊ณ„ ๋ˆ„๊ตฌ๋‚˜ โ€‹โ€‹๋™์ผํ•œ ์‹œ์Šคํ…œ ์‚ฌ์–‘์ด๋ฉด ๊ฐ™์€ ํ™˜๊ฒฝ์˜ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ• ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ธ€๋กœ๋ฒŒํ•œ ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” ๋จธ์‹  ์ด๋ฏธ์ง€์™€ ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต์œ ํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ์„ฑ
    • Docker์˜ ์ปจํ…Œ์ด๋„ˆํ™” ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถ„ํ•ดํ•  ํ•„์š” ์—†์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ถ€๋ฅผ ๋ถ„ํ•ดํ•˜๊ณ , ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๋ณต๊ตฌํ•˜๋Š” ๋Šฅ๋ ฅ์— ์ง‘์ค‘๋˜์–ด ์žˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๋Š” ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹ ์™ธ์—๋„ SOA(service-oriented architecture)์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ฉ€ํ‹ฐํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์ด์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ณ„์ธต ๋ฐ ์ด๋ฏธ์ง€ ๋ฒ„์ „ ์ œ์–ด
    • ๊ฐ Docker ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ์ผ๋ จ์˜ ๊ณ„์ธต์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ์ด ๊ณ„์ธต๋“ค์€ ๋‹จ์ผ ์ด๋ฏธ์ง€๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค.
    • ์ด๋ฏธ์ง€๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๊ณ„์ธต์ด ์ƒ์„ฑ๋˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ ๋˜๋Š” ๋ณต์‚ฌ์™€ ๊ฐ™์€ ๋ช…๋ น์„ ์ง€์ •ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ ๊ณ„์ธต์ด ์ƒ์„ฑ๋œ๋‹ค.
    • Docker๋Š” ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๊ณ„์ธต์„ ์žฌ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๊ตฌ์ถ• ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ›จ์”ฌ ๋” ๋นจ๋ผ์ง„๋‹ค.
    • ์ค‘๊ฐ„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ด๋ฏธ์ง€ ์‚ฌ์ด์—์„œ ๊ณต์œ ๋˜๋ฏ€๋กœ ์†๋„, ๊ทœ๋ชจ, ํšจ์œจ์„ฑ์ด ๋” ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.
    • ๊ณ„์ธตํ™”์—๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๋‚ด์žฌ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด์žฅ ๋ณ€๊ฒฝ ๋กœ๊ทธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋˜๋ฏ€๋กœ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กค๋ฐฑ
    • ๊ณ„์ธตํ™”์—์„œ ๊ฐ€์žฅ ์œ ์šฉํ•œ ๋ถ€๋ถ„์€ ์•„๋งˆ๋„ ๋กค๋ฐฑ ๊ธฐ๋Šฅ์ผ ๊ฒƒ์ด๋‹ค.
    • ๋ชจ๋“  ์ด๋ฏธ์ง€์—๋Š” ๊ณ„์ธต์ด ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ์˜ ์ด๋ฏธ์ง€ ๋ฐ˜๋ณต์ด ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    • ์ด ๊ธฐ๋Šฅ์€ ์• ์ž์ผ(agile) ๊ฐœ๋ฐœ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋ฉฐ ํˆด ๊ด€์ ์—์„œ ์‹ค์ œ๋กœ ์ง€์†์ ์ธ ํ†ตํ•ฉ ๋ฐ ์—ฐ์† ๋ฐฐํฌ(Continuous Integration and Deployment, CI/CD)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค.
  • ์‹ ์†ํ•œ ๋ฐฐํฌ
    • ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด๋ฅผ ์ค€๋น„ํ•˜๊ณ , ์‹คํ–‰ํ•˜๊ณ , ํ”„๋กœ๋น„์ €๋‹ํ•˜๊ณ , ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉฐ์น ์ด ์†Œ์š”๋˜์—ˆ๊ณ , ๋งŽ์€ ๋…ธ๋ ฅ๊ณผ ๋ถ€๊ฐ€์ ์ธ ์—…๋ฌด๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ถ€๋‹ด๋„ ์ƒ๋‹นํ–ˆ๋‹ค.
    • Docker ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฐฐํฌ ์‹œ๊ฐ„์„ ๋ช‡ ์ดˆ๋กœ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ์œ ์‚ฌํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒˆ ์•ฑ๊ณผ ๋น ๋ฅด๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋˜ํ•œ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด OS๋ฅผ ๋ถ€ํŒ…ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฐฐํฌ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋‹จ์ถ•๋œ๋‹ค.
    • ์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐฐํฌ ์†๋„๊ฐ€ ๋นจ๋ผ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์šฉ ํšจ์œจ์ ์œผ๋กœ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ณ  ์‚ฌ์šฉ์ž๋Š” ์šฐ๋ ค๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
    • ์ฆ‰, Docker ๊ธฐ์ˆ ์€ ํšจ์œจ์„ฑ์„ ์ค‘์‹œํ•˜๋ฉฐ ๋” ์„ธ๋ถ„ํ™”๋˜๊ณ  ์ œ์–ด ๊ฐ€๋Šฅํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค.

 

์ฐธ๊ณ 

'๐Ÿ’Ž > DevOps' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํด๋ผ์šฐ๋“œ๋ฅผ ์ œ์–ดํ•˜๋Š” API์˜ ๋™์ž‘ ๋ฐฉ์‹  (0) 2021.08.26
[DevOps] DevOps์˜ ์ดํ•ด  (0) 2021.07.29

๋Œ“๊ธ€