HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

Zabbix๊ฐ€ TimescaleDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ PostgreSQL์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‘ ๊ตฌ์„ฑ์˜ ๋น„๊ต ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

HighLoad++ ์‹œ๋ฒ ๋ฆฌ์•„ 2019. ํ†ฐ์Šคํฌ ํ™€. 24์›” 16์ผ 00:XNUMX. ๋…ผ๋ฌธ๊ณผ ์ œ์ถœ. ๋‹ค์Œ HighLoad++ ์ปจํผ๋Ÿฐ์Šค๋Š” 6๋…„ 7์›” 2020์ผ๊ณผ XNUMX์ผ์— ์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ์—์„œ ๊ฐœ์ตœ๋ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€์ •๋ณด ๋ฐ ํ‹ฐ์ผ“ ๋งํฌ.

Andrey Gushchin(์ดํ•˜ โ€“ AG): โ€“ ์ €๋Š” ํŠธ๋ ˆ์ด๋„ˆ์ธ ZABBIX ๊ธฐ์ˆ ์ง€์› ์—”์ง€๋‹ˆ์–ด(์ดํ•˜ "Zabbix")์ž…๋‹ˆ๋‹ค. ์ €๋Š” 6๋…„ ๋„˜๊ฒŒ ๊ธฐ์ˆ  ์ง€์› ๋ถ„์•ผ์—์„œ ์ผํ•ด ์™”์œผ๋ฉฐ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๊ฒฝํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ผ๋ฐ˜ PostgreSQL 10๊ณผ ๋น„๊ตํ•˜์—ฌ TimescaleDB๊ฐ€ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ฐ˜์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์†Œ๊ฐœ ๋ถ€๋ถ„๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ณ ์˜ ์ƒ์‚ฐ์„ฑ ๊ณผ์ œ: ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ •๋ฆฌ๊นŒ์ง€

์šฐ์„ , ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด ์ง๋ฉดํ•˜๋Š” ํŠน์ • ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ƒ์‚ฐ์„ฑ ๊ณผ์ œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ข‹์€ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์€ ์‹ ์†ํ•˜๊ณ  ์ ์‹œ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ํŠธ๋ฆฌ๊ฑฐ ํ‘œํ˜„์‹์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ผ๋ถ€ ๊ธฐ์ค€(์‹œ์Šคํ…œ๋งˆ๋‹ค ๋‹ค๋ฆ„)์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ž˜.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

์บ์‹ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด์ œ Zabbix์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Zabbix์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ์ด ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌ - ์šฐ๋ฆฌ๋Š” RAM์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—๋Š” ๊ทธ๋ž˜ํ”„ ๋ฐ ๊ธฐํƒ€ ํ•ญ๋ชฉ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์„ ํƒ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์บ์‹ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Zabbix ์„œ๋ฒ„ ์ž์ฒด ์ธก์˜ ์บ์‹ฑ: ConfigurationCache, ValueCache, HistoryCache, TrendsCache๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

Zabbix์—์„œ ์บ์‹ฑ. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

์—ฌ๊ธฐ์„œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์ƒ๋‹นํžˆ ํฝ๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ด ๊ณ„ํš์˜ ์ฃผ์š” ํ•ญ๋ชฉ์€ ๋‹ค์Œ ์ˆ˜์ง‘๊ฐ€์ž…๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ด๋Š” ์กฐ๋ฆฝ ํ”„๋กœ์„ธ์Šค ์ž์ฒด์ด๋ฉฐ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์กฐ๋ฆฝ์„ ๋‹ด๋‹นํ•˜๋Š” ๋‹ค์–‘ํ•œ "ํด๋Ÿฌ"์ž…๋‹ˆ๋‹ค. icmp, ipmi ๋ฐ ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ด๋ฅผ ๋ชจ๋‘ ์ „์ฒ˜๋ฆฌ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒ˜๋ฆฌ ๊ธฐ๋ก์บ์‹œ

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

๋”ฐ๋ผ์„œ ์ „์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด HistoryCache์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์ด ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฃผ์š” ํ”„๋กœ์„ธ์Šค๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

ํžˆ์Šคํ† ๋ฆฌ ์‹ฑํฌ๋กœ์˜ ์ž‘์—…

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

Zabbix์˜ ์ฃผ์š” ํ”„๋กœ์„ธ์Šค(๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์ด๋ฏ€๋กœ)๋Š” ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ์š”์†Œ, ์ฆ‰ ๊ฐ ๊ฐ’์˜ ์›์ž์  ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ์ฃผ์š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.

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

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค. ์บ์‹ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—์„œ๋Š” ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„๋‚˜ ์ผ๋ถ€ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๊ณ ์ž ํ•  ๋•Œ ๋‹ค์–‘ํ•œ ์บ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ณด๊ณ ์„œ์—์„œ๋Š” ์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

MySQL์˜ ๊ฒฝ์šฐ Innodb_buffer_pool๊ณผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์บ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ฃผ์š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ณต์œ _๋ฒ„ํผ;
  • ํšจ๊ณผ์ ์ธ_์บ์‹œ_ํฌ๊ธฐ;
  • ๊ณต์œ _ํ’€.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์ฟผ๋ฆฌ์— ์ž์ฃผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ RAM์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ์บ์‹œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ง์”€๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด์— ๋Œ€ํ•œ ์ž์ฒด ๊ธฐ์ˆ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ์ •๋ณด

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋˜ํ•œ ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ์‹œ๊ฐํ™” ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Grafana์ž…๋‹ˆ๋‹ค. Zabbix API์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋˜ํ•œ ๋ฐ์ดํ„ฐ ํš๋“์„ ์œ„ํ•œ ํŠน์ • ๊ฒฝ์Ÿ์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ๋ฐ ํ…Œ์ŠคํŠธ์˜ ์‹ ์†ํ•œ ์ „๋‹ฌ์„ ์ค€์ˆ˜ํ•˜๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ณ  ๋” ์ž˜ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๊ธฐ๋ก์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. Zabbix์—๋Š” ๊ฐ€์ •๋ถ€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

Zabbix์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์„ธ ๋ฒˆ์งธ ํ˜ธ์ถœ์€ Housekeeper๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ก์„ ์ง€์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Housekeeper๋Š” ๋ชจ๋“  ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ ์š”์†Œ๋Š” ์ €์žฅ ๊ธฐ๊ฐ„(์ผ), ์ถ”์„ธ ์ €์žฅ ๊ธฐ๊ฐ„ ๋ฐ ๋ณ€ํ™”์˜ ์—ญํ•™์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ฆ‰์„์—์„œ ๊ณ„์‚ฐํ•˜๋Š” TrendCache์— ๋Œ€ํ•ด์„œ๋Š” ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์ง‘๊ณ„ํ•˜๊ณ (๋Œ€๋ถ€๋ถ„ ์ง€๋‚œ ์‹œ๊ฐ„์˜ ์ˆซ์ž์ž…๋‹ˆ๋‹ค) ์–‘์€ ํ‰๊ท /์ตœ์†Œ์ด๋ฉฐ ํ•œ ์‹œ๊ฐ„์— ํ•œ ๋ฒˆ์”ฉ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋ณ€ํ™”์˜ ์—ญํ•™(โ€œ์ถ”์„ธโ€) ํ‘œ. "Housekeeper"๋Š” ์ผ๋ฐ˜ ์„ ํƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‚ญ์ œํ•˜์ง€๋งŒ ํ•ญ์ƒ ํšจ๊ณผ์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ•ฉ๋‹ˆ๊นŒ? ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค์˜ ์„ฑ๋Šฅ ๊ทธ๋ž˜ํ”„์—์„œ ๋‹ค์Œ ๊ทธ๋ฆผ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

์ผ๋ถ€ ํ•ญ๋ชฉ ID๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ 5๊ฐœ๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ธ๋ฑ์Šค๋กœ์š”. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์„ธํŠธ๋Š” ์ƒ๋‹นํžˆ ํฝ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์—ฌ์ „ํžˆ ์ด๋ฅผ ๋””์Šคํฌ์—์„œ ์ฝ์–ด ์บ์‹œ์— ์ €์žฅํ•˜๋Š”๋ฐ, ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ์–ด ๋งค์šฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ์— ๋”ฐ๋ผ ํŠน์ • ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ Housekeeper๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์นœ์ˆ™ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ์ผ๋ฐ˜ ์„ค์ •("Housekeeper" ์„ค์ •)์—์„œ๋Š” ๋‚ด๋ถ€ ๊ธฐ๋ก ๋ฐ ์ถ”์„ธ์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ๊ด€๋ฆฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Housekeeper๋Š” ๋” ์ด์ƒ ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ†ต์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋‹ค์Œ์—๋Š” ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ์ด ๊ธฐ๋Šฅ์„ ๋„๋ฉด ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ท ์ผํ•ด์ง‘๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋” ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌด์—‡์ด ๋„์›€์ด ๋ ๊นŒ์š”?

ํŒŒํ‹ฐ์…”๋‹(์„น์…”๋‹)

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

์„ค์ • ํฌ๊ธฐ์— ๋Œ€ํ•ด ๋ฐ”๋กœ ๋งํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ดˆ๋‹น ์ตœ๋Œ€ 5๊ฐœ์˜ ์ƒˆ๋กœ์šด ๊ฐ’(์†Œ์œ„ nvps) - ์ด๋Š” ์ž‘์€ "์„ค์ •"์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ํ‰๊ท  โ€“ ์ดˆ๋‹น 5~25๊ฐœ ๊ฐ’. ์œ„์˜ ๋ชจ๋“  ๋‚ด์šฉ์€ ๋งค์šฐ ์‹ ์ค‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์ด ํ•„์š”ํ•œ ๋Œ€๊ทœ๋ชจ ์„ค์น˜์ž…๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์„ค์น˜์—์„œ๋Š” 1์ผ์ด ์ตœ์ ์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ MySQL์—์„œ ํ•˜๋ฃจ์— 40GB์˜ ํŒŒํ‹ฐ์…˜์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋” ๋งŽ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค). ์ด๋Š” ๋งค์šฐ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค„์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋˜ํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‚ฝ์ž…(ํ•˜๋‚˜์˜ ํ•˜์œ„ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…) ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ถ”์ƒ์ ์œผ๋กœ ๋งํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…”๋‹์€ ์ข…์ข… ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

NoSQL์šฉ Elasticsearch

์ตœ๊ทผ 3.4์—์„œ๋Š” NoSQL ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Elasticsearch์— ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์œ ํ˜•์„ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋‚˜ ๊ธฐํ˜ธ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ํ…์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ Elasticsearch์— ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ๋”ฐ๋ผ์„œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋„ Elasticsearch์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

TimescaleDB. ํ•˜์ดํผํ…Œ์ด๋ธ”

4.4.2์—์„œ๋Š” TimescaleDB์™€ ๊ฐ™์€ ํ•œ ๊ฐ€์ง€์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ PostgreSQL์˜ ํ™•์žฅ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ PostgreSQL ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์ž๋™ ๋ถ„ํ•  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ์Šต:

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

TimescaleDB ๋ฐ PostgreSQL

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

TimescaleDB๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ„๋‹จ ํ•ด!

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

Zabbix์—์„œ๋Š” Extension์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Postgres์—์„œ Extention์„ ์‚ฌ์šฉํ•˜์‹  ๋ถ„๋“ค์€... Extention์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‚ฌ์šฉ ์ค‘์ธ Zabbix ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์šฉ์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„..

TimescaleDB. ๊ธฐ๋ก ํ…Œ์ด๋ธ” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

ํ•˜์ดํผํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์ธ ํ•˜์ดํผํ…Œ์ด๋ธ” ์ƒ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•„์š”ํ•œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค(ํ•˜์ดํผํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์•ผ ํ•จ).

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ƒ์„ฑํ•  ํ•„๋“œ์™€ Chunk_time_interval(์ฒญํฌ(์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํŒŒํ‹ฐ์…˜)์˜ ๊ฐ„๊ฒฉ์ž…๋‹ˆ๋‹ค. 86์€ 400์ผ์ž…๋‹ˆ๋‹ค.

Migrate_data ๋งค๊ฐœ๋ณ€์ˆ˜: true๋กœ ์‚ฝ์ž…ํ•˜๋ฉด ๋ชจ๋“  ํ˜„์žฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์ „ ์ƒ์„ฑ๋œ ์ฒญํฌ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” migration_data๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ…Œ๋ผ๋ฐ”์ดํŠธ๊ฐ€ ๋„˜๋Š” ์šฉ๋Ÿ‰์ด ์žˆ์—ˆ๋Š”๋ฐ ์ƒ์„ฑํ•˜๋Š” ๋ฐ XNUMX์‹œ๊ฐ„ ์ด์ƒ์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ŠคํŠธ ์ค‘์— ํ…์ŠคํŠธ(history_text) ๋ฐ ๋ฌธ์ž์—ด(history_str)์— ๋Œ€ํ•œ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ „์†กํ•˜์ง€ ์•Š๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ํฅ๋ฏธ๋กญ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  db_extention์—์„œ ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŠนํžˆ Zabbix๊ฐ€ db_extention์ด ์žˆ์Œ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก timescaledb๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ด๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  TimescaleDB์— ํ•„์š”ํ•œ "๊ธฐ๋Šฅ"์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ๋ฌธ๊ณผ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๊ตฌ์„ฑ

์ €๋Š” ๋‘ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์„œ๋ฒ„๋Š” 20๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ, 16GB์˜ RAM์„ ๊ฐ–์ถ˜ ๋งค์šฐ ์ž‘์€ ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค. Postgres 10.8์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์šด์˜ ์ฒด์ œ๋Š” Debian์ด๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์€ xfs์ž…๋‹ˆ๋‹ค. Zabbix ์ž์ฒด์—์„œ ์‚ฌ์šฉํ•  ์„ค์ •์„ ์ œ์™ธํ•˜๊ณ  ์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์„ค์ •์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์‹œ์Šคํ…œ์—๋Š” Zabbix ์„œ๋ฒ„, PostgreSQL ๋ฐ ๋กœ๋“œ ์—์ด์ „ํŠธ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

50๊ฐœ์˜ ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ(๋” ์ถ”๊ฐ€)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋™์  ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ๊ฐ„๊ฒฉ์„ 4์ดˆ๋กœ ์ค„์—ฌ ์—…๋ฐ์ดํŠธ ๊ฐ„๊ฒฉ๊ณผ ๋กœ๋“œ ์ž์ฒด๋ฅผ ์กฐ์ ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๊ฒ€์‚ฌ. PostgreSQL: 36 NVP

์ œ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์‹คํ–‰ํ•œ ์ฒซ ๋ฒˆ์งธ ์„ค์ •์€ ์ด ํ•˜๋“œ์›จ์–ด์˜ ์ˆœ์ˆ˜ PostreSQL 10(์ดˆ๋‹น 35๊ฐœ ๊ฐ’)์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ๋Š” ๋ช‡ ์ดˆ๋„ ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ํ›Œ๋ฅญํ•˜๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. SSD ๋“œ๋ผ์ด๋ธŒ(200GB). ์œ ์ผํ•œ ๊ฒƒ์€ 20GB๊ฐ€ ๋งค์šฐ ๋นจ๋ฆฌ ์ฑ„์›Œ์ง„๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์•ž์œผ๋กœ๋„ ์ด๋Ÿฐ ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ฝค ๋งŽ์ด ๋‚˜์˜ฌ ๊ฒ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ‘œ์ค€ Zabbix ์„œ๋ฒ„ ์„ฑ๋Šฅ ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

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

์„ฑ๋Šฅ ๊ฒ€์‚ฌ. PostgreSQL: 50 NVP

๋‹ค์Œ์œผ๋กœ ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด์—์„œ ๋กœ๋“œ๋ฅผ ์ดˆ๋‹น 50๋งŒ ๊ฐ’์œผ๋กœ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. Housekeeper์—์„œ ๋กœ๋“œํ•˜๋ฉด ๊ณ„์‚ฐ๊ณผ ํ•จ๊ป˜ 10~2์ดˆ ๋งŒ์— 3๊ฐœ์˜ ๊ฐ’์ด ๊ธฐ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋‹ค์Œ ์Šคํฌ๋ฆฐ์ƒท์— ํ‘œ์‹œ๋œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

'ํ•˜์šฐ์Šคํ‚คํผ'๋Š” ์ด๋ฏธ ์ž‘์—…์— ๋ฐฉํ•ด๊ฐ€ ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ํžˆ์Šคํ† ๋ฆฌ ์‹ฑ์ปค ํŠธ๋ž˜ํผ์˜ ๋ถ€ํ•˜๋Š” ์—ฌ์ „ํžˆ 60% ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค(์„ธ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„, ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ). Housekeeper๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ HistoryCache๊ฐ€ ์ด๋ฏธ ํ™œ๋ฐœํ•˜๊ฒŒ ์ฑ„์›Œ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค(์™ผ์ชฝ ์•„๋ž˜). ์•ฝ 20GB, XNUMX% ์ •๋„ ์ฐผ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์„ฑ๋Šฅ ๊ฒ€์‚ฌ. PostgreSQL: 80 NVP

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ดˆ๋‹น 80๋งŒ ๊ฐ’์œผ๋กœ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋Œ€๋žต 400๋งŒ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์š”์†Œ, 280๋งŒ ๊ฐœ์˜ ํŠธ๋ฆฌ๊ฑฐ์˜€์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ, ํžˆ์Šคํ† ๋ฆฌ ์‹ฑ์ปค(30๊ฐœ๊ฐ€ ์žˆ์Œ)์˜ ๋กœ๋“œ ์ธก๋ฉด์—์„œ ์‚ฝ์ž…์€ ์ด๋ฏธ ์ƒ๋‹นํžˆ ๋†’์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค: ํžˆ์Šคํ† ๋ฆฌ ์‹ฑ์ปค, ์บ์‹œ... ์ด ํ•˜๋“œ์›จ์–ด์—์„œ ํžˆ์Šคํ† ๋ฆฌ ์‹ฑ์ปค์˜ ๋กœ๋“œ๋Š” ๊ฑฐ์˜ "์„ ๋ฐ˜์—์„œ" ์ตœ๋Œ€์น˜๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HistoryCache์˜ ๋กœ๋“œ๋Š” ๋งค์šฐ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ €๋Š” ์ด๋ฏธ 48๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ์™€ 128GB์˜ RAM์„ ๊ฐ–์ถ˜ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ "์กฐ์ •"ํ–ˆ์Šต๋‹ˆ๋‹ค. History syncer(60๊ฐœ)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์šฐ๋ฆฌ๋Š” "์„ ๋ฐ˜"์— ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ ์•„๋งˆ๋„ ์ƒ์‚ฐ์„ฑ์˜ ํ•œ๊ณ„์ผ ๊ฒƒ์ด๋ฉฐ ์ด์— ๋Œ€ํ•ด ์ด๋ฏธ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๊ฒ€์‚ฌ. TimescaleDB: 80NVP

๋‚˜์˜ ์ฃผ์š” ์—…๋ฌด๋Š” TimescaleDB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ทธ๋ž˜ํ”„๋Š” ํ•˜๋ฝ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ด๋Ÿฌํ•œ ์‹คํŒจ๋Š” ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„ Zabbix ์„œ๋ฒ„์—์„œ๋Š” ๋ณด์‹œ๋‹ค์‹œํ”ผ ํžˆ์Šคํ† ๋ฆฌ ์‹ฑ์ปค์˜ ๋กœ๋”ฉ ํ”„๋กœํ•„์ด ๋งŽ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑฐ์˜ 3๋ฐฐ ๋” ๋น ๋ฅด๊ฒŒ ์‚ฝ์ž…ํ•˜๊ณ  HistoryCache๋ฅผ ๋œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ ์‹œ๊ฐ„์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ดˆ๋‹น 80๊ฐœ์˜ ๊ฐ’์€ ์ƒ๋‹นํžˆ ๋†’์€ ๋น„์œจ์ž…๋‹ˆ๋‹ค(๋ฌผ๋ก  Yandex์˜ ๊ฒฝ์šฐ๋Š” ์•„๋‹˜). ์ „๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋ฅผ ๊ฐ–์ถ˜ ์ƒ๋‹นํžˆ ํฐ ์„ค์ •์ž…๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ: 120๋งŒ NVP

๋‹ค์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ ์š”์†Œ ์ˆ˜์˜ ๊ฐ’์„ 125๋งŒ๊ฐœ๋กœ ๋Š˜๋ ธ๊ณ  ์ดˆ๋‹น XNUMX๊ฐœ์˜ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

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

์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒํ‹ฐ์…˜์€ ๋ฐค์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฝ์ž… ๋ฐ ํ…Œ์ด๋ธ” ์ž‘์—…์„ ์ฐจ๋‹จํ•˜๊ณ  ์„œ๋น„์Šค ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ฃผ์š” ์ž‘์—…์€ TimescaleDB์˜ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ์ดˆ๋‹น 120๊ฐœ์˜ ๊ฐ’์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๊ทธ ์‚ฌ๋žŒ์€ ๋˜ํ•œ TimescaleDB๋ฅผ ์ผฐ๊ณ  io.weight ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ถ€ํ•˜๊ฐ€ ํ”„๋กœ์„ธ์„œ์— ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. TimescaleDB๋ฅผ ํฌํ•จํ•จ์œผ๋กœ์จ ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค ์š”์†Œ์˜ ์‚ฌ์šฉ๋„ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Š” ์ผ๋ฐ˜ ํŒฌ์ผ€์ดํฌ ๋””์Šคํฌ, ์ฆ‰ SSD๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ๋””์Šคํฌ์˜ ์ผ๋ฐ˜ ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค!

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

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

์ฒญ์ค‘ ์งˆ๋ฌธ

์ฒญ์ค‘์˜ ์งˆ๋ฌธ(์ดํ•˜ A): - TimescaleDB๊ฐ€ ๊ตฌ์„ฑํ•˜๊ธฐ ์‰ฝ๊ณ  ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ๋‹ค๋ฉด Postgres๋กœ Zabbix๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ์ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ด ์†”๋ฃจ์…˜์—๋Š” ํ•จ์ •๊ณผ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ฒฐ๊ตญ ์ œ๊ฐ€ Zabbix๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ Postgres๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฑฐ๊ธฐ์— Timescale์„ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์–ด๋–ค ๋ฌธ์ œ๋„ ์ƒ๊ฐํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

AG: โ€“ ์˜ˆ, ์ด๊ฒƒ์ด ์ข‹์€ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Postgres๋ฅผ TimescaleDB ํ™•์žฅ๊ณผ ํ•จ๊ป˜ ์ฆ‰์‹œ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฏธ ๋งํ–ˆ๋“ฏ์ด ์ด "๊ธฐ๋Šฅ"์ด ์‹คํ—˜์ ์ด๋ผ๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋งŽ์€ ์ข‹์€ ๋ฆฌ๋ทฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ด๊ฒƒ์ด ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜(TimescaleDB ํฌํ•จ)์ด๋ผ๋Š” ๊ฒƒ์ด ๋‚˜ํƒ€๋‚ฌ์œผ๋ฉฐ ์•ž์œผ๋กœ ๋ฐœ์ „ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์ด ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœ๋˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ธ์ง€ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

A : โ€“ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋งˆ์ง€๋ง‰ ๊ทธ๋ž˜ํ”„์—๋Š” "Housekeeper"๋ผ๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

๊ทธ๋Š” ๊ณ„์† ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. Housekeeper๋Š” TimescaleDB๋กœ ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ?

AG: โ€“ ์ง€๊ธˆ์€ ํ™•์‹คํžˆ ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. โ€“ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ข€ ๋” ์ž์„ธํžˆ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒญํฌ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์–ด๋–ป๊ฒŒ๋“  ์ง‘๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด TimescaleDB ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์ด ๊ธฐ์ˆ ์ ์ธ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ค๋Š˜์ด๋‚˜ ๋‚ด์ผ ์Šคํƒ ๋“œ์—์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

Timescale์€ ๊ทธ๋Ÿฌํ•œ ๋ฉ์–ด๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋‹จ์ˆœํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ์— ํ†ตํ•ฉ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒ ๋˜๋Š” ๊ธฐํƒ€ ์ž‘์—…์—์„œ ์กฐ๊ฑด์„ ํŒŒ์•…ํ•˜๊ณ  ์ด ์ฒญํฌ๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ฆ‰์‹œ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. "๋” ์ด์ƒ ๊ฑฐ๊ธฐ์— ๊ฐ€์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค!" (๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ). ๊ทธ๊ฒŒ ๋‹ค์•ผ! ์ฆ‰, ํ…Œ์ด๋ธ” ์Šค์บ”์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ์‚ญ์ œ๋กœ ๋Œ€์ฒดํ•˜๋ฏ€๋กœ ์†๋„๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค.

A : โ€“ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋น„SQL ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ Zabbix๋Š” ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์ด ๋ชจ๋“  ๊ฒƒ์€ ๋กœ๊ทธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋™์‹œ์— ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ €์žฅ, ์ถ•์  ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด Kafka์™€ ๊ฐ™์€ Clickhouse?.. Kafka๋„ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค! ์–ด๋–ป๊ฒŒ๋“  ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

AG: - ์–ธ๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ 3.4๋ถ€ํ„ฐ ํŠน์ • "๊ธฐ๋Šฅ"์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ธฐ๋ก ํŒŒ์ผ, ์ด๋ฒคํŠธ, ๊ธฐํƒ€ ๋ชจ๋“  ๊ฒƒ์„ ํŒŒ์ผ์— ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ผ๋ถ€ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์žฌ์ž‘์—…์„ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰์‹œ ํžˆ์Šคํ† ๋ฆฌ ์‹ฑ์ปค๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๊ณ , ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ํšŒ์ „์‹œํ‚ค๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ด๋ฅผ ํด๋ฆญํ•˜์šฐ์Šค๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„ํš์— ๋Œ€ํ•ด์„œ๋Š” ๋งํ•  ์ˆ˜ ์—†์ง€๋งŒ NoSQL ์†”๋ฃจ์…˜(์˜ˆ: Clickhouse)์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ง€์›์€ ๊ณ„์†๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

A : โ€“ ์ผ๋ฐ˜์ ์œผ๋กœ Postgres๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

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

A : โ€“ ์˜ˆ๋ฅผ ๋“ค์–ด Clickhouse๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋” ๋นจ๋ฆฌ ์ž‘๋™ํ• ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

A : โ€“ ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๋™๋“ฑํ•œ ์‹ธ์›€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์ง€ ์ด๋Ÿฌํ•œ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํฐ ์ด์ ์— ๋Œ€ํ•ด์„œ๋Š” ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

AG: - ํ†ตํ•ฉํ•˜๋ฉด ์ข€ ๋” ์ •ํ™•ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ ๊ฐ™์•„์š”.

A : โ€“ ์˜›๋‚  RRD๋Š” ์–ด๋””๋กœ ๊ฐ”๋‚˜์š”? SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ „ํ™˜ํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  ์ง€ํ‘œ๊ฐ€ RRD์—์„œ ์ˆ˜์ง‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

AG: โ€“ Zabbix์—๋Š” ์•„๋งˆ๋„ ๋งค์šฐ ์˜ค๋ž˜๋œ ๋ฒ„์ „์˜ RRD๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•ญ์ƒ ์กด์žฌํ•ด ์™”์œผ๋ฉฐ ์ด๋Š” ๊ณ ์ „์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ณ ์ „์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ MySQL, PostgreSQL์ž…๋‹ˆ๋‹ค(๋งค์šฐ ์˜ค๋žซ๋™์•ˆ ์กด์žฌํ•ด ์™”์Šต๋‹ˆ๋‹ค). ์šฐ๋ฆฌ๋Š” SQL ๋ฐ RRD ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

HighLoad++, Andrey Gushchin(Zabbix): ๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹

์ผ๋ถ€ ๊ด‘๊ณ  ๐Ÿ™‚

์šฐ๋ฆฌ์™€ ํ•จ๊ป˜์žˆ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์‹ญ๋‹ˆ๊นŒ? ๋” ์žฌ๋ฏธ์žˆ๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด? ์ฃผ๋ฌธํ•˜๊ฑฐ๋‚˜ ์นœ๊ตฌ์—๊ฒŒ ์ถ”์ฒœํ•˜์—ฌ ์šฐ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค. $4.99๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์šฉ ํด๋ผ์šฐ๋“œ VPS, ๊ท€ํ•˜๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ๋ฐœ๋ช…ํ•œ ๊ณ ์œ ํ•œ ๋ณด๊ธ‰ํ˜• ์„œ๋ฒ„ ์•„๋‚ ๋กœ๊ทธ: VPS(KVM) E5-2697 v3(6์ฝ”์–ด) 10GB DDR4 480GB SSD 1Gbps์— ๋Œ€ํ•œ ์ „์ฒด ์ง„์‹ค ๋˜๋Š” ์„œ๋ฒ„ ๊ณต์œ  ๋ฐฉ๋ฒ•์€? (RAID1 ๋ฐ RAID10์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์ตœ๋Œ€ 24๊ฐœ ์ฝ”์–ด ๋ฐ ์ตœ๋Œ€ 40GB DDR4).

Dell R730xd๋Š” ์•”์Šคํ…Œ๋ฅด๋‹ด์˜ Equinix Tier IV ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ 2๋ฐฐ ๋” ์ €๋ ดํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ ๋งŒ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199๋ถ€ํ„ฐ ๋„ค๋œ๋ž€๋“œ์—์„œ! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ์ตœ์ € $99! ์— ๋Œ€ํ•ด ์ฝ๋‹ค ์ธํ”„๋ผ ๊ณต์‚ฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•. 730ํŽ˜๋‹ˆ์— 5์œ ๋กœ ์ƒ๋‹น์˜ Dell R2650xd E4-9000 vXNUMX ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค?

์ถœ์ฒ˜ : habr.com

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