DBaaS๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํด๋ผ์šฐ๋“œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ œ ์ด๋ฆ„์€ Petr Zaitsev์ด๊ณ  CEO์ด์ž ์ฐฝ๋ฆฝ์ž์ž…๋‹ˆ๋‹ค. ํผ ์ฝ”๋‚˜ ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ์ด๋ ‡๊ฒŒ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค:

  • ์˜คํ”ˆ ์†Œ์Šค ์†”๋ฃจ์…˜์—์„œ ์„œ๋น„์Šคํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database as a Service)๋กœ ์ „ํ™˜ํ•œ ๊ณผ์ •
  • ํด๋ผ์šฐ๋“œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?
  • Kubernetes๊ฐ€ DBaaS๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ ๊ณต๊ธ‰์—…์ฒด ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  ์„œ๋น„์Šคํ˜• DBMS์˜ ๋‹จ์ˆœ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” Mail.ru Cloud Solutions & Tarantool์˜ @Databases Meetup ๋ณด๊ณ ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ๋‹ค์Œ์„ ์‹œ์ฒญํ•˜์„ธ์š”.


์˜คํ”ˆ ์†Œ์Šค์—์„œ ํด๋ผ์šฐ๋“œ์˜ ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „ํ™˜ํ•œ ๋ฐฉ๋ฒ•

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

์˜คํ”ˆ ์†Œ์Šค๋Š” ์ผ๋ จ์˜ ๋‹จ์ˆœํ™”๋ฅผ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค.

  • ์ปดํŒŒ์ผํ•ด์•ผ ํ•˜๋Š” Tar.gz ๋ฐ INSTALL ์†Œ์Šค;
  • .deb ๋ฐ .rpm๊ณผ ๊ฐ™์€ ์ข…์†์„ฑ์ด ์žˆ๋Š” ํŒจํ‚ค์ง€(ํŒจํ‚ค์ง€ ์„ธํŠธ๋งŒ ์„ค์น˜ํ•˜๋ฉด ๋จ)
  • ์ž๋™์œผ๋กœ ์„ค์น˜๋˜๋Š” APT ๋ฐ YUM๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ
  • Docker, Snap๊ณผ ๊ฐ™์€ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์™ธ๋ถ€ ์ข…์†์„ฑ ์—†์ด ์„ค์น˜๋งŒ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์‚ฌ์‹ค ์ด๊ฒƒ์€ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด:

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

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

ํด๋ผ์šฐ๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ Database as a Service์™€ Kubernetes ํ˜•ํƒœ์˜ ๋Œ€์•ˆ

๊ฐœ๋ฐฉํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ Database as a Service๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์‰ฌ์šด ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ด€๋ฆฌ ๋ฐฑ์—”๋“œ์— ํŒจํ‚ค์ง€๋œ ํ‘œ์ค€ ์˜คํ”ˆ ์†Œ์Šค ์ œํ’ˆ์ž…๋‹ˆ๋‹ค.
  2. ์˜คํ”ˆ ์†Œ์Šค์™€ ํ˜ธํ™˜๋˜๋Š” ๋‹ค์–‘ํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๊ณ ๊ธ‰ ์ƒ์šฉ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—์„œ ์งˆ๋ฌธ์ด ์ƒ๊น๋‹ˆ๋‹ค. Database as a Service์˜ ํŽธ๋ฆฌํ•จ์„ ์–ป๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•œ ์˜คํ”ˆ ์†Œ์Šค ์†”๋ฃจ์…˜์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

๋‚˜์œ ์†Œ์‹์€ ์•ˆํƒ€๊น๊ฒŒ๋„ ์•„์ง ์‹œ์žฅ์— ๊ทธ๋Ÿฌํ•œ ์†”๋ฃจ์…˜์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์†Œ์‹์€ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” Kubernetes๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Kubernetes๋Š” ๋‹จ์ผ ํ˜ธ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์šฉ ์šด์˜ ์ฒด์ œ์ž…๋‹ˆ๋‹ค.

์ด์ œ Kubernetes๋Š” ์ด๋Ÿฌํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ถ„์•ผ์˜ ์„ ๋‘์ฃผ์ž์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์ด ํ‘œ์ค€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ฒด ์†”๋ฃจ์…˜์— ์ค‘์ ์„ ๋‘์—ˆ๋˜ ๋งŽ์€ ํšŒ์‚ฌ๊ฐ€ ์ด์ œ๋Š” Kubernetes๋ฅผ ์ง€์›ํ•˜๋„๋ก ์ œํ’ˆ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์ฃผ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Kubernetes๋Š” AWS, Google Cloud, Microsoft Azure, Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜.

Kubernetes๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹

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

๊ทธ๋Ÿฌ๋‚˜ ์ตœ๊ทผ Kubernetes์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๊ธฐํƒ€ ์ƒํƒœ ์ €์žฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. StatefulSet ๊ฐœ๋…์€ Pod ์ž‘์—… ์ค‘์ง€ ๋ฐ Graceful Shutdown(์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ) ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ผ๋ จ์˜ ๊ธฐ๋ณธ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
  2. ์˜๊ตฌ ๋ณผ๋ฅจ์€ Kubernetes ๊ด€๋ฆฌ ๊ฐœ์ฒด์ธ Pod์™€ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.
  3. ์šด์˜์ž ํ”„๋ ˆ์ž„์›Œํฌ - ์ฆ‰, ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๊ธฐํƒ€ ์ƒํƒœ ์ €์žฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์—๋Š” CockroachCloud, InfluxDB, PlanetScale๊ณผ ๊ฐ™์€ Kubernetes๊ฐ€ ๋ฐฑ์—”๋“œ์ธ ๋Œ€๊ทœ๋ชจ Databases as a Service๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Kubernetes์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ด๋ก ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Percona์—๋Š” Kubernetes๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์˜คํ”ˆ ์†Œ์Šค ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. MongoDB์šฉ Percona Server์˜ Kubernetes ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.
  2. XtraDB CLUSTER์šฉ Kubernetes Operator๋Š” MySQL๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ ๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ฐœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ๊ณ ๊ฐ€์šฉ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹จ์ผ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes ์‚ฌ์šฉ์ž๋Š” ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ Kubernetes Operator๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ์ฃผ๋กœ ๊ธฐ์ˆ  ์ž‘๋™ ๋ฐฉ์‹์„ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฅผ ๋ฐฑ์—”๋“œ์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค๋กœ์„œ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database as a Service)์™€ ๊ฐ™์€ ๊ฒƒ์— ๊ด€์‹ฌ์ด ์žˆ์ง€๋งŒ Kubernetes์˜ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๋ฅผ ํƒ๊ตฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์„ ์œ„ํ•ด ๋˜ ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ์†”๋ฃจ์…˜์ธ Percona DBaaS CLI ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด ์—†์ด Kubernetes ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค DBaaS๋ฅผ ๊ตฌํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์‹คํ—˜์ ์ธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

Google Kubernetes Engine์—์„œ Percona์˜ DBaaS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ œ ์ƒ๊ฐ์—๋Š” Google Kubernetes Engine์€ Kubernetes ๊ธฐ์ˆ ์„ ๊ฐ€์žฅ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์„ธ๊ณ„ ์—ฌ๋Ÿฌ ์ง€์—ญ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ”Œ๋žซํผ์„ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํŽธ๋ฆฌํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ(SDK)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

DBaaS๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  1. Kubectl.
  2. ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ SDK.
  3. Percona DBaaS CLI.

kubectl ์„ค์น˜

์šด์˜ ์ฒด์ œ์— ๋งž๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  Ubuntu์˜ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—.

sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ SDK ์„ค์น˜

๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—.

# Add the Cloud SDK distribution URI as a package source
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] 
http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk

Percona DBaaS CLI ์„ค์น˜

Percona ์ €์žฅ์†Œ์—์„œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Percona DBaaS CLI ๋„๊ตฌ๋Š” ์•„์ง ์‹คํ—˜์ ์ธ ์ œํ’ˆ์ด๋ฏ€๋กœ Percona ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋ณ„๋„๋กœ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ์‹คํ—˜์  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์—ฌ๊ธฐ์—.

์„ค์น˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜:

  1. percona-release ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Percona ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•˜์„ธ์š”. ๋จผ์ € Percona์—์„œ ๊ณต์‹ percona ๋ฆด๋ฆฌ์Šค ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
    sudo dpkg -i percona-release_latest.generic_all.deb
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ—˜ ๋„๊ตฌ ์ €์žฅ์†Œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
    sudo percona-release enable tools experimental
    
  3. percona-dbaas-cli ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
    sudo apt-get update
    sudo apt-get install percona-dbaas-cli

๊ตฌ์„ฑ์š”์†Œ ์ž‘๋™ ์„ค์ •

์„ค์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์—ฌ๊ธฐ์—.

๋จผ์ € Google ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Google Cloud์—์„œ๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

gcloud auth login
gcloud config set project hidden-brace-236921

๋‹ค์Œ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ๋ฅผ ์œ„ํ•ด ์ €๋Š” ๋‹จ XNUMX๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ตœ์†Œ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

gcloud container clusters create --zone us-central1-a your-cluster-name --cluster-version 1.15 --num-nodes=3

๋‹ค์Œ kubectl ๋ช…๋ น์€ ํ˜„์žฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์›ํ•˜๋Š” ๊ถŒํ•œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

kubectl create clusterrolebinding cluster-admin-binding-$USER 
--clusterrole=cluster-admin --user=$(gcloud config get-value core/account)

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

kubectl create namespace my-namespace
kubectl config set-context --current --namespace=my-namespace

ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์ž‘

์ด๋Ÿฌํ•œ ๋ช‡ ๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ XNUMX๋…ธ๋“œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# percona-dbaas mysql create-db example
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     example
Resource Endpoint: example-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              Nt9YZquajW7nfVXTTrP
Status:            ready

ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

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

kubectl port-forward svc/example-proxysql 3306:3306 $

๊ทธ๋Ÿฐ ๋‹ค์Œ MySQL ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

mysql -h 127.0.0.1 -P 3306 -uroot -pNt9YZquajW7nfVXTTrP

๊ณ ๊ธ‰ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋ช…๋ น

๊ณต๊ฐœ IP์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

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

# percona-dbaas mysql create-db exposed 
--options="proxysql.serviceType=LoadBalancer"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     exposed
Resource Endpoint: 104.154.133.197
Port:              3306
User:              root
Pass:              k0QVxTr8EVfgyCLYse
Status:            ready

To access database please run the following command:
mysql -h 104.154.133.197 -P 3306 -uroot -pk0QVxTr8EVfgyCLYse

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”.

์‹œ์Šคํ…œ์ด ๋ฌด์ž‘์œ„๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹  ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# percona-dbaas mysql create-db withpw --password=mypassword
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     withpw
Resource Endpoint: withpw-proxysql.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              mypassword
Status:            ready

์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ ์ถœ๋ ฅ์„ ํ‘œ์‹œํ•˜๊ณ  ์žˆ์ง€๋งŒ JSON ํ˜•์‹๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๊ณ ๊ฐ€์šฉ์„ฑ ๋„๊ธฐ

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋‹จ์ผ ๋…ธ๋“œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# percona-dbaas mysql create-db singlenode 
--options="proxysql.enabled=false, allowUnsafeConfigurations=true,pxc.size=1"
Starting ......................................... [done]
Database started successfully, connection details are below:
Provider:          k8s
Engine:            pxc
Resource Name:     singlenode
Resource Endpoint: singlenode-pxc.my-namespace.pxc.svc.local
Port:              3306
User:              root
Pass:              22VqFD96mvRnmPMGg
Status:            ready

์ด๋Š” MySQL์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์‹œ์ž‘ ๋ฐ ์‹คํ–‰ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•œ ๋‹ค์Œ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ์ž‘์—…์„ ์œ„ํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

Percona DBaaS CLI ๋„๊ตฌ๋Š” Kubernetes์—์„œ DBaaS์™€ ์œ ์‚ฌํ•œ ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ๊ธฐ๋Šฅ๊ณผ ์œ ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ณ„์† ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ณด๊ณ ์„œ๋Š” ์—์„œ ์ฒ˜์Œ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ์ž„ Mail.ru Cloud Solutions&Tarantool ์ œ๊ณต. ๋ฐ”๋ผ๋ณด๋‹ค ๋น„๋””์˜ค ๊ธฐํƒ€ ๊ณต์—ฐ ๋ฐ ํ…”๋ ˆ๊ทธ๋žจ ์ด๋ฒคํŠธ ๊ณต์ง€์‚ฌํ•ญ ๊ตฌ๋… Mail.ru ๊ทธ๋ฃน์˜ Kubernetes ๊ด€๋ จ.

์ฃผ์ œ์— ๋Œ€ํ•ด ์ฝ์„ ๋‚ด์šฉ:

  1. ์ตœ์‹  IIoT ํ”Œ๋žซํผ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.
  2. ๋‹ค์‹œ ์„ ํƒํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•.

์ถœ์ฒ˜ : habr.com

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