Contents

What is Kafka?

ํ•„์ž๊ฐ€ ๋งก๊ณ ์žˆ๋Š” ์„œ๋น„์Šค์— Elastic Stack ์„ ๋„์ž…ํ•˜๋ฉด์„œ ์ค‘๊ฐ„์— ๋ฒ„ํผ๊ฐ€ ํ•„์š”ํ•˜์—ฌ Message-Queue ์‹œ์Šคํ…œ๋“ค์„ ์•Œ์•„๋ณด๋˜ ์ค‘ Kafka ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒŒ ๋œ๋‹ค.

๊ธฐ๋ณธ์„ค๋ช… ๋ฐ ๊ธฐ์กด ๋ฉ”์„ธ์ง• ์‹œ์Šคํ…œ๊ณผ ๋‹ค๋ฅธ์ 

  • ๋ฉ”์„ธ์ง• ํ์˜ ์ผ์ข…
  • ๋ง ๊ทธ๋Œ€๋กœ ๋ถ„์‚ฐํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ, LinkedIn์—์„œ ์—ฌ๋Ÿฌ ๊ตฌ์ง + ์ฑ„์šฉ ์ •๋ณด๋“ค์„ ํ•œ๊ณณ์—์„œ ์ฒ˜๋ฆฌ(๋ฐœํ–‰/๊ตฌ๋…)ํ• ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์œผ๋กœ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘
  • ๋Œ€์šฉ๋Ÿ‰์˜ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ฒ˜๋ฆฌ์— ํŠนํ™”๋˜์–ด ์„ค๊ณ„๋œ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ, ๊ธฐ์กด ๋ฒ”์šฉ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๋Œ€๋น„ TPS๊ฐ€ ๋งค์šฐ ์šฐ์ˆ˜
  • ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ๊ธฐ์กด ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๋ฉ”์‹œ์ง€๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅ โ†’ ์นดํ”„์นด ์žฌ์‹œ์ž‘์œผ๋กœ ์ธํ•œ ๋ฉ”์„ธ์ง€ ์œ ์‹ค ์šฐ๋ ค ๊ฐ์†Œ
  • ๊ธฐ์กด์˜ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์—์„œ๋Š” broker๊ฐ€ consumer์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ pushํ•ด ์ฃผ๋Š” ๋ฐฉ์‹์ธ๋ฐ ๋ฐ˜ํ•ด, Kafka๋Š” consumer๊ฐ€ broker๋กœ๋ถ€ํ„ฐ ์ง์ ‘ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ€๋Š” pull ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— consumer๋Š” ์ž์‹ ์˜ ์ฒ˜๋ฆฌ๋Šฅ๋ ฅ๋งŒํผ์˜ ๋ฉ”์‹œ์ง€๋งŒ broker๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
/images/what-is-kafka/kafka2.png

์นดํ”„์นด ์ฃผ์š” ๊ฐœ๋…

  • producer : ๋ฉ”์„ธ์ง€ ์ƒ์‚ฐ(๋ฐœํ–‰)์ž.
  • consumer : ๋ฉ”์„ธ์ง€ ์†Œ๋น„์ž
    • consumer group : consumer ๋“ค๋ผ๋ฆฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋‚˜๋ˆ ์„œ ๊ฐ€์ ธ๊ฐ„๋‹ค.offset ์„ ๊ณต์œ ํ•˜์—ฌ ์ค‘๋ณต์œผ๋กœ ๊ฐ€์ ธ๊ฐ€์ง€ ์•Š๋Š”๋‹ค.
  • broker : ์นดํ”„์นด ์„œ๋ฒ„๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  • zookeeper : ์นดํ”„์นด ์„œ๋ฒ„ (+ํด๋Ÿฌ์Šคํ„ฐ) ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ 
  • cluster : ๋ธŒ๋กœ์ปค๋“ค์˜ ๋ฌถ์Œ
  • topic : ๋ฉ”์„ธ์ง€ ์ข…๋ฅ˜
  • partitions : topic ์ด ๋‚˜๋ˆ ์ง€๋Š” ๋‹จ์œ„
  • Log : 1๊ฐœ์˜ ๋ฉ”์„ธ์ง€
  • offset : ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ๊ฐ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ€์ง€๋Š” unique id

์นดํ”„์นด๋Š” ์–ด๋–ค์‹์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”๊ฐ€

  • zookeeper ๊ฐ€ kafka ์˜ ์ƒํƒœ์™€ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค. /images/what-is-kafka/kafka3.png

  • ์ •ํ•ด์ง„ topic ์— producer ๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœํ–‰ํ•ด๋†“์œผ๋ฉด consumer ๊ฐ€ ํ•„์š”ํ• ๋•Œ ํ•ด๋‹น ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ„๋‹ค. (์—ฌ๊ธฐ์„œ ์นดํ”„์นด๋กœ ๋ฐœํ–‰๋œ ๋ฉ”์„ธ์ง€๋“ค์€ consumer๊ฐ€ ๋ฉ”์„ธ์ง€๋ฅผ ์†Œ๋น„ํ•œ๋‹ค๊ณ  ํ•ด์„œ ์—†์–ด์ง€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์นดํ”„์นด ์„ค์ • log.retention.hours(default : 168[7์ผ])์— ์˜ํ•ด ์‚ญ์ œ๋œ๋‹ค.)

/images/what-is-kafka/kafka4.png
  • partition ๊ฐœ์ˆ˜์™€ consumer group ๊ฐœ๋…
/images/what-is-kafka/kafka5.png
  • ํ•˜์–€์ƒ‰(consumer-01) : ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๊ฐ€ 4๊ฐœ์ธ๋ฐ ๋น„ํ•ด ์ปจ์Šˆ๋จธ๊ฐ€ 3๊ฐœ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์–ด๋Š ์ปจ์Šˆ๋จธ๊ฐ€ ๋‘๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๋‹ด๋‹นํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค.
  • ์ฃผํ™ฉ์ƒ‰(consumer-02) : ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๊ฐ€ 4๊ฐœ์ธ๋ฐ ๋น„ํ•ด ์ปจ์Šˆ๋จธ๊ฐ€ 5๊ฐœ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜์˜ ๋…ธ๋Š”(?) ์ปจ์Šˆ๋จธ๊ฐ€ ์ƒ๊ธฐ๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค.
  • ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฐœ์ˆ˜๋Š” ์ •ํ•ด์ง€์ง€ ์•Š์•˜์ง€๋งŒ ํ†ต์ƒ ์ปจ์Šˆ๋จธ๊ทธ๋ฃน์˜ ์ปจ์Šˆ๋จธ ๊ฐœ์ˆ˜์™€ ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ๋™์ผํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๊ณค ํ•œ๋‹ค.

์ฐธ๊ณ  url


Buy me a coffeeBuy me a coffee