VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

Alexander Valyalkin์ด ์ž‘์„ฑํ•œ 2019๋…„ ํ›„๋ฐ˜ ๋ณด๊ณ ์„œ "VictoriaMetrics์˜ Go ์ตœ์ ํ™”" ๋‚ด์šฉ์„ ์ฝ์–ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋‹ค์Œ์€ ์ด ๋ณด๊ณ ์„œ์˜ ๋™์˜์ƒ ๋งํฌ์ž…๋‹ˆ๋‹ค. https://youtu.be/MZ5P21j_HLE

์Šฌ๋ผ์ด๋“œ

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ž์‹ ์— ๋Œ€ํ•ด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ์ €๋Š” ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ์–„ํ‚จ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋‚ด GitHub ๊ณ„์ •. ์ €๋Š” Go์™€ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์—ด์ •์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์œ ์šฉํ•˜์ง€๋งŒ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŽ์ด ์ผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. fast, ๋˜๋Š” quick ์ ‘๋‘์‚ฌ.

์ €๋Š” ํ˜„์žฌ VictoriaMetrics์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ญ๊ณ , ๋‚ด๊ฐ€ ๊ฑฐ๊ธฐ์„œ ๋ญ˜ ํ•˜๊ณ  ์žˆ์ง€? ์ด๋ฒˆ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋ณด๊ณ ์„œ์˜ ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋จผ์ € VictoriaMetrics๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿผ ์‹œ๊ณ„์—ด์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ VictoriaMetrics์˜ ์ตœ์ ํ™”๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ์ตœ์ ํ™”์ด์ž Go์˜ ๋น„ํŠธ์„ธํŠธ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ตœ์ ํ™”์ž…๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

VictoriaMetrics๋Š” ๋‹ค๋ฅธ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค ๋” ๋‚˜์€ ๋ฐ์ดํ„ฐ ์••์ถ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

VictoriaMetrics๋Š” ๋˜ํ•œ ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, VictoriaMetrics ํด๋Ÿฌ์Šคํ„ฐ์— ์ถ”๊ฐ€ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„ฑ๋Šฅ์€ ๊ฑฐ์˜ ์„ ํ˜•์ ์œผ๋กœ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์‹œ๊ณ„์—ด์ด ๋ฌด์—‡์ธ์ง€ ์•„๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์ž…๋‹ˆ๊นŒ? ๊ทธ๋Š” ๋˜ํ•œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ณ„์—ด์€ ์ผ๋ จ์˜ ์Œ์ž…๋‹ˆ๋‹ค. (timestamp, ะทะฝะฐั‡ะตะฝะธะต), ์—ฌ๊ธฐ์„œ ์ด๋Ÿฌํ•œ ์Œ์€ ์‹œ๊ฐ„๋ณ„๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž(float64)์ž…๋‹ˆ๋‹ค.

๊ฐ ์‹œ๊ณ„์—ด์€ ํ‚ค๋กœ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋ฉ๋‹ˆ๋‹ค. ์ด ์—ด์‡ ๋Š” ๋ฌด์—‡์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‚˜์š”? ๋น„์–ด ์žˆ์ง€ ์•Š์€ ํ‚ค-๊ฐ’ ์Œ ์„ธํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์‹œ๊ณ„์—ด์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ๋ฆฌ์ฆˆ์˜ ํ•ต์‹ฌ์€ ์Œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. __name__="cpu_usage" ์ธก์ •ํ•ญ๋ชฉ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. instance="my-server" - ์ด ์ง€ํ‘œ๊ฐ€ ์ˆ˜์ง‘๋˜๋Š” ์ปดํ“จํ„ฐ์ž…๋‹ˆ๋‹ค. datacenter="us-east" - ์ด ์ปดํ“จํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์„ธ ๊ฐœ์˜ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์‹œ๊ณ„์—ด ์ด๋ฆ„์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ‚ค๋Š” ์Œ ๋ชฉ๋ก์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. (timestamp, value). t1, t3, t3, ..., tN - ์ด๊ฒƒ์€ ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค. 10, 20, 12, ..., 15 - ํ•ด๋‹น ๊ฐ’. ์ด๋Š” ํŠน์ • ์‹œ๋ฆฌ์ฆˆ์— ๋Œ€ํ•œ ํŠน์ • ์‹œ๊ฐ„์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์‹œ๊ณ„์—ด์€ ์–ด๋””์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‚˜์š”? ๋ˆ„๊ตฌ๋“ ์ง€ ์–ด๋–ค ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • DevOps์—์„œ๋Š” CPU, RAM, ๋„คํŠธ์›Œํฌ, rps, ์˜ค๋ฅ˜ ์ˆ˜ ๋“ฑ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • IoT - ์˜จ๋„, ์••๋ ฅ, ์ง€๋ฆฌ ์ขŒํ‘œ ๋“ฑ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ๊ธˆ์œต โ€“ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ฃผ์‹๊ณผ ํ†ตํ™”์˜ ๊ฐ€๊ฒฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์‹œ๊ณ„์—ด์€ ๊ณต์žฅ์˜ ์ƒ์‚ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VictoriaMetrics๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋ด‡์šฉ ํ’๋ ฅ ํ„ฐ๋นˆ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ๊ณ„์—ด์€ ๋‹ค์–‘ํ•œ ์žฅ์น˜์˜ ์„ผ์„œ์—์„œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ์—๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—”์ง„์˜ ๊ฒฝ์šฐ; ํƒ€์ด์–ด ์••๋ ฅ ์ธก์ •์šฉ; ์†๋„, ๊ฑฐ๋ฆฌ ์ธก์ •์šฉ; ํœ˜๋ฐœ์œ  ์†Œ๋น„๋Ÿ‰ ์ธก์ • ๋“ฑ
  • ์‹œ๊ณ„์—ด์€ ํ•ญ๊ณต๊ธฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๊ณต๊ธฐ์—๋Š” ํ•ญ๊ณต๊ธฐ ์ƒํƒœ์˜ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์‹œ๊ณ„์—ด์„ ์ˆ˜์ง‘ํ•˜๋Š” ๋ธ”๋ž™๋ฐ•์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ณ„์—ด์€ ํ•ญ๊ณต์šฐ์ฃผ ์‚ฐ์—…์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํ—ฌ์Šค์ผ€์–ด๋Š” ํ˜ˆ์••, ๋งฅ๋ฐ• ๋“ฑ์ด๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์‹œ๊ณ„์—ด์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์‹œ๊ณ„์—ด์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์€ ์–‘์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ณ„์—ด์— ๋Œ€ํ•œ ์ „๋ฌธ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์ง€๋Š” ํฌ์ธํŠธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. (timestamp, value) ์ฃผ์–ด์ง„ ํ‚ค๋กœ. ํ‚ค, ๋‹จ์ผ ํ‚ค-๊ฐ’ ์Œ, ์—ฌ๋Ÿฌ ํ‚ค-๊ฐ’ ์Œ ๋˜๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ†ตํ•ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฏธ๊ตญ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ๋ชจ๋“  ์„œ๋น„์Šค์˜ CPU ๋กœ๋“œ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ์ด ์˜์‚ฌ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด๊ฒƒ์€ VictoriaMetrics๋ฅผ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ˜„๋Œ€ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•œ ์ €์žฅ์†Œ์ด์ž ์‹œ๊ณ„์—ด ๊ฐ’์„ ์œ„ํ•œ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ €์žฅ์†Œ๋Š” ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„์ฐฉํ•˜๋ฉด ๋จผ์ € ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค์— ์•ก์„ธ์Šคํ•˜์—ฌ ์ฃผ์–ด์ง„ ์„ธํŠธ์— ๋Œ€ํ•œ ์‹œ๊ณ„์—ด ์‹๋ณ„์ž๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. label=value ํŠน์ • ์ธก์ •ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ด ์‹๋ณ„์ž๋ฅผ ์ฐพ์•„ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

TSDB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ผ๋Š” ์š”์ฒญ์ด ์˜ค๋ฉด ๋จผ์ € ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์–ป์ž timeseries_ids ์ด ์„ธํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ๋ ˆ์ฝ”๋“œ label=value. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ‰์ธํ™”๋˜์–ด ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. timeseries_ids.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์„ ํƒ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

์ด๋ฒˆ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์ž…๋‹ˆ๋‹ค timeseries_ids ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋กœ. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„๊ณผ ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ๋‚˜์ค‘์— ์‹œ์ฒญํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค VictoriaMetrics ์†Œ์Šค, ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ๋‹ค๋ฅธ ๋ณด๊ณ ์„œ๋ฅผ ์ค€๋น„ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์„ธ์š” :)

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

์‹ค์ œ๋กœ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ํ‚ค๋ฅผ ๊ฐ’์— ๋งคํ•‘ํ•˜๋Š” ์‚ฌ์ „์ž…๋‹ˆ๋‹ค. ์—ด์‡ ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ์ปคํ”Œ label=value์–ด๋””์—์„œ label ะธ value - ์ด๊ฒƒ์€ ์„ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์€ ์„ธํŠธ์ž…๋‹ˆ๋‹ค timeseries_ids, ์ด๋Š” ์ฃผ์–ด์ง„ ์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. label=value.

์—ญ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. timeseries_ids, ์ด๋Š” label=value.

๋˜ํ•œ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. timeseries_ids ์—ฌ๋Ÿฌ ์Œ์— ๋Œ€ํ•œ ์‹œ๊ณ„์—ด label=value๋˜๋Š” ์ปคํ”Œ์šฉ label=regexp. ์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋‚˜์š”? ์ง‘ํ•ฉ์˜ ๊ต์ง‘ํ•ฉ์„ ์ฐพ์•„ timeseries_ids ๊ฐ ์Œ๋งˆ๋‹ค label=value.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค์˜ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ˆœ์ง„ํ•œ ๊ตฌํ˜„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋…€๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ getMetricIDs ๋ฌธ์ž์—ด ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ฐ ์ค„์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. label=value. ์ด ํ•จ์ˆ˜๋Š” ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. metricIDs.

์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”? ์—ฌ๊ธฐ์—๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ผ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. invertedIndex. ์ด๊ฒƒ์€ ์ผ๋ฐ˜ ์‚ฌ์ „(map), ์ด๋Š” ๋ฌธ์ž์—ด์„ ์Šฌ๋ผ์ด์Šค int์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค. ์ค„์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. label=value.

ํ•จ์ˆ˜ ๊ตฌํ˜„: ๊ฐ€์ ธ์˜ค๊ธฐ metricIDs ์ฒ˜์Œ์œผ๋กœ label=value, ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. label=value, ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์–ป์Šต๋‹ˆ๋‹ค metricIDs ๊ทธ๋“ค์„ ์œ„ํ•ด. ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์„ธ์š”. intersectInts, ์ด์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ•จ์ˆ˜๋Š” ์ด๋“ค ๋ชฉ๋ก์˜ ๊ต์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

๋‘ ๋ฒˆ์งธ ๋‹จ์ ์€ ๋ฉ”๋ชจ๋ฆฌ์™€๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋Š” RAM์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. RAM ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋‹น์—ฐํžˆ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๋ฒจDB๋˜๋Š” RocksDB.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ์„ธ ๊ฐ€์ง€ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์€ ๋…น์Œ์ž…๋‹ˆ๋‹ค ะบะปัŽั‡-ะทะฝะฐั‡ะตะฝะธะต ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—. ๊ทธ๋…€๋Š” ์ด ์ผ์„ ์•„์ฃผ ๋นจ๋ฆฌ ํ•ด๋ƒ…๋‹ˆ๋‹ค. ะบะปัŽั‡-ะทะฝะฐั‡ะตะฝะธะต ์ž„์˜์˜ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์ž‘์—…์€ ์ฃผ์–ด์ง„ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์„ธ ๋ฒˆ์งธ ์ž‘์—…์€ ์ฃผ์–ด์ง„ ์ ‘๋‘์‚ฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

LevelDB ๋ฐ RocksDB - ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” Google๊ณผ Facebook์—์„œ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” LevelDB๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ Facebook ์‚ฌ๋žŒ๋“ค์ด LevelDB๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐœ์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  RocksDB๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ RocksDB ๋ฐ MySQL๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฑฐ์˜ ๋ชจ๋“  ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ Facebook ๋‚ด๋ถ€์˜ RocksDB์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ์—๊ฒŒ ์ด๋ฆ„์„ ์ง€์–ด์ฃผ์—ˆ๋‹ค ๋งˆ์ด๋ก์Šค.

๋ฐ˜์ „ ์ธ๋ฑ์Šค๋Š” LevelDB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ์—ด์‡ ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค label=value. ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์€ ์Œ์ด ์กด์žฌํ•˜๋Š” ์‹œ๊ณ„์—ด์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. label=value.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

Go์—์„œ ์–ด๋–ป๊ฒŒ ๋ณด์ผ์ง€์— ๋Œ€ํ•œ ์ƒ˜ํ”Œ ๊ตฌํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ๋ฒจDB ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์€ ๋‹จ์ˆœ ๊ตฌํ˜„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ํ•œ ์ค„์”ฉ ์ˆœ์ง„ํ•œ ๊ตฌํ˜„์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์š”์ ์€ map ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ชจ๋‘ ์–ป์Šต๋‹ˆ๋‹ค. label=value. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์Œ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. label=value ๊ทธ์— ์ƒ์‘ํ•˜๋Š” metricID ์„ธํŠธ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ต์ฐจ์ ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ด ์†”๋ฃจ์…˜์—๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. VictoriaMetrics๋Š” ์ฒ˜์Œ์— LevelDB๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฐ˜์ „ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ํฌ๊ธฐํ•ด์•ผ ํ–ˆ์–ด์š”.

์™œ? LevelDB๋Š” ์ˆœ์ง„ํ•œ ๊ตฌํ˜„๋ณด๋‹ค ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ˆœ์ง„ํ•œ ๊ตฌํ˜„์—์„œ๋Š” ์ฃผ์–ด์ง„ ํ‚ค๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ „์ฒด ์Šฌ๋ผ์ด์Šค๋ฅผ ์ฆ‰์‹œ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. metricIDs. ์ด๋Š” ๋งค์šฐ ๋น ๋ฅธ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ „์ฒด ์Šฌ๋ผ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

LevelDB์—์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค GetValues ๋‹ค์Œ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์ค„์„ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. label=value. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์ค„์˜ ๊ฐ’์„ ์–ป์œผ์‹ญ์‹œ์˜ค. timeseries_ids. ๊ทธ๋Ÿฐ ๊ฒƒ ์ค‘ timeseries_ids ์ด๊ฒƒ๋“ค ์ค‘ ํ•œ ์กฐ๊ฐ์„ ๋ชจ์•„๋ผ timeseries_ids. ๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ๋‹จ์ˆœํžˆ ํ‚ค๋กœ ์ผ๋ฐ˜ ๋งต์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋‹จ์ ์€ LevelDB๊ฐ€ C๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Go์—์„œ C ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ๋น ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ˆ˜๋ฐฑ ๋‚˜๋…ธ์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. 1~5๋‚˜๋…ธ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” go๋กœ ์ž‘์„ฑ๋œ ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๋น„๊ตํ•˜๋ฉด ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์ˆ˜์‹ญ ๋ฐฐ๋‚˜ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ๊ทธ๋ฆฌ ๋น ๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. VictoriaMetrics์˜ ๊ฒฝ์šฐ ์ด๋Š” ์น˜๋ช…์ ์ธ ๊ฒฐํ•จ์ด์—ˆ์Šต๋‹ˆ๋‹ค :)

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๊ทธ๋ž˜์„œ ์ €๋Š” ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง์ ‘ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Š” ๊ทธ๋…€์—๊ฒŒ ์ „ํ™”๋ฅผ ํ–ˆ์–ด์š” ๋ณ‘ํ•ฉ ์„ธํŠธ.

Mergeset์€ MergeTree ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ClickHouse์—์„œ ์ฐจ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋จธ์ง€์…‹์€ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์ตœ์ ํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. timeseries_ids ์ฃผ์–ด์ง„ ํ‚ค์— ๋”ฐ๋ผ. Mergeset์€ ์ „์ ์œผ๋กœ Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋Š” ๋ณผ ์ˆ˜์žˆ์–ด GitHub์˜ VictoriaMetrics ์†Œ์Šค. ๋ณ‘ํ•ฉ ์ง‘ํ•ฉ์˜ ๊ตฌํ˜„์€ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. /lib/๋ณ‘ํ•ฉ ์ง‘ํ•ฉ. ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mergeset API๋Š” LevelDB ๋ฐ RocksDB์™€ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฑฐ๊ธฐ์— ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ์ฃผ์–ด์ง„ ์ ‘๋‘์–ด๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋‚˜์ค‘์— mergeset์˜ ๋‹จ์ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์—ญ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ VictoriaMetrics์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์™œ ๊ทธ๋Ÿฐ ์ผ๋“ค์ด ์ผ์–ด๋‚ฌ๋Š”๊ฐ€?

์ฒซ ๋ฒˆ์งธ ์ด์œ ๋Š” ๋†’์€ ์ดํƒˆ๋ฅ ์ž…๋‹ˆ๋‹ค. ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์‹œ๊ณ„์—ด์ด ์ž์ฃผ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹œ๊ณ„์—ด์ด ๋๋‚˜๊ณ  ์ƒˆ๋กœ์šด ์‹œ๊ณ„์—ด์ด ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ๋งŽ์€ ์ƒˆ๋กœ์šด ์‹œ๊ณ„์—ด์ด ์‹œ์ž‘๋˜๋Š” ๋•Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ผ์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

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

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ์„ธ์„œ ์ฝ”์–ด๋Š” ์œ ํœด ์ƒํƒœ์ธ ๊ฒฝ์šฐ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„, ์ปค๋„ ๊ณต๊ฐ„ ๋ฐ ๊ธฐํƒ€ ์ƒํƒœ์—์„œ๋„ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฐ ์ƒํƒœ๋Š” ๋ณ„๋„์˜ ์‹œ๊ณ„์—ด๋กœ ์ธก์ •๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํ–‰ ์ˆ˜๊ฐ€ 7~8๋ฐฐ ์ถ”๊ฐ€๋กœ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ์ธก์ •ํ•ญ๋ชฉ์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•ด 40 x 8 = 320๊ฐœ์˜ ์ธก์ •ํ•ญ๋ชฉ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. 100์„ ๊ณฑํ•˜๋ฉด 32์ด ์•„๋‹Œ 000์ด ๋ฉ๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋†’์€ ์ดํƒˆ๋ฅ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ƒ์‚ฐ ๊ณผ์ •์—์„œ ์ดํƒˆ๋ฅ ์ด ๋†’์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ผ๋ฒจ๊ณผ ํƒœ๊ทธ์˜ ์ผ๋ถ€ ์˜๋ฏธ๋Š” ๋Š์ž„์—†์ด ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐœ๋…์ด ์žˆ๋Š” Kubernetes๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. deployment, ์ฆ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ด์œ ๋กœ Kubernetes ๊ฐœ๋ฐœ์ž๋Š” ๋ฐฐํฌ ID๋ฅผ ๋ ˆ์ด๋ธ”์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฌด์—‡์œผ๋กœ ์ด์–ด์กŒ๋‚˜์š”? ๋˜ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐํฌ๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ์ด์ „ ์‹œ๊ณ„์—ด์ด ๋ชจ๋‘ ์ค‘๋‹จ๋˜๊ณ  ๋Œ€์‹  ์ƒˆ ์‹œ๊ณ„์—ด์ด ์ƒˆ ๋ ˆ์ด๋ธ” ๊ฐ’์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. deployment_id. ๊ทธ๋Ÿฌํ•œ ํ–‰์€ ์ˆ˜์‹ญ๋งŒ, ์‹ฌ์ง€์–ด ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์—์„œ ์ค‘์š”ํ•œ ์ ์€ ์‹œ๊ณ„์—ด์˜ ์ „์ฒด ๊ฐœ์ˆ˜๋Š” ๋Š˜์–ด๋‚˜์ง€๋งŒ ํ˜„์žฌ ํ™œ์„ฑํ™”๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์‹œ๊ณ„์—ด์˜ ๊ฐœ์ˆ˜๋Š” ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋ฅผ ๋†’์€ ์ดํƒˆ๋ฅ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค์—์„œ ์ƒ˜ํ”Œ๋งํ•  ๋•Œ ์ฃผ์–ด์ง„ ๊ฐ„๊ฒฉ ๋‚ด์— ์†ํ•˜๋Š” ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค ์ง‘ํ•ฉ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๊ฑฐ๊ธฐ์—์„œ ์‹œ๊ณ„์—ด์˜ ID๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•ด๋‹น ๋‚ ์งœ์— ๋ฐœ์ƒํ•œ ์‹œ๊ณ„์—ด ID์˜ ๋ณ„๋„ ๋ชฉ๋ก์„ ๋งค์ผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

๋‚˜๋Š” ๊ทธ๋…€์™€ ์‹ธ์›Œ์•ผ ํ–ˆ๋‹ค. ์–ด๋ ค์›€์€ ์ด ๊ตฌํ˜„์—์„œ ์—ฌ์ „ํžˆ ํ›จ์”ฌ ๋” ํฐ ์ˆซ์ž๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. timeseries_ids ์—ญ ์ธ๋ฑ์Šค๊ฐ€ ์‹œ๊ฐ„ ๋ถ„ํ• ๋œ ๊ฒฝ์šฐ๋ณด๋‹ค ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ์‹๋ณ„์ž ๋Œ€์‹  ๊ฐ ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค ํ•ญ๋ชฉ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹œ๊ณ„์—ด ์‹๋ณ„์ž๋ฅผ ์ €์žฅํ•˜๋Š” ๋…์ฐฝ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๋Š” ์—ด์‡ ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค label=value, ์ด๋Š” ๋ชจ๋“  ์‹œ๊ณ„์—ด์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค timeseries_ids ํ•œ ํ•ญ๋ชฉ์—.

์—ฌ๊ธฐ์— ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” N๊ฐœ์˜ ํ•ญ๋ชฉ์ด ์žˆ์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ์ ‘๋‘์‚ฌ๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ๊ณผ ๋™์ผํ•œ ํ•ญ๋ชฉ์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ํ•ญ๋ชฉ์˜ ๊ฒฝ์šฐ ๊ฐ’์—๋Š” ๋ชจ๋“  ์‹œ๊ณ„์—ด ID๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฐ˜์ „ ์ธ๋ฑ์Šค์˜ ์Šค์บ” ์†๋„๋ฅผ ์ตœ๋Œ€ 10๋ฐฐ๊นŒ์ง€ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๋ฏ€๋กœ ์บ์‹œ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. label=value ์บ์‹œ์— ํ•œ ๋ฒˆ๋งŒ N ๋ฒˆ ํ•จ๊ป˜ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํƒœ๊ทธ์™€ ๋ผ๋ฒจ์— Kubernetes๊ฐ€ ์‚ฝ์ž…ํ•˜๊ธฐ๋ฅผ ์ข‹์•„ํ•˜๋Š” ๊ธด ์ค„์„ ์ €์žฅํ•˜๋ฉด ์ด ์ค„์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด์ œ ์–‘์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๊ต์ฐจ ๊ธฐ๋Šฅ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. timeseries_ids. ์–ด๋–ค ๊ตฌํ˜„์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. timeseries_ids ์ฃผ์–ด์ง„ ์„ธํŠธ์— ๋Œ€ํ•ด label=value.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์€ ์ˆœ์ง„ํ•œ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์ค‘์ฒฉ ๋ฃจํ”„. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜ ์ž…๋ ฅ์„ ์–ป์Šต๋‹ˆ๋‹ค. intersectInts ๋‘ ์กฐ๊ฐ - a ะธ b. ์ถœ๋ ฅ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์กฐ๊ฐ์˜ ๊ต์ฐจ์ ์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ˆœ์ง„ํ•œ ๊ตฌํ˜„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์Šฌ๋ผ์ด์Šค์˜ ๋ชจ๋“  ๊ฐ’์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค a, ์ด ๋ฃจํ”„ ๋‚ด์—์„œ ์šฐ๋ฆฌ๋Š” ์Šฌ๋ผ์ด์Šค์˜ ๋ชจ๋“  ๊ฐ’์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. b. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋ฉด ๊ต์ฐจ์ ์„ ์ฐพ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ์ €์žฅํ•˜์„ธ์š”. result.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋‹จ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? XNUMX์ฐจ ๋ณต์žก์„ฑ์ด ์ฃผ์š” ๋‹จ์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฐจ์›์ด ์Šฌ๋ผ์ด์Šค์ธ ๊ฒฝ์šฐ a ะธ b ํ•œ ๋ฒˆ์— ๋ฐฑ๋งŒ ๊ฐœ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ด ํ•จ์ˆ˜๋Š” ๊ฒฐ์ฝ” ๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. XNUMX์กฐ ๋ฒˆ์˜ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„๋Œ€ ์ปดํ“จํ„ฐ์˜ ๊ฒฝ์šฐ์—๋„ ๋งŽ์€ ์–‘์ž…๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

๋‹จ์ ์€ ์ด ํ•จ์ˆ˜๊ฐ€ ์ด ๋งต์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

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

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

์ด ๊ตฌํ˜„์˜ ๋‹จ์ ์€ ๊ทธ๋ ‡๊ฒŒ ๋ช…ํ™•ํ•˜์ง€๋„ ์‚ฌ์†Œํ•˜์ง€๋„ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด ๊ตฌ์กฐ์˜ ๊ตฌํ˜„์„ ๊ณ ๋ คํ•ด ๋ด…์‹œ๋‹ค. ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด VictoriaMetrics ์†Œ์Šค์˜ ํด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค. lib/uint64set. ํŠนํžˆ VictoriaMetrics ์‚ฌ๋ก€์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. timeseries_id ์€ 64๋น„ํŠธ ๊ฐ’์œผ๋กœ, ์ฒ˜์Œ 32๋น„ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ์ •ํ•˜๊ณ  ๋งˆ์ง€๋ง‰ 32๋น„ํŠธ๋งŒ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๋””์Šคํฌ์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

API๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณ„๋กœ ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. API๋Š” VictoriaMetrics ์‚ฌ์šฉ์˜ ํŠน์ • ์˜ˆ์— ๋งž๊ฒŒ ํŠน๋ณ„ํžˆ ๋งž์ถคํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๊ธฐ์—๋Š” ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. VictoriaMetrics์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค add, ์ƒˆ๋กœ์šด ๊ฐ€์น˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค has, ์ƒˆ ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ del, ๊ฐ’์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋„์šฐ๋ฏธ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค len, ์„ธํŠธ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ clone ํด๋ก ์„ ๋งŽ์ด ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋Šฅ appendto ์ด ์„ธํŠธ๋ฅผ ์Šฌ๋ผ์ด์Šค๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. timeseries_ids.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด๊ฒƒ์ด ์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๊ตฌํ˜„ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค. ์„ธํŠธ์—๋Š” ๋‘ ๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ItemsCount ์„ธํŠธ์˜ ์š”์†Œ ์ˆ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋„์šฐ๋ฏธ ํ•„๋“œ์ž…๋‹ˆ๋‹ค. ์ด ๋ณด์กฐ ํ•„๋“œ ์—†์ด๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ VictoriaMetrics๋Š” ์ข…์ข… ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋น„ํŠธ ์„ธํŠธ ๊ธธ์ด๋ฅผ ์ฟผ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ํ•„๋“œ๋Š” buckets. ์ด๊ฒƒ์€ ๊ตฌ์กฐ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. bucket32. ๊ฐ ๊ตฌ์กฐ๋ฌผ์€ ๋งค์žฅ hi ํ•„๋“œ. ์ƒ์œ„ 32๋น„ํŠธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ์กฐ๊ฐ - b16his ะธ buckets ์œผ๋กœ bucket16 ๊ตฌ์กฐ.

16๋น„ํŠธ ๊ตฌ์กฐ์˜ ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์˜ ์ƒ์œ„ 64๋น„ํŠธ๊ฐ€ ์—ฌ๊ธฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” ๊ฐ ๋ฐ”์ดํŠธ์˜ ํ•˜์œ„ 16๋น„ํŠธ์— ๋Œ€ํ•œ ๋น„ํŠธ ์„ธํŠธ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

Bucket64 ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑ uint64. ๊ธธ์ด๋Š” ์ด๋Ÿฌํ•œ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ bucket16 ์ตœ๋Œ€ ์ €์žฅ ๊ฐ€๋Šฅ 2^16=65536 ์กฐ๊ธˆ. ์ด๊ฒƒ์„ 8๋กœ ๋‚˜๋ˆ„๋ฉด 8KB๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ 8๋กœ ๋‚˜๋ˆ„๋ฉด 1000์ด ๋ฉ๋‹ˆ๋‹ค uint64 ์˜๋ฏธ. ๊ทธ๊ฑด Bucket16 โ€“ ์ด๊ฒƒ์ด 8ํ‚ฌ๋กœ๋ฐ”์ดํŠธ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ƒˆ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ด ๊ตฌ์กฐ์˜ ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. uint64 ์˜๋ฏธ. ์ƒ์œ„ 32๋น„ํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ํ•˜์œ„ 32๋น„ํŠธ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ์‚ดํŽด ๋ณด์ž buckets. ๊ฐ ๋ฒ„ํ‚ท์˜ ์ƒ์œ„ 32๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€๋˜๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. add ๊ตฌ์กฐ b32์—์„œ buckets. ๊ทธ๋ฆฌ๊ณ  ๊ฑฐ๊ธฐ์— ํ•˜์œ„ 32๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋Œ์•„์™”๋‹ค๋ฉด true, ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฑฐ๊ธฐ์— ๊ทธ๋Ÿฌํ•œ ๊ฐ’์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฝ์šฐ false, ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋Ÿฌํ•œ ์˜๋ฏธ๋Š” ์ด๋ฏธ ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ตฌ์กฐ์˜ ์š”์†Œ ์ˆ˜๋ฅผ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ bucket ํ•„์š”ํ•œ ๋†’์€ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. addAlloc, ์ด๋Š” ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ƒ์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. bucket, ๋ฒ„ํ‚ท ๊ตฌ์กฐ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด๊ฒƒ์ด ํ•จ์ˆ˜์˜ ๊ตฌํ˜„์ด๋‹ค b32.add. ์ด์ „ ๊ตฌํ˜„๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ตœ์ƒ์œ„ 16๋น„ํŠธ, ์ตœํ•˜์œ„ 16๋น„ํŠธ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒ์œ„ 16๋น„ํŠธ๋ฅผ ๋ชจ๋‘ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉด add ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. bucket16.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์—๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์ตœ์ ํ™”๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. uint64 ์Šฌ๋ผ์ด์Šค ๋น„ํŠธ์˜ id ๊ฐ’๊ณผ bitmask. ์ด๋Š” ํ•ด๋‹น ๋น„ํŠธ์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ •๋œ 64๋น„ํŠธ ๊ฐ’์— ๋Œ€ํ•œ ๋งˆ์Šคํฌ์ž…๋‹ˆ๋‹ค. ์ด ๋น„ํŠธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์„ค์ •ํ•œ ํ›„ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ์ง€๋„์— ๋น„ํ•ด ์‹œ๊ณ„์—ด์˜ ๊ต์ฐจ ID ์ž‘์—… ์†๋„๋ฅผ 10๋ฐฐ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

์ด ์ตœ์ ํ™” ์™ธ์—๋„ VictoriaMetrics์—๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ตœ์ ํ™”์˜ ๋Œ€๋ถ€๋ถ„์€ ์ด์œ  ๋•Œ๋ฌธ์— ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ ํ”„๋กœ๋•์…˜์—์„œ ์ฝ”๋“œ๋ฅผ ํ”„๋กœํŒŒ์ผ๋งํ•œ ํ›„์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ ์ตœ์ ํ™”๋ฅผ ์ง„ํ–‰ํ•˜์„ธ์š”. ์•Œ๋ ‰์‚ฐ๋” ๋ฐœ๋ฆฌ์•Œํ‚จ

๋น„ํŠธ์…‹์— ๊ด€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. C++ ๋ฒกํ„ฐ bool ๊ตฌํ˜„๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋ฉฐ ์ตœ์ ํ™”๋œ ๋น„ํŠธ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ๊ตฌํ˜„์„ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ๊ฑฐ๊ธฐ๋ถ€ํ„ฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๋น„ํŠธ ์„ธํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ VictoriaMetrics์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋Ÿฌํ•œ ID ์‹œ๊ณ„์—ด์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ์•ˆ๋‚ด๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ตฌ์กฐ๋Š” ์ƒ์œ„ 32๋น„ํŠธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ์ •ํ•˜๋‹ค๋Š” ๊ตฌ์กฐ์ด๋‹ค. ํ•˜์œ„ 32๋น„ํŠธ๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„ํŠธ๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ๋” ์ž์ฃผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ตฌํ˜„์€ ํŠนํžˆ ์ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ C++ ๊ตฌํ˜„์€ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— ๋งž๊ฒŒ ์ตœ์ ํ™”ํ•˜๋ฉด ํŠน์ • ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Alexey Milovid์˜ ๋ณด๊ณ ์„œ๋ฅผ ์‹œ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์•ฝ ํ•œ ๋‹ฌ ์ „ ๊ทธ๋Š” ํŠน์ • ์ „๋ฌธ ๋ถ„์•ผ์— ๋Œ€ํ•œ ClickHouse์˜ ์ตœ์ ํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ๋‹จ์ง€ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ C++ ๊ตฌํ˜„์ด๋‚˜ ๋‹ค๋ฅธ ๊ตฌํ˜„์ด ๋ณ‘์›์—์„œ ํ‰๊ท ์ ์œผ๋กœ ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ๋งž์ถคํ™”๋˜์–ด ์žˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ์œ„ 32๋น„ํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ผ์ •ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋Š” ์šฐ๋ฆฌ์™€ ๊ฐ™์€ ์ง€์‹๋ณ„ ๊ตฌํ˜„๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋‚˜์  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. InfluxDB์™€์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ์ธก๋ฉด์—์„œ InfluxDB๋Š” ํ…Œ์ŠคํŠธ์—์„œ ์นด๋””๋„๋ฆฌํ‹ฐ ์‹œ๊ณ„์—ด์ด ๋งŽ์„ ๋•Œ(์˜ˆ: ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ) ๋†’์€ ์นด๋””๋„๋ฆฌํ‹ฐ ์‹œ๊ณ„์—ด์— ๋Œ€ํ•ด 10๋ฐฐ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด VictoriaMetrics๋Š” ๋ฐฑ๋งŒ ๊ฐœ์˜ ํ™œ์„ฑ ํ–‰๋‹น 1GB๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋ฐ˜๋ฉด InfluxDB๋Š” 10GB๋ฅผ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ํฐ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์€ InfluxDB์—๋Š” Flux์™€ InfluxQL์ด๋ผ๋Š” ์ด์ƒํ•œ ์ฟผ๋ฆฌ ์–ธ์–ด๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ณ„์—ด ์ž‘์—…์— ๋น„ํ•ด ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PromQL, ์ด๋Š” VictoriaMetrics์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. PromQL์€ Prometheus์˜ ์ฟผ๋ฆฌ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

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

VictoriaMetrics์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ฐ ์‹œ๊ณ„์—ด์€ ํ‚ค-๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ํฌ์ธํŠธ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. (timestamp, value), ๊ทธ๋ฆฌ๊ณ  ์—ด์‡ ๋Š” ์„ธํŠธ์ž…๋‹ˆ๋‹ค label=value. ํ•„๋“œ์™€ ์ธก์ •๊ฐ’์ด ๊ตฌ๋ถ„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ํ–‰ ๊ฐ„์˜ ๊ณ„์‚ฐ์ด ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์€ InfluxDB์™€ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ๊ฒฐํ•ฉ, ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ, ๊ณฑํ•˜๊ธฐ, ๋‚˜๋ˆ„๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ•ด๋„ ์–ด๋ ต๊ณ , ์ฝ”๋“œ๋„ ๋งŽ์ด ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ช…ํ™•ํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ•œ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ, ์ด ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋งž์ง€ ์•Š์•„์„œ ๊ฑฐ๊ธฐ์— ํŒŒํ‹ฐ์…”๋‹์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๊นŒ?

๋จผ์ € ํ‘œ์ค€ Go ๋งต์—์„œ ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋ฅผ ์ˆœ์ง„ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๋Š” ๋””์Šคํฌ์— ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋””์Šคํฌ์— ์ €์žฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌํ˜„์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ˜์ „๋œ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

๋ฐ”๋กœ ๋‘ ๋ฒˆ์งธ ๋‹ต๋ณ€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์•„์ง ๊ทธ ์ง€์ ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๊ทธ๊ณณ์— ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์€ ๋ฌด์—‡์ด์—ˆ๋‚˜์š”?

๋‘ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋” ๋ณต์žกํ•œ ๊ตฌํ˜„์„ ๊ฐ€์ง„ ๋‘ ๋ฒˆ์งธ ๊ฒƒ์„ ์„ ํƒํ–ˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹œ๊ฐ„๋ณ„๋กœ ๋ถ„ํ• ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

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

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

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

๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ปค์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–จ๊นŒ์š”?

๋„ค.

์ •๋ ฌ๋œ ํ–‰์„ LevelDB ๋˜๋Š” mergeset์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ปค์„œ๋ฅผ ์›€์ง์—ฌ ๊ต์ฐจ์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ์ปค์„œ๋Š” ๊ฐ ์ค„์— ๋Œ€ํ•ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ 5๋‚˜๋…ธ์ดˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  100๊ฐœ์˜ ๋ผ์ธ์ด ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ 000์ดˆ๋ฅผ ์†Œ๋น„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

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

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

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

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

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

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

๋‘ ๋ฒˆ์งธ๋Š” ClickHouse์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ VictoriaMetrics๋„ ๋Œ€๋Ÿ‰์˜ ์›์‹œ ๋ฐ์ดํ„ฐ ์ž‘์—…์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์‹œ์Šคํ…œ์— ์ฝ”์–ด๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ 50์ดˆ ์ด๋‚ด์— 000์–ต ์ค„์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. VictoriaMetrics์˜ ์‹œ๊ณ„์—ด ํฌ์ธํŠธ ์Šค์บ” โ€“ ์ฝ”์–ด๋‹น ์ดˆ๋‹น 000 ํฌ์ธํŠธ. ๊ทธ๋ฆฌ๊ณ  ์ด ์„ฑ๋Šฅ์€ ๊ธฐ์กด ์ฝ”์–ด๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ”์–ด๊ฐ€ 20๊ฐœ๋ผ๋ฉด ์ดˆ๋‹น XNUMX์–ต ๊ฐœ์˜ ํฌ์ธํŠธ๋ฅผ ์Šค์บ”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  VictoriaMetrics์™€ ClickHouse์˜ ์ด๋Ÿฌํ•œ ์†์„ฑ์€ ๋‹ค์šด์ƒ˜ํ”Œ๋ง์˜ ํ•„์š”์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํŠน์ง•์€ VictoriaMetrics๊ฐ€ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์••์ถ•ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ‰๊ท  ์••์ถ•๋ฅ ์€ ํฌ์ธํŠธ๋‹น 0,4~0,8๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ ํฌ์ธํŠธ๋Š” ํƒ€์ž„์Šคํƒฌํ”„ + ๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ‰๊ท ์ ์œผ๋กœ XNUMX๋ฐ”์ดํŠธ ๋ฏธ๋งŒ์œผ๋กœ ์••์ถ•๋ฉ๋‹ˆ๋‹ค.

์„ธ๋ฅด๊ฒŒ์ด. ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ ๋…น์Œ ์‹œ๊ฐ„ ํ€€ํ…€์€ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ?

XNUMX๋ฐ€๋ฆฌ์ดˆ. ์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ ๋‹ค๋ฅธ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ ์‹œ๊ฐ„ ์กฐ๊ฐ์€ XNUMX์ดˆ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Graphite์˜ ๊ฒฝ์šฐ์—๋„ XNUMX์ดˆ์ž…๋‹ˆ๋‹ค. OpenTSDB์—์„œ๋„ XNUMX์ดˆ์ž…๋‹ˆ๋‹ค. InfluxDB๋Š” ๋‚˜๋…ธ์ดˆ ์ •๋ฐ€๋„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. VictoriaMetrics์—์„œ๋Š” XNUMX๋ฐ€๋ฆฌ์ดˆ์ž…๋‹ˆ๋‹ค. Prometheus์—์„œ๋Š” XNUMX๋ฐ€๋ฆฌ์ดˆ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. VictoriaMetrics๋Š” ์›๋ž˜ Prometheus์šฉ ์›๊ฒฉ ์Šคํ† ๋ฆฌ์ง€๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

VictoriaMetrics์˜ ๋ฐ€๋ฆฌ์ดˆ ์ •ํ™•๋„๋Š” DevOps ์‚ฌ๋ก€์—๋„ ์ ํ•ฉํ•˜๋ฉฐ ๋ณด๊ณ ์„œ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋ก€์— ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๊ณ ์ฃผํŒŒ ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. PromQL์˜ ํ˜ธํ™˜์„ฑ์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์™„์ „ํ•œ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ. VictoriaMetrics๋Š” PromQL์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ PromQL์— ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉQL. ์ด ํ™•์žฅ๋œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด YouTube์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ด„์— ์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ์—์„œ ์—ด๋ฆฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ชจ์ž„์—์„œ ์—ฐ์„คํ–ˆ์Šต๋‹ˆ๋‹ค.

์ „๋ณด ์ฑ„๋„ ๋น…ํ† ๋ฆฌ์•„๋ฉ”ํŠธ๋ฆญ์Šค.

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

Prometheus์˜ ์žฅ๊ธฐ ์Šคํ† ๋ฆฌ์ง€๋กœ VictoriaMetrics๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? (๋Œ“๊ธ€๋กœ ์ ์–ด์ฃผ์‹œ๋ฉด ์„ค๋ฌธ์กฐ์‚ฌ์— ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค)

  • 71,4%๋‚˜๋Š” Prometheus5๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

  • 28,6%VictoriaMetrics2์— ๋Œ€ํ•ด ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

7๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 12๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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