๐Ÿ”— Kafka ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ ์ดํ•ดํ•˜๊ธฐ | ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ™œ์šฉ ์‚ฌ๋ก€

๐Ÿ”— Kafka ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ ์ดํ•ดํ•˜๊ธฐ | ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ™œ์šฉ ์‚ฌ๋ก€

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

๐Ÿ“Œ Kafka์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

Kafka์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

Cluster

ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์นดํ”„์นด๋Š” ๋†’์€ ๊ฐ€์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ง€๋‹™๋‹ˆ๋‹ค.

Producer

ํ”„๋กœ๋“€์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Kafka๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Consumer

์ปจ์Šˆ๋จธ๋Š” ํ”„๋กœ๋“€์„œ๊ฐ€ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ธŒ๋กœ์ปค์—์„œ ์ฝ์–ด์˜ค๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ํ˜•์‹์œผ๋กœ ์†Œ๋น„ํ•˜๊ฑฐ๋‚˜ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Broker

๋ธŒ๋กœ์ปค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์žฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋“€์„œ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์ด๋ฅผ ์†Œ๋น„์ž๊ฐ€ ํ•„์š”๋กœ ํ•  ๋•Œ๊นŒ์ง€ ์ €์žฅ ๋ฐ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Topic๊ณผ Partition

ํ† ํ”ฝ์€ ๋ฉ”์‹œ์ง€๋ฅผ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ํŒŒํ‹ฐ์…˜์€ ์ด๋Ÿฌํ•œ ํ† ํ”ฝ์„ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…”๋‹์„ ํ†ตํ•ด ์Šค์ผ€์ผ๋ง์„ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŒ Kafka์˜ ํ™œ์šฉ ๋ฐฉ๋ฒ•

Pub-Sub ๋ชจ๋ธ

Kafka์˜ ๋ฐœํ–‰-๊ตฌ๋…(Pub-Sub) ๋ชจ๋ธ์€ ๋ฉ”์‹œ์ง€๋ฅผ ํŠน์ • ์ˆ˜์‹ ์ž์—๊ฒŒ ์ง์ ‘ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ฐœํ–‰์ž๊ฐ€ ํŠน์ • ์ฃผ์ œ(Topic)๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๋ฉด ๊ตฌ๋…์ž๊ฐ€ ํ•ด๋‹น ์ฃผ์ œ๋ฅผ ๊ตฌ๋…ํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋Š์Šจํ•œ ๊ฒฐํ•ฉ๊ณผ ๋†’์€ ํ™•์žฅ์„ฑ์„ ๊ฐ–์ถ˜ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Š Kafka์˜ ์ฃผ์š” ํŠน์ง•

  • ํ‰ํ–‰์„ฑ: ๋‹ค์ˆ˜์˜ ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋™์‹œ์— ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์–ด ๋งค์šฐ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ: ๋ธŒ๋กœ์ปค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‰ฝ๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜์—ฌ, ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•ด๋„ ์•ˆ์ •์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ง€์†์„ฑ: ๋ฉ”์‹œ์ง€๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.
  • ๋‚ฎ์€ ์ฒ˜๋ฆฌ ์ง€์—ฐ: ๋ฉ”์‹œ์ง€๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์–ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Kafka์˜ ์‹ค์šฉ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

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

๐Ÿš€ ๊ฒฐ๋ก 

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

๋Œ“๊ธ€

๊ฐ€์žฅ ๋งŽ์ด ๋ณธ ๊ธ€