Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ง€์†์ ์ธ ์ „๋‹ฌ ๋ฐฉ์‹(๋ฆฌ๋ทฐ ๋ฐ ๋™์˜์ƒ)

๊ธฐ์ˆ  ์ด์‚ฌ์˜ ์ตœ๊ทผ ์—ฐ์„ค์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์ถœํŒ๋ฌผ๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋””์Šคํ†จ (๋“œ๋ฏธํŠธ๋ฆฌ ์Šคํ†จ์•ผ๋กœํ”„). ์ด ๋ชจ๋“  ํ–‰์‚ฌ๋Š” 2016๋…„ ๋‹ค์–‘ํ•œ ์ „๋ฌธ ํ–‰์‚ฌ์—์„œ ์—ด๋ ธ์œผ๋ฉฐ DevOps ๋ฐ Docker ์ฃผ์ œ์— ์ „๋…ํ–ˆ์Šต๋‹ˆ๋‹ค. Badoo ์‚ฌ๋ฌด์‹ค์—์„œ ์—ด๋ฆฐ Docker Moscow ํšŒ์˜ ์˜์ƒ ์ค‘ ํ•˜๋‚˜๋Š” ์ด๋ฏธ ์ถœํŒ ์˜จ๋ผ์ธ. ์ƒˆ๋กœ์šด ๊ฒƒ์—๋Š” ๋ณด๊ณ ์„œ์˜ ๋ณธ์งˆ์„ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ์‚ฌ๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œโ€ฆ

31์›” XNUMX์ผ ์ปจํผ๋Ÿฐ์Šค์—์„œ ๋ฃจํŠธ์ปจํ”„ 2016, "Russian Internet Technologies"(RIT++ 2016) ํŽ˜์Šคํ‹ฐ๋ฒŒ์˜ ์ผํ™˜์œผ๋กœ ๊ฐœ์ตœ๋œ "์ง€์†์  ๋ฐฐํฌ ๋ฐ ๋ฐฐํฌ" ์„น์…˜์€ "Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ง€์†์ ์ธ ์ „๋‹ฌ ๋ชจ๋ฒ” ์‚ฌ๋ก€" ๋ณด๊ณ ์„œ์™€ ํ•จ๊ป˜ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. Docker ๋ฐ ๊ธฐํƒ€ ์˜คํ”ˆ ์†Œ์Šค ์ œํ’ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ CD(์ง€์†์ ์ธ ์ „๋‹ฌ) ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์š”์•ฝํ•˜๊ณ  ์ฒด๊ณ„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ƒ์‚ฐ ๊ณผ์ •์—์„œ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์‹ค์ œ ๊ฒฝํ—˜์— ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ง€์†์ ์ธ ์ „๋‹ฌ ๋ฐฉ์‹(๋ฆฌ๋ทฐ ๋ฐ ๋™์˜์ƒ)

ํ•œ ์‹œ๊ฐ„ ์ •๋„ ์‹œ๊ฐ„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ณด๊ณ ์„œ ์˜์ƒ, ์ „์ฒด ์‹œ์ฒญ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•„๋ž˜๋Š” ํ…์ŠคํŠธ ํ˜•์‹์˜ ์ฃผ์š” ์š”์•ฝ์ž…๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ง€์†์  ์ „๋‹ฌ

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

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

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

๊ธฐ๋ณธ ์ถœ์‹œ ํŒจํ„ด

๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ถœ์‹œํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์šดํƒ€์ž„ ๋ฌธ์ œ, ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„ ์ „ํ™˜ ์ค‘์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒˆ ๋ฒ„์ „์œผ๋กœ์˜ ํŠธ๋ž˜ํ”ฝ์€ ์ฆ‰์‹œ ์ „ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ƒˆ ๋ฒ„์ „์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ "์ค€๋น„"(์ฆ‰, ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ์™„์ „ํžˆ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€) ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

์ผ๋ฐ˜ํ™”ํ•˜์ž ๊ธฐ๋ณธ ์ถœ์‹œ ํŒจํ„ด ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•œ ์ƒˆ ๋ฒ„์ „:

  1. ์ฒ˜์Œ์—๋Š” ์ด์ „ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์—์„œ "์ค€๋น„"๋ฉ๋‹ˆ๋‹ค. ์ด ์ƒˆ ๋ฒ„์ „ ์ž์ฒด์—๋Š” ์—…๋ฐ์ดํŠธ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ์ข…์†์„ฑ ๋ฐ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ(์˜ˆ: OpenSSL์˜ ์ƒˆ ๋ฒ„์ „ ๋˜๋Š” ์ „์ฒด ๋ฐฐํฌํŒ)๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒˆ ๋ฒ„์ „์ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ค€๋น„๊ฐ€ ์™„์ „ํžˆ ์™„๋ฃŒ๋˜๋ฉด ํŠธ๋ž˜ํ”ฝ์ด ์ฒซ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  4. ์ด์ œ ์ด์ „ ๋ฒ„์ „์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณ„๋„์˜ ์ปจํ…Œ์ด๋„ˆ์— ๋ฐฐํฌํ•˜๋Š” ์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋˜ ๋‹ค๋ฅธ ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ๋กค๋ฐฑ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค(๊ฒฐ๊ตญ ํŠธ๋ž˜ํ”ฝ์„ ์›ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค).

Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ง€์†์ ์ธ ์ „๋‹ฌ ๋ฐฉ์‹(๋ฆฌ๋ทฐ ๋ฐ ๋™์˜์ƒ)
๋งˆ์ง€๋ง‰ ์ฒซ ๋ฒˆ์งธ ์ถ”์ฒœ์€ ์„ ์žฅ์กฐ์ฐจ๋„ ๊ฒฐ์ ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.[Docker๋กœ Continuous Delivery๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ] ๋„์ปค ์‚ฌ์šฉ [๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์„ ์ œ๊ณตํ•˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค]" ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒ๋ณ‘ํ†ต์น˜์•ฝ์ด ์•„๋‹ˆ๋ผ ํ›Œ๋ฅญํ•œ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.

์žฌํ˜„์„ฑ

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

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

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

์ธํ”„๋ผ๋Š” ์ฝ”๋“œ์ด๋‹ค

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

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. IaC(์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผ, โ€œ์ฝ”๋“œ๋กœ์„œ์˜ ์ธํ”„๋ผโ€) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ธํ”„๋ผ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž์™€ DevOps ์ „๋ฌธ๊ฐ€๋Š” ๋™์ผํ•œ Git ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ €์žฅ์†Œ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด Docker ์ด๋ฏธ์ง€๊ฐ€ Git์— ์ƒ์„ฑ๋˜๋ฉฐ, ์—ฌ๊ธฐ์—์„œ ์ธํ”„๋ผ์˜ ๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ์ด๋ฏธ์ง€ ์กฐํ•ฉ์„ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ(๊ทœ์น™)๋Š” ์†Œ์Šค ์ฝ”๋“œ์™€ ๋™์ผํ•œ ์ €์žฅ์†Œ์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํ•จ๊ป˜ ๋ณ‘ํ•ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•œ ์ง€์†์ ์ธ ์ „๋‹ฌ ๋ฐฉ์‹(๋ฆฌ๋ทฐ ๋ฐ ๋™์˜์ƒ)

๋‹ค์ธต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฝ์šฐ(์˜ˆ: Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ž์— nginx๊ฐ€ ์žˆ์Œ) Docker ์ด๋ฏธ์ง€๋Š” ๊ฐ ๊ณ„์ธต์— ๋Œ€ํ•ด Git์˜ ์ฝ”๋“œ์—์„œ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€์—๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐ ๊ธฐํƒ€ "๋ฐ€์ ‘ํ•œ" ์ข…์†์„ฑ์ด ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํฌํ•จ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€์—๋Š” ์—…์ŠคํŠธ๋ฆผ nginx๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Docker ์ด๋ฏธ์ง€, Git๊ณผ์˜ ํ†ต์‹ 

Git์—์„œ ์ˆ˜์ง‘ํ•œ ๋ชจ๋“  Docker ์ด๋ฏธ์ง€๋ฅผ ์ž„์‹œ ์ด๋ฏธ์ง€์™€ ๋ฆด๋ฆฌ์Šค๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์ž„์‹œ ์ด๋ฏธ์ง€ Git์—์„œ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์œผ๋กœ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜๊ณ  ๋‹ค์Œ ์ปค๋ฐ‹์œผ๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์šฉ์œผ๋กœ๋งŒ ๋กค์•„์›ƒ๋ฉ๋‹ˆ๋‹ค(ํ”„๋กœ๋•์…˜์šฉ ์•„๋‹˜). ์ด๊ฒƒ์ด ๋ฆด๋ฆฌ์Šค์™€์˜ ์ฃผ์š” ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ํŠน์ • ์ปค๋ฐ‹์ด ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

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

dapp

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

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

13๋…„ 2019์›” XNUMX์ผ ์—…๋ฐ์ดํŠธ๋จ: ํ˜„์žฌ ํ”„๋กœ์ ํŠธ dapp ์ด๋ฆ„์ด ์›Œํ”„, ์ฝ”๋“œ๊ฐ€ Go์—์„œ ์™„์ „ํžˆ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฌธ์„œ๊ฐ€ ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Kubernetes

์ „๋ฌธ์ ์ธ ํ™˜๊ฒฝ์—์„œ ์ด๋ฏธ ์ƒ๋‹นํ•œ ์ธ์ •์„ ๋ฐ›์€ ๋˜ ๋‹ค๋ฅธ ๊ธฐ์„ฑ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Kubernetes, Docker ๊ด€๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐ. Docker ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์šด์˜์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์ œ๋Š” ๋ณด๊ณ ์„œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฏ€๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์€ ๋ช‡ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐœ์š”๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

์ถœ์‹œ๋ฅผ ์œ„ํ•ด Kubernetes๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

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

์ตœ์ข… ๊ถŒ์žฅ ์‚ฌํ•ญ

  1. ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  2. ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. "์ธํ”„๋ผ๋Š” ์ฝ”๋“œ์ด๋‹ค"๋ผ๋Š” ์›์น™์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.
  4. Git์„ Docker์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  5. ์ถœ์‹œ ์ˆœ์„œ๋ฅผ ๊ทœ์ œํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ธฐ์„ฑ ํ”Œ๋žซํผ(Kubernetes ๋˜๋Š” ๊ธฐํƒ€)์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

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

๊ณต์—ฐ์˜์ƒ(์•ฝ XNUMX์‹œ๊ฐ„) ์œ ํŠœ๋ธŒ์— ๊ฒŒ์‹œ๋จ (๋ฆฌํฌํŠธ ์ž์ฒด๋Š” 5๋ถ„๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ์ˆœ๊ฐ„๋ถ€ํ„ฐ ํ”Œ๋ ˆ์ดํ•˜๋ ค๋ฉด ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€์„ธ์š”).

๋ณด๊ณ ์„œ ๋ฐœํ‘œ:

PS

์šฐ๋ฆฌ ๋ธ”๋กœ๊ทธ์˜ ์ฃผ์ œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ณด๊ณ ์„œ:

์ถœ์ฒ˜ : habr.com

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