๋ณ€๊ฒฝ ๋‚ด์—ญ ๊ฐœ์š”

Bigtable์€ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ๋ฐ์ดํ„ฐ ์บก์ฒ˜(CDC)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๋‚ด์—ญ์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•  ๋•Œ Bigtable ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์บก์ฒ˜ํ•˜์—ฌ ์ฒ˜๋ฆฌ ๋˜๋Š” ๋ถ„์„์„ ์œ„ํ•ด ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ๋Š” Bigtable ๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋ฅผ ์ฝ๊ธฐ ์ „์— Bigtable ๊ฐœ์š”๋ฅผ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ์€ ๋‹ค์Œ์„ ๋น„๋กฏํ•œ CDC ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ง€์ •๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•  ๋•Œ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ํŠธ๋ฆฌ๊ฑฐ
  • ๋ฐ์ดํ„ฐ ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ์˜ ํ†ตํ•ฉ
  • ๊ฐ์‚ฌ ๋ฐ ๋ณด๊ด€ ์š”๊ตฌ์‚ฌํ•ญ ์ง€์›

๋ณ€๊ฒฝ ๋‚ด์—ญ์ด๋ž€?

๋ณ€๊ฒฝ ๋‚ด์—ญ์€ ์ผ๋ฐ˜์ ์œผ๋กœ Cloud Bigtable ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ˆ˜ํ–‰ํ•œ ํ…Œ์ด๋ธ” ์ˆ˜์ค€์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋„ ์บก์ฒ˜๋ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์‚ฌ์šฉ ์„ค์ •๋œ ํ…Œ์ด๋ธ”์— ์ ์šฉ๋œ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์—๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ์ ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • Cloud Bigtable API ๋ฉ”์„œ๋“œ MutateRow, MutateRows, CheckAndMutateRow, ReadModifyWriteRow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก๋˜๋Š” ์“ฐ๊ธฐ, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ธํ•œ ์‚ญ์ œ
  • Admin API์˜ DropRowRange ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ํ–‰ ์‚ญ์ œ

Bigtable ํ…Œ์ด๋ธ”๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€๊ฒฝ ์œ ํ˜•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‚ญ์ œ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณ€๊ฒฝ ๋‚ด์—ญ์€ column family ์ถ”๊ฐ€ ๋˜๋Š” ์ˆ˜์ •๊ณผ ๊ฐ™์€ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ์™€ ๊ฐ™์€ ๋ณต์ œ ํ† ํด๋กœ์ง€๋ฅผ ์ถ”์ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ ํ–‰ ํ‚ค ๋ฐ ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ๋Š” ์ปค๋ฐ‹ ํƒ€์ž„์Šคํƒฌํ”„ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ํ–‰ ํ‚ค ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ˆœ์„œ๋Š” ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์—์„œ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  ๋ณด๊ด€ ๊ธฐ๊ฐ„์„ 1~7์ผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์— ํฌํ•จ๋˜๋Š” ํ•ญ๋ชฉ

๊ฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์—๋Š” ๋‹จ์ผ RPC ํ˜ธ์ถœ์˜ ์ผ๋ถ€๋กœ ์›์ž์ ์œผ๋กœ ์ ์šฉ๋œ ํ–‰์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ฐ’์ด ๋ฎ์–ด์“ฐ๊ธฐ๋˜๋ฉด ์ƒˆ๋กœ ์ž‘์„ฑ๋œ ๊ฐ’์ด ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์— ์ด์ „ ๊ฐ’์€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ˆ˜์‹ ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋Š” ์‹œ์ ์— ์ปค๋ฐ‹ ํƒ€์ž„์Šคํƒฌํ”„๋ผ๋Š” ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ 2๊ฐœ ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ A์˜ ํ…Œ์ด๋ธ” 1์— ์“ฐ๊ธฐ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ํด๋Ÿฌ์Šคํ„ฐ A๊ฐ€ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ปค๋ฐ‹ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ํ• ๋‹น๋˜๊ณ  ์ด ์“ฐ๊ธฐ์— ๋Œ€ํ•œ ํด๋Ÿฌ์Šคํ„ฐ B์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์— ๋™์ผํ•œ ์ปค๋ฐ‹ ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ํ•ญ๋ชฉ - ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ํฌํ•จํ•œ ํ–‰์— ์ ์šฉ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.
    • ์“ฐ๊ธฐ
      • Column family
      • column qualifier
      • ํƒ€์ž„์Šคํƒฌํ”„
      • ๊ฐ€์น˜
    • ์…€ ์‚ญ์ œ
      • Column family
      • column qualifier
      • ํƒ€์ž„์Šคํƒฌํ”„ ๋ฒ”์œ„
    • column family ์‚ญ์ œ
      • Column family
      • ํ–‰ ์‚ญ์ œ - ํ–‰ ์‚ญ์ œ๋Š” ํ–‰์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฐ column family์˜ column family ์‚ญ์ œ ๋ชฉ๋ก์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ํ–‰ ํ‚ค - ๋ณ€๊ฒฝ๋œ ํ–‰์˜ ์‹๋ณ„์ž
  • ๋ณ€๊ฒฝ ์œ ํ˜• - ์‚ฌ์šฉ์ž ์‹œ์ž‘ ๋˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
  • ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ˆ˜์‹ ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ID์ž…๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹ ํƒ€์ž„์Šคํƒฌํ”„ - ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ํ…Œ์ด๋ธ”์— ์ปค๋ฐ‹๋œ ์„œ๋ฒ„ ์ธก ์‹œ๊ฐ„
  • Tie breaker - ์ŠคํŠธ๋ฆผ์„ ์ฝ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Bigtable์˜ ๊ธฐ๋ณธ ์ œ๊ณต ์ถฉ๋Œ ํ•ด๊ฒฐ ์ •์ฑ…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ’
  • ํ† ํฐ - ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ŠคํŠธ๋ฆผ์„ ์žฌ๊ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ
  • ๋‚ฎ์€ ์˜ˆ์ƒ ์›Œํ„ฐ๋งˆํฌ - ๋ ˆ์ฝ”๋“œ ํŒŒํ‹ฐ์…˜์ด ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ณต์ œ๋ฅผ ๋”ฐ๋ผ์žก์€ ํ›„ ๊ฒฝ๊ณผ๋œ ์˜ˆ์ƒ ์‹œ๊ฐ„. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒํ‹ฐ์…˜ ๋ฐ ์›Œํ„ฐ๋งˆํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์˜ ํ•„๋“œ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ DataChange์˜ API ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๋ณ€๊ฒฝ ๋‚ด์—ญ ์ €์žฅ์†Œ

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

๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€๋Š” ์ด ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ๋ฅ (์ตœ๋Œ€ ๋น„์œจ)์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ๋น„ํ•˜๋Š” ์ฆ๊ฐ€๋œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์ถ”๊ฐ€ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜๋Š” ์žˆ์Œ). ํ•˜์ง€๋งŒ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œ๋น„ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ๋ถ€๊ณผ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋น„์šฉ ๊ณ ๋ ค์‚ฌํ•ญ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋ณ€๊ฒฝ ๋‚ด์—ญ ์ฝ๊ธฐ

๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ฝ์œผ๋ ค๋ฉด(์ŠคํŠธ๋ฆฌ๋ฐ) ๋‹จ์ผ ํด๋Ÿฌ์Šคํ„ฐ ๋ผ์šฐํŒ…์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ Dataflow๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ผ ํ–‰ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… ์ •์ฑ…์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ผ์šฐํŒ… ์˜ต์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹จ์ผ ํ–‰ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹จ์ผ ํ–‰ ํŠธ๋žœ์žญ์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณ€๊ฒฝ ๋‚ด์—ญ ๋ฉ”์„œ๋“œ๋Š” Cloud Bigtable API(Data API)์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  API๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • Dataflow ํ…œํ”Œ๋ฆฟ
  • Bigtable Beam ์ปค๋„ฅํ„ฐ
  • Java ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ชจ๋“  ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ„ํ•  ๋ฐ ๋ณ‘ํ•ฉ์œผ๋กœ ์ธํ•œ ํŒŒํ‹ฐ์…˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ReadChangeStream๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Dataflow ํ…œํ”Œ๋ฆฟ

Google์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์Œ Dataflow ํ…œํ”Œ๋ฆฟ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bigtable Beam ์ปค๋„ฅํ„ฐ

Bigtable Beam ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ๋นŒ๋“œํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด Bigtable ํŠœํ† ๋ฆฌ์–ผ ๋˜๋Š” ๋น ๋ฅธ ์‹œ์ž‘์˜ ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ ์ฝ”๋“œ์˜ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Java ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํŒŒํ‹ฐ์…˜

Bigtable์€ ๋†’์€ ์“ฐ๊ธฐ ๋˜๋Š” ๋ณ€๊ฒฝ ๋น„์œจ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋†’์€ ์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋™์‹œ์— ์ฝ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๊ฐ ๋ณ€๊ฒฝ ๋‚ด์—ญ ํŒŒํ‹ฐ์…˜์€ ํƒœ๋ธ”๋ฆฟ๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ํƒœ๋ธ”๋ฆฟ์€ ํ…Œ์ด๋ธ” ์š”์ฒญ ์›Œํฌ๋กœ๋“œ์˜ ๊ท ํ˜•์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์‹œ ๋ถ„์‚ฐ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ํ•˜์œ„ ์„น์…˜์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

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

์›Œํ„ฐ๋งˆํฌ

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

๊ฐ ChangeStreamMutation(๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ)์—๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ์™€ ์—ฐ๊ฒฐ๋œ ํŒŒํ‹ฐ์…˜์˜ ์›Œํ„ฐ๋งˆํฌ์ธ estimatedLowWatermark ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด estimatedLowWatermark๋Š” ์ถ”์ •์น˜์ด๋ฉฐ ์ŠคํŠธ๋ฆผ์— ์•„์ง ๋„์ฐฉํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ณต์ œ๋œ ํ…Œ์ด๋ธ”์˜ ์›Œํ„ฐ๋งˆํฌ

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

๋‹ค์Œ์„ ๋น„๋กฏํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์š”์ธ์œผ๋กœ ์ธํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜์ค€ ์›Œํ„ฐ๋งˆํฌ๊ฐ€ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜์—์„œ ๋ณต์ œ๊ฐ€ ์ง€์—ฐ๋˜๋„๋ก ํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์˜ค๋ฒ„๋กœ๋“œ
  • ๋„คํŠธ์›Œํฌ ์ง€์—ฐ
  • ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

Bigtable Beam ์ปค๋„ฅํ„ฐ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์ถœ๋ ฅ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ์—†์ด ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ชจ๋‹ˆํ„ฐ๋ง

๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์‚ฌ์šฉ ์„ค์ •๋œ ํ…Œ์ด๋ธ”์ด ํฌํ•จ๋œ ์ธ์Šคํ„ด์Šค์˜ CPU ๋ฐ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ๋Ÿ‰์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‘ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ๋‚ด์—ญ๋ณ„ ์ธก์ •ํ•ญ๋ชฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Bigtable ์‹œ์Šคํ…œ ํ†ต๊ณ„ ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” Cloud Monitoring ๋„๊ตฌ ๋ชจ์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ธก์ •ํ•ญ๋ชฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ธก์ •ํ•ญ๋ชฉ์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋น„์šฉ ๊ณ ๋ ค์‚ฌํ•ญ

ํ…Œ์ด๋ธ”์— ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ๋…ธ๋“œ ๋ฐ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์ด ๋” ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ

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

๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์ด๋”๋ผ๋„ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์•ฝ 10% ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Dataflow ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ๋Š” ๋“ฑ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ณ€๊ฒฝ ํ™œ๋™ ์ˆ˜์ค€๊ณผ ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ CPU ์‚ฌ์šฉ๋ฅ ์ด ์•ฝ 20~30%๊นŒ์ง€ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€

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

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

๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ์ „์†ก

๋ฆฌ์ „ ๊ฐ„ ๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ์„ ์ฝ์—ˆ์œผ๋ฉด ์ด ํŠธ๋ž˜ํ”ฝ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๊ฒฉ ์ „์ฒด ๋ชฉ๋ก์€ Bigtable ๊ฐ€๊ฒฉ ์ฑ…์ •์—์„œ ๋„คํŠธ์›Œํฌ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ฒ˜๋ฆฌ ๋น„์šฉ

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ Bigtable ์ด์™ธ์˜ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋น„์šฉ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Dataflow๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐ”์ดํŠธ์™€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์›Œ์ปค ๋จธ์‹ ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Dataflow ๊ฐ€๊ฒฉ ์ฑ…์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

ํ–‰ ๋ฒ”์œ„ ์‚ญ์ œ

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์‚ฌ์šฉ ์„ค์ •๋œ ํ…Œ์ด๋ธ”์—์„œ ํ–‰ ๋ฒ”์œ„๋ฅผ ์‚ญ์ œํ•˜์ง€ ๋งˆ์„ธ์š”. ํ–‰ ๋ฒ”์œ„๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” Bigtable์ด ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘์—… ์ค‘ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋‹ˆ ์œ ์˜ํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„