VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์ œ ์ด๋ฆ„์€ ํŒŒ๋ฒจ ์•„๊ฐˆ๋ ˆ์ธ ํ‚ค์ž…๋‹ˆ๋‹ค. ์ €๋Š” Lamoda ๋ฐฐ์†ก ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋Š” ํŒ€์—์„œ ํŒ€์žฅ์œผ๋กœ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2018๋…„์— ์ €๋Š” HighLoad++ ์ปจํผ๋Ÿฐ์Šค์—์„œ ์—ฐ์„ค์„ ํ–ˆ๊ณ , ์˜ค๋Š˜์€ ์ œ ๋ณด๊ณ ์„œ์˜ ๋…น์ทจ๋ก์„ ๋ฐœํ‘œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

VM์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

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

๊ทธ๊ฒƒ์€ ๋ฌด์—‡์„ ์œ„ํ•ด ํ–‰ํ•ด์กŒ์Šต๋‹ˆ๊นŒ?

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

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

์ด ๋ชจ๋“  ๊ฒƒ์—์„œ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์ด์ ์„ ๋ณด์•˜์Šต๋‹ˆ๊นŒ?

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

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ๋„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

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

๋…ธ๋งˆ๋“œ๋กœ ์ „ํ™˜

Nomad๋Š” HashiCorp์˜ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์œผ๋กœ๋„ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค:

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

"์˜์‚ฌ" ์„œ๋น„์Šค ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

"ํ…Œ๋ผํผ" - ์†Œ์œ„ ์ฝ”๋“œํ˜• ์ธํ”„๋ผ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ตฌ์„ฑ์„ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

"๋ฐฉ๋ž‘์ž" ํŠน์ • ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ†ตํ•ด ๋กœ์ปฌ ๋˜๋Š” ํด๋ผ์šฐ๋“œ์— ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹œ Nomad๋Š” ์ „์ฒด ์ธํ”„๋ผ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ๋น ๋ฅด๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฐฐ์šฐ๊ธฐ๋„ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์˜ ์—ฌ๊ณผ ์‹œ์Šคํ…œ์œผ๋กœ ์ด๋ฅผ ์„ ํƒํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

Nomad์— ์‹œ์Šคํ…œ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

  1. ์šฐ์„  ๋‹น์‹ ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋„์ปค ์ด๋ฏธ์ง€ ๋„ˆ์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜. ์ด๋ฅผ ๋นŒ๋“œํ•˜๊ณ  docker ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์— ๋ฐฐ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋‹ค์–‘ํ•œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์ธ ์•„ํ‹ฐํŒฉํŠธ์ž…๋‹ˆ๋‹ค. ์•„์นด์ด๋ธŒ, ๋„์ปค ์ด๋ฏธ์ง€, Composer PHP ํŒจํ‚ค์ง€, NPM ํŒจํ‚ค์ง€ ๋“ฑ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋˜ํ•œ ํ•„์š” ๊ตฌ์„ฑ ํŒŒ์ผ, ์ด๋Š” Nomad์—๊ฒŒ ๋ฌด์—‡์„, ์–ด๋””์—, ์–ด๋Š ์ •๋„ ๋ฐฐํฌํ•˜๋ ค๋Š”์ง€ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Nomad์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ Nomad๋Š” ์ •๋ณด ํŒŒ์ผ ํ˜•์‹์œผ๋กœ HCL ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. HashiCorp ๊ตฌ์„ฑ ์–ธ์–ด. ์ด๋Š” Nomad ์šฉ์–ด๋กœ ์„œ๋น„์Šค๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” Yaml์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์ด๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ•  ์ปจํ…Œ์ด๋„ˆ ์ˆ˜, ๋ฐฐํฌ ์ค‘์— ์–ด๋–ค ์ด๋ฏธ์ง€์—์„œ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ• ์ง€ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํŒŒ์ผ์„ Nomad์— ์ œ๊ณตํ•˜๋ฉด Nomad๋Š” ์ด์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ”„๋กœ๋•์…˜์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

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

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

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

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

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

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

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

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

Nomad ์„œ๋น„์Šค๊ฐ€ ์ด๋ฏธ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌ๋œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์ฒซ์งธ, ๋ชจ๋“  ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•  ์ผ์ข…์˜ ์™ธ๋ถ€ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Consul๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ํŠน์ • ๋„๋ฉ”์ธ ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์žˆ๋Š” ์œ„์น˜, ๋…ธ๋“œ, IP ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋ƒ…๋‹ˆ๋‹ค. Consul์˜ ์„œ๋น„์Šค๋Š” Nomad ์ž์ฒด์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ํšŒ์‚ฌ์˜ ์ œํ’ˆ์ด๋‹ค ๋ณด๋‹ˆ ์„œ๋กœ ์—ฐ๊ด€์„ฑ์ด ๊ฝค ๊นŠ์Šต๋‹ˆ๋‹ค. Nomad๋Š” ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ Consul ๋‚ด๋ถ€์— ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ „ํ™˜์œผ๋กœ ์ธํ•ด ์ธ์  ์ž์› ์ธก๋ฉด์—์„œ ๋น„์šฉ์ด ์–ผ๋งˆ๋‚˜ ๋“ค์—ˆ๋‚˜์š”?

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

์šฐ๋ฆฌ๋Š” ๊ฐ ํŒ€์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹œ์Šคํ…œ์˜ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ฑ…์ž„์ง€๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. DevOps๋Š” ๋ฐฐํฌ์— ํ•„์š”ํ•œ ์ผ๋ฐ˜์ ์ธ ์ธํ”„๋ผ, ์ฆ‰ ํด๋Ÿฌ์Šคํ„ฐ ์ž์ฒด์— ๋Œ€ํ•œ ์ง€์›, CI ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์› ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹œ ์šฐ๋ฆฌ๋Š” 60๊ฐœ ์ด์ƒ์˜ ์‹œ์Šคํ…œ์„ Nomad๋กœ ์ด์ „ํ–ˆ๋Š”๋ฐ, ์ด๋Š” ์•ฝ 2๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

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

๋…ธ๋งˆ๋“œ๋ฅผ ํฌ๊ธฐํ•œ ์ด์œ 

Nomad, docker ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋กœ ์ „ํ™˜ํ•จ์œผ๋กœ์จ ์–ด๋–ค ์ด์ ์„ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ?

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

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค:

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

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

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์— ์–ด๋””๋กœ ๊ฐ€์•ผํ• ์ง€ ์ƒ๊ฐํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‹ฌ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ํ›จ์”ฌ ๋” ์ž˜ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๋Š” ์‹ ๋ขฐ์„ฑ, Nomad๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ, ๋” ์„ฑ์ˆ™ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์‹œ์Šคํ…œ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ถœ์‹œ๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ”Œ๋žซํผ์œผ๋กœ Kubernetes๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ์™€ ๊ฐœ์ˆ˜๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ปธ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ชฉ์ ์œผ๋กœ ๋ณผ ๋•Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์‹œ์Šคํ…œ์ธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋กœ ์ „ํ™˜

Kubernetes์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ Nomad์™€์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋ง์”€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์šฐ์„  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์€ ํฌ๋“œ(Pod) ๊ฐœ๋…์ด๋‹ค. ์ž‘์€ ๋ฌด๋ฆฌ ํ•ญ์ƒ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ํฌํŠธ์—์„œ IP 127.0.0.1์„ ํ†ตํ•ด ์„œ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nginx์™€ php-fpm(ํด๋ž˜์‹ ๊ตฌ์„ฑํ‘œ)์œผ๋กœ ๊ตฌ์„ฑ๋œ PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ nginx์™€ php-fpm ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•ญ์ƒ ํ•จ๊ป˜ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฅผ ํ•˜๋‚˜์˜ ๊ณตํ†ต ํฌ๋“œ๋กœ ์„ค๋ช…ํ•˜์—ฌ ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ Nomad์—์„œ๋Š” ์–ป์„ ์ˆ˜ ์—†์—ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

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

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์˜ ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ๊ฐ€์žฅ ๋ฉ‹์ง„ ์ ์€ ๋ชจ๋“  ๊ฒƒ์„ ์Šค์Šค๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Ingress ๊ตฌ์„ฑ์„ ์„ค์ •ํ•˜๋ฉด ์ด๋Ÿฌํ•œ API๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ์˜ˆ๋ฅผ ๋“ค์–ด Go๋กœ ์ž‘์„ฑ๋œ ๋ณ„๋„์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ๋„๋ฉ”์ธ์ด์ง€๋งŒ ๋‹ค๋ฅธ URL๋กœ ์˜ค๋Š” ์ด ํŠธ๋ž˜ํ”ฝ์€ ๋…ผ๋ฆฌ๊ฐ€ ๋งŽ์ง€๋งŒ ์†๋„๊ฐ€ ๊ทธ๋ฆฌ ๋น ๋ฅด์ง€ ์•Š์€ PHP๋กœ ์ž‘์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „์†ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฐœ๋…์„ ๋…ธ๋งˆ๋“œ์™€ ๋น„๊ตํ•ด ๋ณด๋ฉด ์ฒ˜์Œ ์„ธ ๊ฐ€์ง€ ๊ฐœ๋…์ด ๋ชจ๋‘ ํ•ฉ์ณ์ ธ ์„œ๋น„์Šค๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Nomad ์ž์ฒด์—๋Š” ๋งˆ์ง€๋ง‰ ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์™ธ๋ถ€ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. haproxy, nginx, nginx+ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ๋ธŒ์˜ ๊ฒฝ์šฐ์—๋Š” ์ด ์ถ”๊ฐ€ ๊ฐœ๋…์„ ๋ณ„๋„๋กœ ์†Œ๊ฐœํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ Ingress๋ฅผ ์‚ดํŽด๋ณด๋ฉด nginx, haproxy ๋˜๋Š” traefik ์ค‘ ํ•˜๋‚˜์ด์ง€๋งŒ ์ผ์ข…์˜ Kubernetes์— ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์„ค๋ช…ํ•œ ๋ชจ๋“  ๊ฐœ๋…์€ ์‹ค์ œ๋กœ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ํ๋ธŒ์—์„œ ์ด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด Nomad์˜ ๊ฒฝ์šฐ HCL ํŒŒ์ผ๋ณด๋‹ค ์ฝ๊ธฐ ์‰ฝ๊ณ  ์นœ์ˆ™ํ•œ yaml ํ˜•์‹์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ตฌ์กฐ์ ์œผ๋กœ๋Š” Pod์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•œ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋งํ•ฉ๋‹ˆ๋‹ค-์ €๋Š” ๊ทธ๋Ÿฌํ•œ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ๊ทธ๋Ÿฌํ•œ ํฌ๋“œ๋ฅผ ๊ทธ๋Ÿฌํ•œ ์ˆ˜๋Ÿ‰์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

๋˜ํ•œ ๋ฐฐํฌ, ์„œ๋น„์Šค, Ingress ๋“ฑ ๊ฐœ๋ณ„ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ๊ฐ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ฐฐํฌ ์ค‘์— Kubernetes ์ธก๋ฉด์—์„œ ๊ฐ ์‹œ์Šคํ…œ์„ ์„ค๋ช…ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์ข…์†์„ฑ์„ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์ˆ˜๋™์œผ๋กœ ๋‹ค์‹œ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์‹œ์Šคํ…œ์œผ๋กœ Helm์ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Helm์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

ํˆฌ๊ตฌ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์šฉ. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด nginx ๋ฐฐํฌ, php-fpm ๋ฐฐํฌ, Ingress ๊ตฌ์„ฑ, configmaps(์‹œ์Šคํ…œ์— env ๋ฐ ๊ธฐํƒ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ)๋กœ ๊ตฌ์„ฑ๋œ ์„œ๋น„์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐจํŠธ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋™์‹œ์— ํ—ฌ๋ฆ„ Kubernetes ์œ„์—์„œ ์‹คํ–‰. ์ฆ‰, ์ด๊ฒƒ์€ ์ผ์ข…์˜ ์‹œ์Šคํ…œ์ด ์•„๋‹ˆ๋ผ ํ๋ธŒ ๋‚ด๋ถ€์—์„œ ์‹œ์ž‘๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ฝ˜์†” ๋ช…๋ น์„ ํ†ตํ•ด API๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. Helm์˜ ํŽธ๋ฆฌํ•จ๊ณผ ์•„๋ฆ„๋‹ค์›€์€ Helm์ด ์†์ƒ๋˜๊ฑฐ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ œ๊ฑฐํ•˜๋”๋ผ๋„ Helm์€ ๋ณธ์งˆ์ ์œผ๋กœ ์‹œ์Šคํ…œ์„ ์‹œ์ž‘ํ•˜๋Š” ์—ญํ• ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Kubernetes ์ž์ฒด๊ฐ€ ์„œ๋น„์Šค ์„ฑ๋Šฅ๊ณผ ์ƒํƒœ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟํ™”์ด์ „์— ๊ตฌ์„ฑ์— jinja๋ฅผ ๋„์ž…ํ•˜์—ฌ ์Šค์Šค๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ๋˜ ์ž‘์—…์€ helm์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ƒ์„ฑํ•œ ๋ชจ๋“  ๊ตฌ์„ฑ์€ ํ…œํ”Œ๋ฆฟ ํ˜•ํƒœ๋กœ helm์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. jinja์™€ ์•ฝ๊ฐ„ ์œ ์‚ฌํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” Kubernetes์™€ ๊ฐ™์ด helm์ด ์ž‘์„ฑ๋˜๋Š” Go ์–ธ์–ด์˜ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Helm์€ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ฐœ๋…์„ ๋” ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

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

๋งˆ์ผ€ํŒ…์€: ํ…œํ”Œ๋ฆฟ์—์„œ ๊ตฌ์„ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.

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

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

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์‹ค์ œ๋กœ ์šฐ๋ฆฌ๋Š” Nomad์—์„œ ํ–ˆ๋˜ ๊ฒƒ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์ผ์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Nomad์—์„œ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐฐํฌ ๊ตฌ์„ฑ๊ณผ n-๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฅผ ๋‘ ๊ฐœ์˜ ๋ณ„๋„ ์ €์žฅ์†Œ๋กœ ๋‚˜๋ˆ„๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. "๋ฐฐํฌ" ์ €์žฅ์†Œ๋Š” ๋ฐฐํฌ์— ํ•„์š”ํ•œ n-๋ณ€์ˆ˜๋งŒ ์ €์žฅํ•˜๊ณ  "ํ—ฌ๋ฆ„" ์ €์žฅ์†Œ๋Š” ๊ตฌ์„ฑ ๋˜๋Š” ์ฐจํŠธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

์ด๊ฒƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌด์—‡์„ ์ฃผ์—ˆ๋‚˜์š”?

๊ตฌ์„ฑ ํŒŒ์ผ ์ž์ฒด์—๋Š” ์‹ค์ œ๋กœ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ . ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Kubernetes์—๋Š” ๋น„๋ฐ€๋กœ ์ €์žฅ๋˜์ง€๋งŒ, ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ํŠน์ • ์‚ฌํ•ญ์ด ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "๋ฐฐํฌ" ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ๋” ์ œํ•œ๋˜๋ฉฐ "helm" ์ €์žฅ์†Œ์—๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„ค๋ช…๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ํ™˜๊ฒฝ๋„ ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ถ„๋ฆฌ ๋•๋ถ„์— ํ—ฌ๋ฆ„ ์ฐจํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๋•์…˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ QA ํ™˜๊ฒฝ์—๋„ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ๋กœ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฏธ๋‹ˆ์ฟ ๋ฒ  - ์ด๋Š” Kubernetes๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

helm์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์‹œ์ž‘์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ํ‘œ์ค€ํ™”ํ•˜๋Š” ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ์ธ ๋ฐฐํฌ.sh๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐํฌ๋ฅผ ์›ํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋ฐฐํฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ Nomad๋ฅผ ํ†ตํ•ด ๋ฐฐํฌํ•  ๋•Œ์™€ ๋˜‘๊ฐ™์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฐฐํฌ.sh, ์„œ๋น„์Šค ์ด๋ฆ„, ๋ฐฐํฌํ•˜๋ ค๋Š” ์œ„์น˜. ์ด๋กœ ์ธํ•ด Helm์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ…œํ”Œ๋ฆฟ์—์„œ ๊ตฌ์„ฑ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฐ’ ํŒŒ์ผ์„ ์—ฌ๊ธฐ์— ์‚ฝ์ž…ํ•œ ๋‹ค์Œ ๋ฐฐํฌํ•˜์—ฌ Kubernetes์— ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์กฐ์‚ฌ ๊ฒฐ๊ณผ

Kubernetes ์„œ๋น„์Šค๋Š” Nomad๋ณด๋‹ค ๋” ๋ณต์žกํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

VM, Nomad ๋ฐ Kubernetes์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

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

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

์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์˜ ์˜ˆ๋กœ๋Š” Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” Prometheus๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์„œ๋น„์Šค์—์„œ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ์„ค๋ช…์— ์„œ๋น„์Šค ๋ชจ๋‹ˆํ„ฐ๋ผ๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Prometheus๋Š” Kubernetes์—์„œ ์‹œ์ž‘๋  ๋•Œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค ์œ ํ˜•์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ์ž๋™์œผ๋กœ ์ƒˆ ์‹œ์Šคํ…œ์—์„œ ์ง€ํ‘œ ์ˆ˜์ง‘์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

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

์ถœ์ฒ˜ : habr.com

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