9 minute read

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

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

์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๋Š” ๋ญ˜ ํ•˜๋Š” ๋…€์„์ธ๊ฐ€?

๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์„ ๊ฒฐ์ •ํ•˜๋Š” ๋…€์„ ์ž…๋‹ˆ๋‹ค. ์ฃผํ‚คํผ๋กœ๋ถ€ํ„ฐ ๋ธŒ๋กœ์ปค๋“ค์˜ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์ด ์žˆ๋˜ ๋ธŒ๋กœ์ปค๊ฐ€ ์œ ์‹ค๋˜๋ฉด, ์ฃผํ‚คํผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋‚˜๋จธ์ง€ ๋ธŒ๋กœ์ปค์˜ ์ƒํƒœ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‚จ์€ ํŒ”๋กœ์›Œ ํŒŒํ‹ฐ์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒˆ๋กœ์šด ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์œผ๋กœ ์Šน๊ฒฉํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์ด ์žฌ์„ ์ • ๋˜๋ฉด, ์ฃผํ‚คํผ์—๊ฒŒ ์ด๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์ฃผํ‚คํผ์™€ ํ†ต์‹ ํ•˜๋ฉฐ, ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ฑํฌ ํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ zookeeper๋“  Kraft ๋ชจ๋“œ์ด๋“  ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๋Š” ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์„ ์„ ์ • ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‘ ๋ชจ๋“œ์— ๋”ฐ๋ผ์„œ ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๊ฐ€ ์œ ์‹ค๋œ ์ƒํƒœ์—์„œ ์ƒˆ๋กœ์šด ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๋ฅผ ์„ ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • zookeeper ๋ชจ๋“œ
    • ์ฃผํ‚คํผ๊ฐ€ ๋‚จ์€ ๋ธŒ๋กœ์ปค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๋กœ ์„ ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • Kraft ๋ชจ๋“œ
    • Raft ํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ํˆฌํ‘œ ๋ฐฉ์‹์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์„ ์ถœ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผํ‚คํผ๋Š” ๋ญ˜ ํ•˜๋Š” ๋…€์„์ธ๊ฐ€?

Kafka ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค๋ฅผ ์„ ์ถœ
  • ๋ธŒ๋กœ์ปค ๋“ฑ๋ก๊ณผ ์ƒํƒœ ๊ด€๋ฆฌ
    • znode ์–ด์ฉŒ๊ตฌโ€ฆ (TODO)
  • ๊ฐ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜ ์ •๋ณด
    • ๋ˆ„๊ฐ€ ๋ฆฌ๋”๊ณ , ๋ˆ„๊ฐ€ ํŒ”๋กœ์›Œ์ธ์ง€
    • ISR ์ง‘ํ•ฉ์€ ์–ด๋–ป๊ฒŒ ๋˜์–ด ์žˆ๋Š”์ง€
  • ๊ฐ ํ† ํ”ฝ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
    • ์ด๋ฆ„, config, retention ๋“ฑ๋“ฑ
  • ๊ฐ ํ† ํ”ฝ์˜ ACL

๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์€ ์˜ค์ง ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜๋งŒ!

ํ”„๋กœ๋“€์„œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ, ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์ด ์žˆ๋Š” ๋ธŒ๋กœ์ปค์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ๊ฒƒ์ž„.

ํŒ”๋กœ์›Œ ํŒŒํ‹ฐ์…˜์˜ ๋ฐ์ดํ„ฐ๋Š” ์˜ค์ง ์žฅ์•  ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ์šฉ๋„์ผ ๋ฟ์ž„!! replication.factor๊ฐ€ ํฌ๋‹ค๊ณ  ํ•ด์„œ ํ”„๋กœ๋“€์„œ/์ปจ์Šˆ๋จธ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ „ํ˜€ ๋Š˜์–ด๋‚˜์ง€ ์•Š์Œ.

๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์„œ๋ฒ„์— ๋Œ€ํ•ด

์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด๋ฃจ๋Š” ๋ชจ๋“  ๋ธŒ๋กœ์ปค๊ฐ€ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ง„์ž…์ ์ด ๋  ์ˆ˜ ์žˆ์Œ. ์ฆ‰, ๋ธŒ๋กœ์ปค๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ ๋ธŒ๋กœ์ปค์ผ ํ•„์š”๋„ ์—†์Œ.

์˜›๋‚ ์— ํ—ท๊ฐˆ๋ ธ๋˜ ๊ฑด Kafka Properties์— ์ ๋˜ bootstrap.servers๊ฐ€ ์ฃผํ‚คํผ์˜ ์ฃผ์†Œ์ธ ์ค„ ์•Œ์•˜์Œ. ๊ทธ๋Ÿฐ๋ฐ, ๊ทธ๊ฒŒ ์ „ํ˜€ ์•„๋‹ˆ๊ณ  ๊ฐ ๋ธŒ๋กœ์ปค์˜ ์ฃผ์†Œ๋ฅผ ๋งํ•จ.

๊ทธ๋ž˜์„œ bootstrap.servers์— ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค์˜ ์ฃผ์†Œ๋ฅผ ์ ๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•จ.

bootstrap.servers=broker1:9092,broker2:9092,broker3:9092

ํด๋ฆฐ ๋กœ๊ทธ vs. ๋”ํ‹ฐ ๋กœ๊ทธ

ํ† ํ”ฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘์— Log Compaction์„ ํ•  ๋•Œ ์“ฐ๋Š” ์šฉ์–ด.

Active Segment๋Š” ํ˜„์žฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์Œ“์ด๊ณ  ์žˆ์œผ๋‹ˆ ์••์ถ• ๋Œ€์ƒ์ด ์•„๋‹˜! ๊ทธ๋ž˜์„œ Inactive Segment ๋“ค์ด ๋กœ๊ทธ ์••์ถ•์˜ ๋Œ€์ƒ์ด ๋จ.

์„ธ๊ทธ๋จผํŠธ์—๋Š” key ๋ณ„๋กœ latest ๋กœ๊ทธ๋„ ์žˆ๊ณ , non-latest ๋กœ๊ทธ๋„ ์žˆ์„ ๊ฒƒ์ž„. ๋งŒ์•ฝ, latest ๋กœ๊ทธ๋ผ๋ฉด ์‚ญ์ œ ๋˜์ง€ ์•Š๊ณ  ๋ณด์กด๋จ. non-latest ๋กœ๊ทธ๋ผ๋ฉด ๋กœ๊ทธ๊ฐ€ ์‚ญ์ œ๋จ. ๊ทธ๋ž˜์„œ ๋ณด์กด๋˜๋Š” latest ๋กœ๊ทธ๋ฅผ โ€œํด๋ฆฐ ๋กœ๊ทธโ€œ๋ผ๊ณ  ํ•˜๊ณ , ์‚ญ์ œ ์ฒ˜๋ฆฌ ๋˜๋Š” non-latest ๋กœ๊ทธ๋ฅผ โ€œ๋”ํ‹ฐ ๋กœ๊ทธโ€œ๋ผ๊ณ  ํ•จ.

Log Compaction์—์„œ Tombstone ๋ ˆ์ฝ”๋“œ

Log Compaction์ด ํ™œ์„ฑํ™”๋œ ํ† ํ”ฝ์—์„œ๋Š” ํŠน์ • key์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ.

๋ฐฉ๋ฒ•์€ ๊ทธ๋ƒฅ null value ๊ฐ’์— ์‚ญ์ œํ•˜๋ ค๋Š” key๋ฅผ ๋ฌถ์–ด์„œ ๋ ˆ์ฝ”๋“œ๋กœ ์˜๋ฉด ๋จ. ์ด๋ ‡๊ฒŒ ์‚ญ์ œ๋ฅผ ์œ„ํ•ด ๋ณด๋‚ด๋Š” null value ๋ ˆ์ฝ”๋“œ๋ฅผ โ€œTombstone ๋ ˆ์ฝ”๋“œโ€œ๋ผ๊ณ  ํ•จ.

Tombstone ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ƒ๊ธฐ๋ฉด, ๊ธฐ์กด์— ํ•ด๋‹น key์— ์กด์žฌํ•˜๋˜ ๊ฐ’์ด non-latest๊ฐ€ ๋˜๊ณ , Log Compaction์ด ๋  ๋•Œ ์‚ญ์ œ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ.

Tombstone ๋ ˆ์ฝ”๋“œ๋Š” ํ•ด๋‹น key์— ๋Œ€ํ•œ latest ๋ ˆ์ฝ”๋“œ์ด๋ฏ€๋กœ, Log Compaction์˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š๊ณ , ์˜์›ํžˆ ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ. ๊ทธ๋ž˜์„œ Kafka์—์„œ๋Š” delete.retention.ms๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ฃผ๊ธฐ์ ์œผ๋กœ Tombstone ๋ ˆ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•จ!!

์ด ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์ด 24์‹œ๊ฐ„์œผ๋กœ ์„ค์ • ๋˜์–ด ์žˆ๊ณ , Tombstone ๋ ˆ์ฝ”๋“œ๋กœ ์ธํ•œ non-latest ๋ ˆ์ฝ”๋“œ ์ •๋ฆฌ(Log Compaction) ์ฃผ๊ธฐ ๋ณด๋‹ค ์ถฉ๋ถ„ํžˆ ๊ธธ๊ฒŒ ์„ค์ • ํ•ด์ค˜์•ผ ํ•จ. Log Compaction ์ฃผ๊ธฐ๋Š” 2๊ฐ€์ง€ ์†์„ฑ์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋ฐ, min.cleanable.dirty.ratio(default: 0.5), log.cleaner.backoff.ms(default: 15,000 ms)๋กœ ๋˜์–ด ์žˆ์Œ. ๊ทธ๋ž˜์„œ ์™ ๋งŒํ•˜๋ฉด Tombstone ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ ๋˜๊ธฐ ์ „์—, non-latest ๊ฐ’๋“ค์ด ์ •๋ฆฌ ๋จ.

์ด๋ ‡๊ฒŒ Delete ๋ ˆ์ฝ”๋“œ๋ฅผ ํ–‰์œ„๋ฅผ ์ง€์›ํ•˜๋Š” ์ด์œ ๋Š” GDPR๊ณผ ๊ฐ™์€ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž„.

๋ ˆ์ฝ”๋“œ ์‚ญ์ œ์— ๋Œ€ํ•ด

Kafka ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ๋Š” ํ”„๋กœ๋“€์„œ๋„, ์ปจ์Šˆ๋จธ๋„ ์•„๋‹Œ ์˜ค์ง ๋ธŒ๋กœ์ปค๋งŒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ.

๋ฐ์ดํ„ฐ ์‚ญ์ œ๋Š” ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ด๋ค„์ง€๋Š”๋ฐ, ์ด ๋‹จ์œ„๋ฅผ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ(log segment)๋ผ๊ณ  ํ•จ. ์‚ญ์ œ๊ฐ€ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ด๋ค„์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ฒ˜๋Ÿผ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์„ ๋ณ„ํ•ด ์‚ญ์ œํ•˜๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•จ.

Confluent ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋ช‡๊ฐœ์˜ ๋ธŒ๋กœ์ปค ๊ตฌ์„ฑ ๋˜์–ด ์žˆ๋Š”๊ฐ€?

Confluent๋Š” Serverless Kafka ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Kafka ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์–ผ๋งŒํผ์˜ ๋ธŒ๋กœ์ปค๋กœ ๊ตฌ์„ฑ ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Confluent ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์–ผ๋งˆ๋งŒํผ์˜ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์žฅํ•˜๊ณ , ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ๊ณผ๊ธˆ ํ•˜๋Š” ๊ฒƒ์ผ๋ฟ Kafka ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ๋Š” ๊ณ ๊ฐ์ด ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ ! Cluster๋ฅผ ์ด๋ฃจ๋Š” Broker ๊ฐฏ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค!! Kafka Shell์˜ kafka-broker-api-versions.sh๋ฅผ ์‚ฌ์šฉ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

$ kafka-broker-api-versions.sh \
    --bootstrap-server xxxx.xxxx.xxx.confluent.cloud:9092 \
    --command-config /xxxx/client.properties

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ๊ฐ ๋ธŒ๋กœ์ปค์˜ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์˜ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

b0-xxxx.xxxx.aws.confluent.cloud:9092 (id: 8 rack: usw2-az2) -> (
	Produce(0): 0 to 11 [usable: 11],
	Fetch(1): 0 to 17 [usable: 17],
	ListOffsets(2): 0 to 10 [usable: 9],
	Metadata(3): 0 to 13 [usable: 12],
    ...
)
b1-xxxx.xxxx.aws.confluent.cloud:9092 (id: 7 rack: usw2-az3)
b2-xxxx.xxxx.aws.confluent.cloud:9092 (id: 6 rack: usw2-az4)

BASIC ํ”Œ๋žœ์˜ ํด๋Ÿฌ์Šคํ„ฐ ์˜€๋Š”๋ฐ, ์ด 18๊ฐœ์˜ ๋ธŒ๋กœ์ปค๋กœ ๊ตฌ์„ฑ ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค!

from confluent_kafka.admin import AdminClient

# Kafka ํด๋ผ์ด์–ธํŠธ ์„ค์ •
admin_client = AdminClient({
    "bootstrap.servers": "xxxx.xxxx.aws.confluent.cloud:9092",
    "security.protocol": "SASL_SSL",
    "sasl.mechanism": "PLAIN",
    "sasl.username": "xxxx",
    "sasl.password": "xxxx"
})

# ๋ธŒ๋กœ์ปค ์ •๋ณด ์ถœ๋ ฅ
brokers = admin_client.describe_cluster()
print("Cluster ID:", brokers.result().cluster_id)
print("Controller:", brokers.result().controller)
for node in brokers.result().nodes:
  print(node)

์š”๋Ÿฐ Python ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ธŒ๋กœ์ปค ์ด๋ฆ„๋งŒ ์ถœ๋ ฅํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

Kafka ํ™œ์šฉ ์‚ฌ๋ก€

  • Kakao
    • ์นดํ”„์นด, ๋Œ€๊ทœ๋ชจ ํด๋Ÿฌ์Šคํ„ฐ ์šด์˜ ํ›„๊ธฐ / if(kakao)2022
      • ์˜จํ”„๋ ˆ๋ฏธ์Šค์—์„œ Kafka ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋Š” ๋…ธํ•˜์šฐ๊ฐ€ ์ž”๋œฉ ์†Œ๊ฐœ ๋˜์–ด ์žˆ์Œ.
      • RAID์™€ ๊ฐ™์ด ๋””์Šคํฌ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ฃจ๊ณ , SSD๊ฐ€ ์ข‹์€์ง€ HDD๊ฐ€ ์ข‹์€์ง€ ๊ฐ™์€ low-level ๋‚ด์šฉ๋„ ํฅ๋ฏธ๋กœ์› ์Œ.
      • Disk ์ชฝ ์žฅ์• ๊ฐ€ ๋งŽ์•„์„œ ์žฅ์•  ๋ณต๊ตฌ๋ฅผ ์ž๋™ํ™” ํ–ˆ๋‹ค๋Š” ๊ฒƒ๋„ ํฅ๋ฏธ๋กœ์›€.
      • ์นดํ”„์นด๋Š” Kernel ๋‹จ์—์„œ zero-copy๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰๋˜๋Š”๋ฐ, ์ข€๋” ์•Œ์•„๋ด์•ผ ๊ฒ ์Œ.
      • Kafka๋Š” Page Cache๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Heap ๊ณต๊ฐ„์€ 6GB๋กœ (๋น„๊ต์ ) ์ž‘๊ฒŒ ํ• ๋‹นํ•œ๋‹ค๊ณ  ํ•จ
      • Kafka Parameter๋ฅผ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ปค์Šคํ…€ ๊ฐ’ ์‚ฌ์šฉํ•œ ๊ฒƒ๋“ค๋„ ์ด์œ ์™€ ๋…ธํ•˜์šฐ๋ฅผ ์นœ์ ˆํžˆ ์•Œ๋ ค์ฃผ์‹ฌ
      • ๋ณธ๋ž˜ log.dir์€ /tmp ๊ฒฝ๋กœ์— ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•˜๋Š”๋ฐ, ์š”๊ฒŒ OS ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ž๋™ ์‚ญ์ œ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๋กœ๋Š” ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค๊ณ  ํ•จ.
    • ์นดํ”„์นด, Kraft๋ฅผ ๋งŒ๋‚˜๋‹ค: ์ฃผํ‚คํผ ์—†์ด ์šด์˜ํ•˜๋Š” ์นดํ”„์นด์˜ ์‹ค์ „ ์šด์˜ ๋…ธํ•˜์šฐ / if(kakaoAI)2024
      • ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๊ธฐ์กด์—๋Š” Zookeeper์—์„œ ๊ด€๋ฆฌ ํ–ˆ๋Š”๋ฐ, ์ด๊ฑธ ๋‚˜์ค‘์—” System Topic์ธ __consumer_offsets์œผ๋กœ ์˜ฎ๊ฒผ๋‹ค๋Š” ์–˜๊ธฐ๋„ ์š” ์˜์ƒ์œผ๋กœ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋จ!
      • __cluster_metadata๋ผ๋Š” System Topic์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•จ.
        • ์ด ์ •๋ณด๋Š” ์ปจํŠธ๋กค๋Ÿฌ ๋…ธ๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜ต์ €๋„ˆ ๋…ธ๋“œ๋„ ํ•ด๋‹น ํ† ํ”ฝ์— ๋Œ€ํ•œ ํŒŒํ‹ฐ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.
      • Checkpoint๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ, ๋น ๋ฅธ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•จ.
      • ์ •๋ง ๊ผผ๊ผผํ•˜๊ฒŒ ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์„œ ๋†€๋ž์Œ! (์ •๋ง ๋ฐฐ์›Œ์•ผ ํ•  ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•จ)
        • trogdor: Trogdor is a test framework for Apache Kafka.
        • ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์ง์ ‘ ๋ฐฉ๋ฌธํ•ด์„œ ๋ฌผ๋ฆฌ์ ์ธ ์žฅ์• ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณผ ์ •๋„๋ผ๋‹ˆ!
      • ๋ธŒ๋กœ์ปค์™€ ํ”„๋กœ๋“€์„œ์˜ ์••์ถ• ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋ฉด, ์••์ถ•์„ ํ’€๊ณ  ๋‹ค์‹œ ์••์ถ• ํ•˜๋Š” ๊ณผ์ •์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์—, ์™ ๋งŒํ•˜๋ฉด ๋ธŒ๋กœ์ปค์™€ ํ”„๋กœ๋“€์„œ์˜ ์••์ถ• ๋ฐฉ์‹์„ ๋™์ผํ•˜๊ฒŒ ๋งž์ถฐ์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ํ•จ.

Categories:

Updated: