Kafka Internals
ํ์ฌ์์ 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 ํ๊ฒฝ์์๋ ๊ฐ์ฅ ๊ถ์ฅ๋๋ ๋์คํฌ ๊ตฌ์ฑ ๋ฐฉ์ ์ ๋๋ค.