Page Cache, Zero-Copy, RAID 10๊นŒ์ง€, ์นดํ”„์นด์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด์ž!

3 minute read

ํšŒ์‚ฌ์—์„œ Confluent๋ฅผ ํ†ตํ•ด Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด ์นดํ”„์นด์— ๋Œ€ํ•ด์„œ ์ข€๋” ์ž์„ธํžˆ ์•Œ๊ณ , ์ „๋ฌธ์„ฑ์„ ๊ฐ–์ถ”๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ 2025๋…„ ์ฒซ ๋ชฉํ‘œ๋กœ Confluent์˜ Kafka ์ž๊ฒฉ์ฆ์ธ Confluent Certified Developer for Apache Kafkaยฎ ์ž๊ฒฉ์ฆ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค โœŒ๏ธ

๋“ค์–ด๊ฐ€๋ฉฐ

Kafka๋Š” ์ตœ๊ณ  ํผํฌ๋จผ์Šค๋ฅผ ์œ„ํ•ด OS์™€ ์ปค๋„์˜ ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€ ๋‚ด๋ถ€๋ฅผ ๋“ค์—ฌ๋‹ค๋ด…์‹œ๋‹ค!

Page Cache

Kafka๋Š” ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ์žฌ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ํ† ํ”ฝ์˜ ๊ฐ ํŒŒํ‹ฐ์…˜์€ ๋กœ๊ทธ๊ฐ€ ์Œ“์ด๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋˜๊ณ , ๋กœ๊ทธ๋ฅผ .log ํฌ๋งท์œผ๋กœ ์ ์žฌ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, Kafka์˜ ์ง„๊ฐ€๋Š” ํŽ˜์ด์ง€ ์บ์‹œ ํ™œ์šฉ์—์„œ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. Kafka ๋ธŒ๋กœ์ปค ์ž์ฒด๋Š” JVM heap์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒจ์šฐ 6Gb ์ •๋ณด๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!! ๊ทธ๋ฆฌ๊ณ  ๋จธ์‹ ์˜ ๋‚˜๋จธ์ง€ ์šฉ๋Ÿ‰์€ OS๊ฐ€ ํŒŒ์ผ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ์บ์‹œ(=ํŽ˜์ด์ง€ ์บ์‹œ)๋กœ ํ™œ์šฉ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ 32Gb ๋จธ์‹  ์œ„์—์„œ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋ฉด, -Xmx6g๋กœ 6Gb์˜ ํž™ ๊ณต๊ฐ„์„ ํ• ๋‹น ํ•˜๊ณ  ๋‚˜๋จธ์ง€ 26Gb๋Š” OS๊ฐ€ ์•Œ์•„์„œ ํŽ˜์ด์ง€ ์บ์‹œ๋ฅผ ์ถฉ๋ถ„ํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋น„์›Œ๋‘ก๋‹ˆ๋‹ค!

Kafka๊ฐ€ โ€œํŽ˜์ด์ง€ ์บ์‹œโ€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฑด ํšŒ์‚ฌ์—์„œ Kafka ์—…๋ฌด๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋งก์œผ๋ฉด์„œ ์ •๋ง ๋งŽ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹คโ€ฆ ใ…‹ใ…‹ ์•”ํŠผ ๊ทธ๋งŒํผ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ๋Š” ๊ฒƒ!

์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ์บ์‹œ์— ๋„ฃ์–ด๋’€๋‹ค๊ฐ€, ๋””์Šคํฌ์— ์ง€์—ฐํ•ด์„œ ๋„ฃ๊ฒŒ ๋˜๋ฉด Consumer์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋” ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์ด ์ƒ๋žต๋˜๊ธฐ ๋•Œ๋ฌธ์— Kafka ์„œ๋ฒ„๋Š” CPU ์‚ฌ์šฉ๋ฅ ์ด ์ ๊ณ , ์ฒ˜๋ฆฌ ์†๋„๋„ ๋น ๋ฆ…๋‹ˆ๋‹ค.

Zero-Copy

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ์›๊ฒฉ ์‹œ์Šคํ…œ์—์„œ ์ฝ์–ด์„œ ๊ทธ๊ฑธ ์ „๋‹ฌํ•ด์ค๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„๋Š” (1) ํŒŒ์ผ์„ ์ฝ๊ณ  (2) ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•œ ํ›„์— (3) ๊ทธ๊ฑธ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ ํ•ฉ๋‹ˆ๋‹ค. Kafka๋Š” ์—ฌ๊ธฐ์—์„œ (2)๋ฒˆ ๊ณผ์ •์„ ์ƒ๋žต ํ•ฉ๋‹ˆ๋‹ค! ์ฆ‰, ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

๋Œ€์‹  Kafka๋Š” ๋””์Šคํฌ ํŒŒ์ผ ๋‚ด์šฉ์„ ์ง์ ‘ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์œผ๋กœ ๋ณด๋‚ด๋Š” Zero-copy ๋ฐฉ์‹์„ ์ฑ„ํƒ ํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ธ JVM heap์— ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ „๋‹ฌ ๋˜๋ฉฐ, ํ˜น์‹œ๋‚˜ ์ ์žฌ๊ฐ€ ๋˜๋”๋ผ๋„ Page Cache ์˜์—ญ์— ์ ์žฌ ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ, ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ํŽ˜์ด์ง€ ์บ์‹œ์— ์žˆ๊ฑฐ๋‚˜, ์ด๋ฏธ ํŽ˜์ด์ง€ ์บ์‹œ๋กœ ์˜ฌ๋ผ์™”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์œผ๋กœ ๋ฐ”๋กœ ๋ณด๋‚ด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

RAID 10

๋จผ์ €, RAID๋Š” โ€œRedundant Array of Inexpensive Diskโ€์˜ ์•ฝ์ž๋กœ ์ €๋ ดํ•œ ๋””์Šคํฌ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋””์Šคํฌ ํด๋Ÿฌ์Šคํ„ฐ ๊ธฐ๋ฒ• ์ž…๋‹ˆ๋‹ค.

โ€œRAID 0โ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆฌํ•‘(stripping)์œผ๋กœ ์ €์žฅ ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌํ•‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ, ๋‘ ๋””์Šคํฌ์— ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ €์žฅํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ถ€ํ•˜๊ฐ€ ๋ถ„์‚ฐ ๋ฉ๋‹ˆ๋‹ค.

โ€œRAID 1โ€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ค‘์œผ๋กœ ์ €์žฅํ•˜์—ฌ ๋‚ด๊ตฌ์„ฑ์„ ํ™•๋ณด ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์žฅ์•  ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ ,์ฝ๊ธฐ ๋ถ€ํ•˜๊ฐ€ ๋‘ ๋””์Šคํฌ๋กœ ๋ถ„์‚ฐ ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ „์ฒด ์šฉ๋Ÿ‰์˜ ์ ˆ๋ฐ˜๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค.

โ€œRAID 10โ€์€ ๋‘ ๋ฐฉ์‹์„ ๊ฒฐํ•ฉํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ด์ค‘ํ™”์™€ ์ŠคํŠธ๋ผ์ดํ•‘ ์ €์žฅ์ด ๋Œ๋‹ค ์‚ฌ์šฉ ๋ฉ๋‹ˆ๋‹ค! Kafka ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐ€์žฅ ๊ถŒ์žฅ๋˜๋Š” ๋””์Šคํฌ ๊ตฌ์„ฑ ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค.

References

Categories:

Updated: