Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

์•ˆ๋…•ํ•˜์„ธ์š”, ํ•˜๋ธŒ๋กœํ”„์Šคํฌ ์ฃผ๋ฏผ ์—ฌ๋Ÿฌ๋ถ„. ๋Š˜ ๊ทธ๋ ‡๋“ฏ, ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๊ฐ•์ขŒ ์‹œ์ž‘์— ์•ž์„œ ํฅ๋ฏธ๋กœ์šด ์ž๋ฃŒ๋ฅผ ๊ณ„์†ํ•ด์„œ ๊ณต์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ํŠนํžˆ ์—ฌ๋Ÿฌ๋ถ„์„ ์œ„ํ•ด ๊ณผ์ • ๊ฐœ์„ค์— ๋งž์ถฐ Google Cloud Spanner์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. "๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ AWS".

Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

์›๋ž˜ ์ถœํŒ๋œ ์‹œ๊ธฐ ๊ด‘์† ๋ณธ๋ถ€ ๋ธ”๋กœ๊ทธ.

์ „ ์„ธ๊ณ„ ์†Œ๋งค์—…์ฒด, ๋ ˆ์Šคํ† ๋ž‘ ๊ฒฝ์˜์ž, ์˜จ๋ผ์ธ ํŒ๋งค์ž์—๊ฒŒ ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ POS ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” ํšŒ์‚ฌ์ธ Lightspeed๋Š” ๋‹ค์–‘ํ•œ ๊ฑฐ๋ž˜, ๋ถ„์„ ๋ฐ ๊ฒ€์ƒ‰ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋žซํผ์€ ๊ฐ๊ฐ ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Google์ด ์‚ฌ์‹ค์ƒ ๋ฌด์ œํ•œ์˜ ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ๊ณผ 99,999% SLA(์„œ๋น„์Šค ์ˆ˜์ค€ ๊ณ„์•ฝ) ๋“ฑ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ธ๊ณ„์—์„œ๋Š” ๋ณผ ์ˆ˜ ์—†๋Š” ์œ ๋งํ•œ ๊ธฐ๋Šฅ์ธ Cloud Spanner๋ฅผ ์‹œ์žฅ์— ์ถœ์‹œํ–ˆ์„ ๋•Œ, โ€” ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์†์— ๋„ฃ์„ ๊ธฐํšŒ๋ฅผ ๋†“์น  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค!

Cloud Spanner ์‚ฌ์šฉ ๊ฒฝํ—˜๊ณผ ์‚ฌ์šฉ๋œ ํ‰๊ฐ€ ๊ธฐ์ค€์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  1. ์šฐ๋ฆฌ์˜ ํ‰๊ฐ€ ๊ธฐ์ค€
  2. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ Cloud Spanner
  3. ์šฐ๋ฆฌ์˜ ํ‰๊ฐ€
  4. ์šฐ๋ฆฌ์˜ ์—ฐ๊ตฌ ๊ฒฐ๊ณผ

Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

1. ๋‹น์‚ฌ์˜ ํ‰๊ฐ€ ๊ธฐ์ค€

Cloud Spanner์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ, ์‹œ์ค‘์˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜๊ณผ์˜ ์œ ์‚ฌ์  ๋ฐ ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์— ๋จผ์ € ์ธํ”„๋ผ์—์„œ Cloud Spanner๋ฅผ ๋ฐฐํฌํ•  ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ์—ผ๋‘์— ๋‘” ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • (์ฃผ์š”) ๊ธฐ์กด SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
  • OLAP๋ฅผ ์ง€์›ํ•˜๋Š” OLTP ์†”๋ฃจ์…˜ ๋ฐฉ๋ฒ•

์ฐธ๊ณ  : ๋‹จ์ˆœ์„ฑ๊ณผ ์šฉ์ดํ•œ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์ด ๋ฌธ์„œ์—์„œ๋Š” Cloud Spanner๋ฅผ GCP Cloud SQL ๋ฐ Amazon AWS RDS ์†”๋ฃจ์…˜ ์ œํ’ˆ๊ตฐ์˜ MySQL ๋ณ€ํ˜•๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

Cloud Spanner๋ฅผ ๊ธฐ์กด SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์˜ ๋Œ€์ฒดํ’ˆ์œผ๋กœ ์‚ฌ์šฉ

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

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

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

์ด ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๋ถ„๋ช…ํ•œ ๊ฒƒ์€ ์‹œ์žฅ์— ๋‚˜์™€ ์žˆ๋Š” ์ตœ๋Œ€ ์„œ๋ฒ„ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์˜ ํ•œ๊ณ„์— ๋„๋‹ฌํ•˜๋ฉด ์ˆ˜ํ‰ ํ™•์žฅ์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ์˜ต์…˜๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค.

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

๋ฐ˜๋ฉด Cloud Spanner๋Š” ๊ทธ ํŠน์„ฑ์ƒ ์ตœ์†Œํ•œ์˜ ๊ฐœ์ž…์œผ๋กœ ์‰ฝ๊ฒŒ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์„œ๋น„์Šค๋กœ์„œ์˜ DBMS ๋‹ค์–‘ํ•œ ๊ฐ๋„์—์„œ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ํด๋ผ์šฐ๋“œ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” DBMS์ธ Google์˜ ๊ฒฝ์šฐ GCP Cloud SQL๊ณผ Amazon์˜ ๊ฒฝ์šฐ AWS RDS๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‰๊ฐ€์—์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ๋ฒ”์ฃผ์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋Šฅ ๋งคํ•‘: ๋ฒ”์œ„ SQL, DDL, DML; ์—ฐ๊ฒฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/์ปค๋„ฅํ„ฐ, ํŠธ๋žœ์žญ์…˜ ์ง€์› ๋“ฑ.
  • ๊ฐœ๋ฐœ ์ง€์›: ์†์‰ฌ์šด ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ.
  • ๊ด€๋ฆฌ ์ง€์›: ์ธ์Šคํ„ด์Šค ๊ด€๋ฆฌ(์˜ˆ: ์ธ์Šคํ„ด์Šค ํ™•์žฅ/์ถ•์†Œ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ) SLA, ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ; ๋ณด์•ˆ/์•ก์„ธ์Šค ์ œ์–ด.

Cloud Spanner๋ฅผ OLAP ์ง€์› OLTP ์†”๋ฃจ์…˜์œผ๋กœ ์‚ฌ์šฉ

Google์€ Cloud Spanner๊ฐ€ ๋ถ„์„ ์ฒ˜๋ฆฌ์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์ฃผ์žฅํ•˜์ง€๋Š” ์•Š์ง€๋งŒ OLAP ์›Œํฌ๋กœ๋“œ์šฉ์œผ๋กœ ์„ค๊ณ„๋œ Apache Impala & Kudu ๋ฐ YugaByte์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์—”์ง„๊ณผ ์ผ๋ถ€ ์†์„ฑ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

Cloud Spanner์— (๋‹ค์†Œ) ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ OLAP ๊ธฐ๋Šฅ ์„ธํŠธ๊ฐ€ ํฌํ•จ๋œ ์ผ๊ด€๋œ ์ˆ˜ํ‰ ํ™•์žฅ HTAP(ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํŠธ๋žœ์žญ์…˜/๋ถ„์„ ์ฒ˜๋ฆฌ) ์—”์ง„์ด ํฌํ•จ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋”๋ผ๋„ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๋‹ค์Œ ๋ฒ”์ฃผ๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ์ธ๋ฑ์Šค ๋ฐ ํŒŒํ‹ฐ์…”๋‹ ์ง€์›
  • ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ฐ DML

2. Cloud Spanner ์š”์•ฝ

Google Spanner๋Š” Google์ด ์—ฌ๋Ÿฌ ์ž์ฒด ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐํ˜• ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์ž…๋‹ˆ๋‹ค. Google์€ 2017๋…„ ์ดˆ์— Google Cloud Platform ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ๊ธฐ๋Šฅ์„ ์ผ๋ฐ˜ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

Cloud Spanner ์†์„ฑ ์ค‘ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ผ๊ด€์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ RDBMS ํด๋Ÿฌ์Šคํ„ฐ: ํ•˜๋“œ์›จ์–ด ์‹œ๊ฐ„ ๋™๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ” ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ์ง€์›: ํŠธ๋žœ์žญ์…˜์€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๊ฑธ์ณ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ Apache HBase ๋˜๋Š” Apache Kudu์™€ ๋‹ฌ๋ฆฌ ๋ฐ˜๋“œ์‹œ ๋‹จ์ผ ํ…Œ์ด๋ธ”๋กœ ์ œํ•œ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ํ‚ค ๊ธฐ๋ฐ˜ ํ…Œ์ด๋ธ”: ๋ชจ๋“  ํ…Œ์ด๋ธ”์—๋Š” ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ์—ด๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ์„ ์–ธ๋œ ๊ธฐ๋ณธ ํ‚ค(PC)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋Š” PC ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ PC ๊ฒ€์ƒ‰์— ๋งค์šฐ ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ PC ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ตฌํ˜„์€ ์‚ฌ์ „ ์„ค๊ณ„๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๋ชจ๋ธ๋ง๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ.
  • ์ŠคํŠธ๋ผ์ดํ”„ ํ…Œ์ด๋ธ”: ํ…Œ์ด๋ธ”์€ ์„œ๋กœ ๋ฌผ๋ฆฌ์  ์ข…์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์œ„ ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์ƒ์œ„ ํ…Œ์ด๋ธ”์˜ ํ–‰๊ณผ ์ผ์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ๊ฐ ๋ฐ ์†ก์žฅ ๊ณต๋™ ๋ฐฐ์น˜์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๋‹จ๊ณ„์—์„œ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ์ƒ‰์ธ: Cloud Spanner๋Š” ๋ณด์กฐ ์ƒ‰์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ์ธ๋ฑ์Šค๋œ ์—ด๊ณผ ๋ชจ๋“  PC ์—ด๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์—๋Š” ์ธ๋ฑ์‹ฑ๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ์—ด๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ƒ์œ„ ํ…Œ์ด๋ธ”๊ณผ ์ธํ„ฐ๋ฆฌ๋ธŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค์— ์ €์žฅ๋˜๋Š” ์ถ”๊ฐ€ ์—ด์˜ ์ตœ๋Œ€ ์ˆ˜์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ์ด ์ธ๋ฑ์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์ฟผ๋ฆฌ๋Š” ๋‹ค๋ฅธ RDBMS๋งŒํผ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€œCloud Spanner๋Š” ๋“œ๋ฌธ ๊ฒฝ์šฐ์—๋งŒ ์ƒ‰์ธ์„ ์ž๋™์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ฟผ๋ฆฌ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์€ ์—ด์„ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ Cloud Spanner๋Š” ์ž๋™์œผ๋กœ ๋ณด์กฐ ์ƒ‰์ธ์„ ์„ ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒ‰์ธ ".

  • SLA(์„œ๋น„์Šค ์ˆ˜์ค€ ๊ณ„์•ฝ): SLA 99,99%๋กœ ํ•œ ์ง€์—ญ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. 99,999% SLA๋ฅผ ๊ฐ–์ถ˜ ๋‹ค์ค‘ ์ง€์—ญ ๋ฐฐํฌ. SLA ์ž์ฒด๋Š” ๋‹จ์ง€ ๊ณ„์•ฝ์ผ ๋ฟ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ณด์žฅ๋„ ์•„๋‹ˆ์ง€๋งŒ Google ์ง์›์€ ๊ทธ๋ ‡๊ฒŒ ๊ฐ•๋ ฅํ•œ ์ฃผ์žฅ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™•์‹คํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. (์ฐธ๊ณ ๋กœ 99,999%๋Š” ์›” 26,3์ดˆ์˜ ์„œ๋น„์Šค ๋ถˆ๊ฐ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)
  • ๋”๋ณด๊ธฐ : https://cloud.google.com/spanner/

์ฐธ๊ณ  : Apache Tephra ํ”„๋กœ์ ํŠธ๋Š” Apache HBase์— ํ–ฅ์ƒ๋œ ํŠธ๋žœ์žญ์…˜ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(ํ˜„์žฌ Apache Phoenix์—์„œ๋„ ๋ฒ ํƒ€๋กœ ๊ตฌํ˜„๋จ).

3. ์šฐ๋ฆฌ์˜ ํ‰๊ฐ€

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋†’์€ ์ผ๊ด€์„ฑ๊ณผ ๋งค์šฐ ๋†’์€ SLA๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์‚ฌ์‹ค์ƒ ๋ฌด์ œํ•œ์˜ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•œ Cloud Spanner์˜ ์ด์ ์— ๋Œ€ํ•œ Google์˜ ์ฃผ์žฅ์„ ๋ชจ๋‘ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๋‹ฌ์„ฑํ•˜๊ธฐ ๋งค์šฐ ์–ด๋ ต์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ๋Š” ์ด๋ฅผ ๋ฐ˜๋ฐ•ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€์‹  ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ๋‹ค๋ฅธ ์‚ฌํ•ญ์ธ ํŒจ๋ฆฌํ‹ฐ์™€ ์œ ์šฉ์„ฑ์— ์ดˆ์ ์„ ๋งž์ถ”๊ฒ ์Šต๋‹ˆ๋‹ค.

์ƒค๋”ฉ๋œ MySQL์„ ๋Œ€์ฒดํ•  ์ œํ’ˆ์œผ๋กœ Cloud Spanner๋ฅผ ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์‹œ์žฅ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” OLTP DBMS ์ค‘ ํ•˜๋‚˜์ธ Google Cloud SQL๊ณผ Amazon AWS RDS๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹จ์ผ ๋…ธ๋“œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ํ™•์žฅํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ถ„ํ• ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ด€๋ฆฌ ๋ชจ๋‘์— ์ถ”๊ฐ€์ ์ธ ๋ณต์žก์„ฑ์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Spanner๊ฐ€ ์—ฌ๋Ÿฌ ์ƒค๋“œ๋ฅผ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์— ์–ด๋–ป๊ฒŒ ์ ํ•ฉํ•˜๊ณ  ์–ด๋–ค ๊ธฐ๋Šฅ(์žˆ๋Š” ๊ฒฝ์šฐ)์„ ํฌ์ƒํ•ด์•ผ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

SQL, DML, DDL์€ ๋ฌผ๋ก  ์ปค๋„ฅํ„ฐ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊นŒ์ง€ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

๋จผ์ €, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JDBC Spanner๋ฅผ ์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” SQL ๋„๊ตฌ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •(DDL)ํ•˜๊ฑฐ๋‚˜ ์‚ฝ์ž…/์—…๋ฐ์ดํŠธ/์‚ญ์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์—…(DML). Google์˜ ๊ณต์‹ JDBC๋Š” ์ด๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

"๋“œ๋ผ์ด๋ฒ„๋Š” ํ˜„์žฌ DML ๋˜๋Š” DDL ๋ฌธ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."
์ŠคํŒจ๋„ˆ ๋ฌธ์„œ

GCP ์ฝ˜์†”์˜ ์ƒํ™ฉ์€ ๊ทธ๋‹ค์ง€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SELECT ์ฟผ๋ฆฌ๋งŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์ปค๋ฎค๋‹ˆํ‹ฐ์—๋Š” ํŠธ๋žœ์žญ์…˜์„ ํฌํ•จํ•˜์—ฌ DML ๋ฐ DDL์„ ์ง€์›ํ•˜๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. github.com/olavloite/spanner-jdbc. ์ด ๋“œ๋ผ์ด๋ฒ„๋Š” ๋งค์šฐ ์œ ์šฉํ•˜์ง€๋งŒ Google ์ž์ฒด JDBC ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์—†๋‹ค๋Š” ์ ์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ Google์€ C#, Go, Java, node.js, PHP, Python, Ruby ๋“ฑ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(gRPC ๊ธฐ๋ฐ˜)์— ๋Œ€ํ•ด ์ƒ๋‹นํžˆ ๊ด‘๋ฒ”์œ„ํ•œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Cloud Spanner ์ปค์Šคํ…€ API๋ฅผ ๊ฑฐ์˜ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋ฉด(JDBC์— DDL ๋ฐ DML์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—) ์—ฐ๊ฒฐ ํ’€์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ”์ธ๋”ฉ ํ”„๋ ˆ์ž„์›Œํฌ(์˜ˆ: Spring MVC)์™€ ๊ฐ™์€ ๊ด€๋ จ ์ฝ”๋“œ ์˜์—ญ์— ์ผ๋ถ€ ์ œํ•œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ JDBC๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ์ž˜ ์ž‘๋™ํ•˜๋Š” ์„ ํ˜ธํ•˜๋Š” ์—ฐ๊ฒฐ ํ’€(์˜ˆ: HikariCP, DBCP, C3PO ๋“ฑ)์„ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ…€ Spanner API์˜ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ํ”„๋ ˆ์ž„์›Œํฌ/๋ฐ”์ธ๋”ฉ ํ’€/์„ธ์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ‚ค(PC) ์ค‘์‹ฌ ์„ค๊ณ„๋ฅผ ํ†ตํ•ด Cloud Spanner๋Š” PC๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ๋•Œ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ฟผ๋ฆฌ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ํ‚ค ๊ฐ’์€ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์›๋ž˜ PC์—์„œ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ ๊ฐ’์œผ๋กœ ๋‹ค์‹œ ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ด๋Š” ๋‹ค๋ฅธ PC ์ง€ํ–ฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.)
  • ๋ชจ๋“  UPDATE ๋ฐ DELETE ๋ฌธ์€ WHERE์— PC๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ DELETE ๋ชจ๋“  ๋ฌธ์ด ๋น„์–ด ์žˆ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ํ•˜์œ„ ์ฟผ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: UPDATE xxx WHERE id IN (SELECT id FROM table1)
  • ์ž๋™ ์ฆ๊ฐ€ ์˜ต์…˜์ด๋‚˜ PC ํ•„๋“œ์˜ ์ˆœ์„œ๋ฅผ ์„ค์ •ํ•˜๋Š” ์œ ์‚ฌํ•œ ์˜ต์…˜์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธก์—์„œ ํ•ด๋‹น ๊ฐ’์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณด์กฐ ์ธ๋ฑ์Šค?

Google Cloud Spanner์—๋Š” ๋ณด์กฐ ์ƒ‰์ธ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ๊ธฐ์ˆ ์—๋Š” ํ•ญ์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์•„์ฃผ ์ข‹์€ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. Apache Kudu๋Š” ํ˜„์žฌ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์ „ํ˜€ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ Apache HBase๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ Apache Phoenix๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Cloud Spanner ๊ฒ€ํ† ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ•ด๋‹น ์ƒ‰์ธ์€ MySQL ์ƒ‰์ธ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ํ”„๋กœํŒŒ์ผ๋งํ•  ๋•Œ ํ•„์š”ํ•œ ๊ณณ์— ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋„๋ก ํŠน๋ณ„ํ•œ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ?

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

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

๊ฐœ๋ฐœ ์ง€์›?

Cloud Spanner๋Š” API ์ž‘์—…์„ ์œ„ํ•œ ๊ฝค ๊ดœ์ฐฎ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹์ ์œผ๋กœ ์ง€์›๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” C#, Go, Java, node.js, PHP, Python ๋ฐ Ruby ์˜์—ญ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” ๋งค์šฐ ์ƒ์„ธํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ˆ ์— ๋น„ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋งค์šฐ ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๋œ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋‚˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ง€์—ญ ๋ฐœ์ „์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ์š”?

์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ Cloud Spanner ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์–ป์€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ์€ Docker ์ด๋ฏธ์ง€์˜€์Šต๋‹ˆ๋‹ค. ๋ฐ”ํ€ด๋ฒŒ๋ ˆ DB, ์›์น™์ ์œผ๋กœ๋Š” ์œ ์‚ฌํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CockroachDB๋Š” PostgreSQL JDBC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๊ณผ ์ตœ๋Œ€ํ•œ ์œ ์‚ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Cloud Spanner๋Š” ์ „์ฒด Spanner ์ธ์Šคํ„ด์Šค์— ์˜์กดํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๋ ค๋ฉด ๋‹จ์ผ ์ง€์—ญ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ–‰์ •์ง€์›?

Cloud Spanner ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์ง€์—ญ ๋˜๋Š” ๋‹จ์ผ ์ง€์—ญ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์ค‘์—์„œ ์„ ํƒํ•˜๊ณ  ์ง€์—ญ๊ณผ ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. XNUMX๋ถ„ ์ด๋‚ด์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘๋˜์–ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Google Console์˜ Spanner ํŽ˜์ด์ง€์—์„œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์ธก์ •ํ•ญ๋ชฉ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ ๊ธฐ์ค€์ ๊ณผ ์•Œ๋ฆผ ์ •์ฑ…์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋Š” Stackdriver๋ฅผ ํ†ตํ•ด ๋” ์ž์„ธํ•œ ๋ณด๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์›์— ๋Œ€ํ•œ ์ ‘๊ทผ?

MySQL์€ ์‚ฌ์šฉ์ž ๊ถŒํ•œ/์—ญํ• ์— ๋Œ€ํ•ด ๊ด‘๋ฒ”์œ„ํ•˜๊ณ  ๋งค์šฐ ์„ธ๋ถ€์ ์ธ ์„ค์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํ…Œ์ด๋ธ” ๋˜๋Š” ํ•ด๋‹น ์—ด์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud Spanner๋Š” ๋งค์šฐ ๋†’์€ ์ˆ˜์ค€์˜ ์ •์ฑ…๊ณผ ๊ถŒํ•œ๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” Google์˜ ID ๋ฐ ์•ก์„ธ์Šค ๊ด€๋ฆฌ(IAM) ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์„ธ๋ถ€์ ์ธ ์˜ต์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ˆ˜์ค€ ํ•ด๊ฒฐ๋กœ, ์ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œํ•œ์œผ๋กœ ์ธํ•ด Spanner ๋ฆฌ์†Œ์Šค์˜ ๋ฌด๋‹จ ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ฝ”๋“œ, ์ธํ”„๋ผ ๋˜๋Š” ๋‘˜ ๋‹ค์— ์ถ”๊ฐ€ ๋ณด์•ˆ ์กฐ์น˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—…?

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

์ฟผ๋ฆฌ ์„ฑ๋Šฅ?

์šฐ๋ฆฌ๋Š” Yahoo!๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋ฒค์น˜๋งˆํฌ. ์•„๋ž˜ ํ‘œ๋Š” ์ฝ๊ธฐ 95% ๋Œ€ ์“ฐ๊ธฐ ๋น„์œจ 5%์˜ YCSB ์›Œํฌ๋กœ๋“œ B๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

* ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” n1-standard-32 Compute Engine(CE)(32 vCPU, 120GB ๋ฉ”๋ชจ๋ฆฌ)์—์„œ ์‹คํ–‰๋˜์—ˆ์œผ๋ฉฐ, ํ…Œ์ŠคํŠธ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ํ…Œ์ŠคํŠธ์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ํ•œ ๋ฒˆ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
** ๋‹จ์ผ YCSB ์ธ์Šคํ„ด์Šค์˜ ์ตœ๋Œ€ ์Šค๋ ˆ๋“œ ์ˆ˜๋Š” 400๊ฐœ์ž…๋‹ˆ๋‹ค. ์ด 2400๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์–ป์œผ๋ ค๋ฉด ์ด XNUMX๊ฐœ์˜ YCSB ํ…Œ์ŠคํŠธ ๋ณ‘๋ ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ, ํŠนํžˆ CPU ๋กœ๋“œ์™€ TPS์˜ ์กฐํ•ฉ์„ ์‚ดํŽด๋ณด๋ฉด Cloud Spanner์˜ ํ™•์žฅ์„ฑ์ด ๋งค์šฐ ์šฐ์ˆ˜ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆ˜์˜ ์Šค๋ ˆ๋“œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ณผ๋„ํ•œ ๋กœ๋“œ๋Š” Cloud Spanner ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋งŽ์€ ์ˆ˜์˜ ๋…ธ๋“œ๋กœ ์ƒ์‡„๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ 2400๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ƒ๋‹นํžˆ ๊ธธ์–ด ๋ณด์ด์ง€๋งŒ ๋” ์ •ํ™•ํ•œ ์ˆ˜์น˜๋ฅผ ์–ป์œผ๋ ค๋ฉด 6๊ฐœ์˜ ๋” ์ž‘์€ ์ปดํ“จํŒ… ์—”์ง„ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” 6๊ฐœ์˜ ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ํ•˜๋‚˜์˜ ๋Œ€ํ˜• CE ์ธ์Šคํ„ด์Šค ๋Œ€์‹  ํ•˜๋‚˜์˜ YCSB ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Cloud Spanner ์š”์ฒญ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ Cloud Spanner์™€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” CE ์ธ์Šคํ„ด์Šค ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๋กœ ์ธํ•ด ์ถ”๊ฐ€๋˜๋Š” ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋” ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud Spanner๋Š” OLAP์œผ๋กœ์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

ํŒŒํ‹ฐ์…”๋‹?

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

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

๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œ ์ค‘์ด์‹ ๊ฐ€์š”?

๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ Cloud Spanner ๋ฐฉ๋ฒ•์€ ์ผ๋ฐ˜ ๋กœ๋“œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ํฌํ•จํ•œ ๋ช‡ ๊ฐ€์ง€ ์ง€์นจ์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
  • 10*์œผ๋กœ ๋‚˜๋ˆ„์„ธ์š”๋…ธ๋“œ ์ˆ˜ ๋ณ„๋„์˜ ์„น์…˜.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๋Š” ์ž‘์—… ์„ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ๋ฐ์ดํ„ฐ ๋กœ๋“œ์—๋Š” ๋ชจ๋“  Cloud Spanner ๋…ธ๋“œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” YCSB ์›Œํฌ๋กœ๋“œ A๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 10์ฒœ๋งŒ ํ–‰์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

* ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” n1-standard-32 ์ปดํ“จํŒ… ์—”์ง„(vCPU 32๊ฐœ, 120GB ๋ฉ”๋ชจ๋ฆฌ)์—์„œ ์‹คํ–‰๋˜์—ˆ์œผ๋ฉฐ, ํ…Œ์ŠคํŠธ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ํ…Œ์ŠคํŠธ์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
**๋ชจ๋“  ํ”„๋กœ๋•์…˜ ์›Œํฌ๋กœ๋“œ์—๋Š” ๋‹จ์ผ ๋…ธ๋“œ ์„ค์ •์ด ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์Šค์ผ€์ผ๋ง?

Cloud Spanner ๋…ธ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ด๋Š” ๊ฒƒ์€ ์›ํด๋ฆญ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•˜๋ ค๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ตœ๋Œ€์น˜(์ด ๊ฒฝ์šฐ ๋ฏธ๊ตญ ๋™๋ถ€ ์ง€์—ญ์˜ ๋…ธ๋“œ๋Š” 25๊ฐœ)๊นŒ์ง€ ๋Š˜๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ๋“œ๋˜๋ฉด ์ผ๋ฐ˜ ๋กœ๋“œ์— ์ ํ•ฉํ•œ ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. 2TB/๋…ธ๋“œ ์ œํ•œ์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ œํ•œ์„ ์ƒ๊ธฐํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ ๋กœ๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ๋Š” ์•ฝ 155GB์˜€์œผ๋ฉฐ 1๋…ธ๋“œ ์ธ์Šคํ„ด์Šค๋กœ ์ถ•์†Œํ–ˆ์„ ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

์ธ์Šคํ„ด์Šค๋ฅผ 25๊ฐœ์—์„œ 2๊ฐœ๋กœ ์ถ•์†Œํ–ˆ์ง€๋งŒ ๋…ธ๋“œ XNUMX๊ฐœ์— ๊ฐ‡ํ˜€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Cloud Spanner ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ด๋Š” ์ž‘์—…์€ REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ”์œ ์—…๋ฌด ์‹œ๊ฐ„ ๋™์•ˆ ์ฆ๊ฐ€๋œ ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๋Š” ๋ฐ ํŠนํžˆ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OLAP ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ?

์›๋ž˜ ์šฐ๋ฆฌ๋Š” ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด Spanner๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์„ ํ• ์• ํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒˆ์˜ SELECT COUNT ํ›„์— ์šฐ๋ฆฌ๋Š” ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์ด ์งง๊ณ  Spanner๊ฐ€ OLAP์— ์ ํ•ฉํ•œ ์—”์ง„์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์ฆ‰์‹œ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋…ธ๋“œ ์ˆ˜์— ๊ด€๊ณ„์—†์ด 10์ฒœ๋งŒ ํ–‰ ํ…Œ์ด๋ธ”์—์„œ ํ–‰ ์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ๋งŒ 55~60์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ฟผ๋ฆฌ๋Š” OOM ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

SELECT COUNT(DISTINCT(field0)) FROM usertable; โ€” (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.

TPC-H ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ˆซ์ž๋Š” Todd Lipcon์˜ ๊ธฐ์‚ฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Nosql-kudu-spanner-slides.html, ์Šฌ๋ผ์ด๋“œ 42 ๋ฐ 43. ์ด ์ˆ˜์น˜๋Š” (๋ถˆํ–‰ํžˆ๋„) ์šฐ๋ฆฌ์˜ ๊ฒฐ๊ณผ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud Spanner: ์ข‹์Œ, ๋‚˜์จ, ๋‚˜์จ

4. ์šฐ๋ฆฌ์˜ ๊ฒฐ๋ก 

Cloud Spanner ๊ธฐ๋Šฅ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•  ๋•Œ, ํŠนํžˆ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฉด ๊ธฐ์กด OLTP ์†”๋ฃจ์…˜์„ ๊ฐ„๋‹จํžˆ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Cloud Spanner์˜ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๋Š” ์†”๋ฃจ์…˜์„ ๊ตฌ์ถ•ํ•˜๋ ค๋ฉด ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ ‡๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™•์žฅํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์–ด๋””๋กœ ๊ฐ€๋‚˜์š”? ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๋Š” ๋‹จ์ผ ์†”๋ฃจ์…˜์€ ์‹œ์žฅ์— ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ์‡„ํ˜• ๋ฐ ์˜คํ”ˆ ์†Œ์Šค ์†”๋ฃจ์…˜์ด ๋งŽ์ด ์žˆ์œผ๋ฉฐ(์ด ๊ธฐ์‚ฌ์—์„œ ์ผ๋ถ€ ์–ธ๊ธ‰๋จ) ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ์žฅ๋‹จ์ ์ด ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ 99,999% SLA์™€ ๋†’์€ ์ผ๊ด€์„ฑ์„ ๊ฐ–์ถ˜ SaaS๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋†’์€ SLA๊ฐ€ ์ฃผ์š” ๋ชฉํ‘œ์ด๊ณ  ์ปค์Šคํ…€ ๋ฉ€ํ‹ฐ ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜์„ ๊ตฌ์ถ•ํ•  ์˜ํ–ฅ์ด ์—†๋‹ค๋ฉด Cloud Spanner๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ์†”๋ฃจ์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์˜ ๋ชจ๋“  ํ•œ๊ณ„๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณตํ‰ํ•˜๊ฒŒ ๋งํ•˜๋ฉด Cloud Spanner๋Š” 2017๋…„ ๋ด„์—์•ผ ๋Œ€์ค‘์—๊ฒŒ ์ถœ์‹œ๋˜์—ˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ์˜ ๋‹จ์  ์ค‘ ์ผ๋ถ€๊ฐ€ ๊ฒฐ๊ตญ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ฉฐ(๋ฐ”๋ผ๊ฑด๋Œ€), ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฒŒ์ž„ ์ฒด์ธ์ €๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ Cloud Spanner๋Š” Google์˜ ๋‹จ์ˆœํ•œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Google์€ ์ด๋ฅผ ๋‹ค๋ฅธ Google ์ œํ’ˆ์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Google์ด ์ตœ๊ทผ Google Cloud Storage์˜ Megastore๋ฅผ Cloud Spanner๋กœ ๊ต์ฒดํ•˜๋ฉด์„œ Google Cloud Storage๊ฐ€ ๊ธ€๋กœ๋ฒŒ ๊ทœ๋ชจ์˜ ๊ฐ์ฒด ๋ชฉ๋ก์— ๋Œ€ํ•ด ๊ณ ๋„์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ์กด S3).

๊ทธ๋Ÿฌ๋‹ˆ ์•„์ง ํฌ๋ง์€ ์žˆ์Šต๋‹ˆ๋‹ค... ์šฐ๋ฆฌ๋Š” ํฌ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋‹ค์•ผ. ๊ธฐ์‚ฌ ์ž‘์„ฑ์ž์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๋„ ๊ณ„์† ํฌ๋งํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋Œ“๊ธ€์— ์ ์–ด์ฃผ์„ธ์š”

์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์šฐ๋ฆฌ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋„๋ก ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค ๋ฌด๋ฃŒ ์›น ์„ธ๋ฏธ๋‚˜ ๊ทธ ์•ˆ์—์„œ ์šฐ๋ฆฌ๋Š” ์ฝ”์Šค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค "๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ AWS" ์˜คํˆฌ์Šค์—์„œ.

์ถœ์ฒ˜ : habr.com

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