๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ“š ์‹œ๋ฆฌ์ฆˆ/- ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ ๋ฐฐ์›Œ๋ณด๋Š” kafka

[ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ ๋ฐฐ์›Œ๋ณด๋Š” kafka] 2. ์นดํ”„์นด ์ปจ์…‰ ๋น ๋ฅด๊ฒŒ ์•Œ์•„๋ณด๊ธฐ

by Wonit 2023. 9. 7.

ํ•ด๋‹น ์‹œ๋ฆฌ์ฆˆ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ์†Œ์Šค์ฝ”๋“œ๋Š” github repository ์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ฝ”๋“œ์™€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” github repository ์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

 

GitHub - my-research/kafka: apache kafka docs & practical usages(with spring) that i composed

apache kafka docs & practical usages(with spring) that i composed - GitHub - my-research/kafka: apache kafka docs & practical usages(with spring) that i composed

github.com

์ด๋ฒˆ [ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ ๋ฐฐ์›Œ๋ณด๋Š” kafka] ์‹œ๋ฆฌ์ฆˆ๋Š” ์•„๋ž˜ ์ˆœ์„œ๋Œ€๋กœ ์ฑ•ํ„ฐ๊ฐ€ ๊ตฌ์„ฑ๋˜๊ณ , ์‹œ๋ฆฌ์ฆˆ ์™ธ๋กœ kafka ๊ด€๋ จํ•˜์—ฌ ๋”์šฑ ๋งŽ์€ ํ•™์Šต ์ •๋ณด๋Š” kafka ์‹ฌํ™” ์„ธ์…˜ ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋ฆฌ์ฆˆ ๋ชฉ์ฐจ

  1. ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ
  2. kafka ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด๊ณ  ์•„๋Š”์ฒดํ•˜๊ธฐ
  3. kafka ์ปจ์…‰๊ณผ ์šฉ์–ด ์ •๋ฆฌ <-- ํ˜„์žฌ ๊ธ€
  4. ํ•™์Šตํ…Œ์ŠคํŠธ ์ค€๋น„ํ•˜๊ธฐ
  5. ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ kafka producer ์•Œ์•„๋ณด๊ธฐ
  6. ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ kafka consumer ์•Œ์•„๋ณด๊ธฐ
  7. ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ partitioning ์•Œ์•„๋ณด๊ธฐ
  8. ํ•™์Šต ํ…Œ์ŠคํŠธ๋กœ consumer group ๊ณผ rebalancing ์•Œ์•„๋ณด๊ธฐ

ํ•™์Šต์˜ ๋‹จ๊ณ„๋ณ„ ์ˆœ์„œ๋กœ ๋ชฉ์ฐจ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ์„ ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ฑ•ํ„ฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค


์ด๋ฒˆ ์ฑ•ํ„ฐ์—์„œ๋Š” kafka ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค

์˜ค๋Š˜์˜ ๋ชฉํ‘œ๋Š” ์•ž์„  ๋ชฉํ‘œ์™€ ๋™์ผํ•˜๊ฒŒ ์ด ๊ธ€๋งŒ ๋ณด๊ณ ๋„ ์–ด๋””๊ฐ€์„œ ์นดํ”„์นด์— ๋Œ€ํ•ด์„œ ์•„๋Š”์ฒด ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ตœ๋Œ€ํ•œ ํ•ต์‹ฌ๋งŒ ์ •ํ™•ํžˆ ๊ตฌ์„ฑํ•˜๋ ค ๋…ธ๋ ฅํ•˜์˜€์œผ๋‹ˆ ์งง๊ณ  ๋น ๋ฅด๊ฒŒ ์ง‘์ค‘ํ•ด์„œ ์ฝ๊ณ  ์–ด๋””๊ฐ€์„œ ์•„๋Š”์ฒ™ํ•˜์ž

 

์นดํ”„์นด์˜ 6๊ฐ€์ง€์˜ ํ•ต์‹ฌ ์š”์†Œ

 

์นดํ”„์นด๋Š” ๋ฌธ์„œ(Introduction of kafka's terminology์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ํฌ๊ฒŒ 6๊ฐ€์ง€์˜ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

  1. ์นดํ”„์นด์˜ ํ•ต์‹ฌ ์„œ๋ฒ„, broker
  2. ์นดํ”„์นด์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ํ…Œ์ด๋ธ”, topic
  3. ์นดํ”„์นด์˜ ์—…์ŠคํŠธ๋ฆผ ํด๋ผ์ด์–ธํŠธ, producer
  4. ์นดํ”„์นด์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ํด๋ผ์ด์–ธํŠธ, consumer
  5. ์นดํ”„์นด์˜ ์‹ค์งˆ์ ์ธ ๋ฉ”์‹œ์ง€ ํ, partition
  6. ์นดํ”„์นด์˜ ํ•ต์‹ฌ ์•ˆ์ „์š”์†Œ, replication

 

์นดํ”„์นด๋Š” ์œ„์˜ 6๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง• ์ธํ”„๋ผ๋ฅผ TCP ๋„คํŠธ์›Œํฌ ์œ„์—์„œ ์ œ๊ณตํ•œ๋‹ค.

 

 

์œ„ ๊ทธ๋ฆผ์€ ์•ž์„  6๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํ‘œํ˜„ํ•œ ๊ทธ๋ฆผ์ด๋‹ค.

 

์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์š”์•ฝํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. ์ •๋ง ๋ฐ”์˜๋‹ค๋ฉด!! ์ด ์š”์•ฝ๋งŒ ๋ณด๊ณ  ๋„˜์–ด๊ฐ€๋„ ์ข‹๋‹ค.

 

์–ด์ฐจํ”ผ ์ถ”ํ›„์— ์šฐ๋ฆฌ๊ฐ€ ํ•™์Šตํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ํ•ญ๋ชฉ๋“ค์— ๋Œ€ํ•ด์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ณ  ์ง€๊ธˆ ์‹œ๊ฐ„์€ ์˜ˆ์—ด์ฏค์œผ๋กœ ์ƒ๊ฐํ•˜์ž

 

  • broker
    • ์นดํ”„์นด ๋ธŒ๋กœ์ปค, ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ
    • ์นดํ”„์นด๋กœ ๋“ค์–ด์˜ค๋Š” ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ์˜ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋ฒ„
    • ํ† ํ”ฝ, ํŒŒํ‹ฐ์…˜, ๋ณต์ œ๋“ฑ์„ ๊ด€๋ฆฌ
  • topic
    • ์ด๋ฒคํŠธ์˜ ์นดํ…Œ๊ณ ๋ฆฌ
    • ์ด๋ฒคํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋‹จ์œ„
    • ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„
  • producer
    • ํ† ํ”ฝ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์‚ฐ
    • ํŠน์ • ํŒŒํ‹ฐ์…˜์—๋„ ์ƒ์‚ฐ ๊ฐ€๋Šฅ
  • consumer
    • ํ† ํ”ฝ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„
    • ํŠน์ • ํŒŒํ‹ฐ์…˜์—๋„ ์†Œ๋น„ ๊ฐ€๋Šฅ
  • partition
    • ์นดํ”„์นด ํ† ํ”ฝ์— ์กด์žฌํ•˜๋Š” ์‹ค์ œ ๋ฉ”์‹œ์ง€ ์ €์žฅ์†Œ

 

1. ์นดํ”„์นด์˜ ํ•ต์‹ฌ ์„œ๋ฒ„, broker

Kafka ์˜ broker ๋Š” ์•ž์„œ Message Oriented Middleware๊ณผ Message Broker์˜ ์ฐจ์ด ๋ฐ ์›๋ฆฌ ๋ผ๋Š” ๊ธ€์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ message broker ์™€ ๋™์ผํ•œ ๊ฐœ๋…์œผ๋กœ message provider ๋‹ค.

 

์นดํ”„์นด ๋ธŒ๋กœ์ปค๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ํŠน์ •ํ•œ upstream producer ๋กœ ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์„ ์ €์žฅํ•˜๋Š” ์„œ๋ฒ„์ด๋‹ค.

 

์นดํ”„์นด ๋ธŒ๋กœ์ปค๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ๋ ˆ์ด์–ด ์„œ๋ฒ„์ธ๋ฐ, ํ•ด๋‹น ์‹œ๋ฆฌ์ฆˆ์˜ ์•ž์„  ํŒŒํŠธ 1. ์นดํ”„์นด ํ•ต์‹ฌ ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด๊ณ  ์•„๋Š”์ฒดํ•˜๊ธฐ ์ด์•ผ๊ธฐํ–ˆ๋˜ log based architecture ๋ฅผ ์œ„ํ•œ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

์นดํ”„์นด ๋ธŒ๋กœ์ปค๋Š” ์‚ฌ์‹ค์ƒ ์นดํ”„์นด ์ธํ”„๋ผ์˜ ํ•ต์‹ฌ์ด๊ณ  ์‹ฌ์žฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•„๋ž˜์—์„œ ์ด์•ผ๊ธฐํ•  ํŒŒํ‹ฐ์…˜๊ณผ ๋ฆฌํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ๋„ ํ•˜๋ฉฐ producer ์™€ consumer ๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜ค๋Š” read/write request ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค

 

๋งŽ์€ ์ผ์„ ํ•˜๋Š”๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ confluent ๊ฐ€ ์ œ๊ณตํ•˜๋Š” kafka 101 ์ด๋ผ๋Š” ํ•™์Šต์šฉ ์˜์ƒ์—์„œ๋Š” kafka broker dont do a lot, They are intentionally kept very simple ๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ฒˆ์™ธ๋กœ, ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋ผ๋Š” ์šฉ์–ด๋„ ๋งŽ์ด ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค

 

์ด ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์นดํ”„์นด ๋ธŒ๋กœ์ปค๋“ค์„ ๋ฌถ์–ด๋†“์€ ๊ฐœ๋…์ด๋‹ค.

 

์ฆ‰, ์šฐ๋ฆฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ•œ ๋ธŒ๋กœ์ปค์— connection ์„ ๋งบ์–ด ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์žฌ๋ฏธ์žˆ๋Š” ํŠน์ง•์œผ๋กœ๋Š” ์นดํ”„์นด ๋ธŒ๋กœ์ปค๋Š” bootstrap server ๋กœ์„œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

bootstrap ์€ ์ผ๋ฐ˜์ ์œผ๋กœ initialize ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ดˆ๊ธฐํ™” ๋ฐ์ดํ„ฐ ํ˜น์€ ์‹คํ–‰์„ ์œ„ํ•œ ์ดˆ๊ธฐ ์„ค์ • ๋‹จ๊ณ„์˜ ์ž‘์—…์„ ์ด์•ผ๊ธฐํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ํŠน์ • ๋ธŒ๋กœ์ปค๊ฐ€ bootstrap server ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค๋“ค๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฐ๊ฒฐ๋œ ๋ธŒ๋กœ์ปค๋“ค ์ž์ฒด๊ฐ€ bootstraping ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

confluent.io

 

๊ทธ๋ž˜์„œ ํด๋Ÿฌ์Šคํ„ฐ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ธŒ๋กœ์ปค ํ•˜๋‚˜ ํ•˜๋‚˜๊ฐ€ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋Œ€ํ‘œ ๋ธŒ๋กœ์ปค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. (์ด ํŠน์„ฑ์ด ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ง€์›ํ•˜๋Š” ํŠน์„ฑ์ด ๋œ๋‹ค)

 

๊ฒฐ๊ตญ ํด๋ผ์ด์–ธํŠธ๋Š” ํŠน์ • ๋ธŒ๋กœ์ปค์— ์ ‘์†ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ (๋ธŒ๋กœ์ปค ๋ชฉ๋ก, ํ† ํ”ฝ ์ •๋ณด ๋“ฑ)์„ ๊ฐ€์ ธ์˜ค๊ณ  ์ด ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค๋“ค๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

2. ์นดํ”„์นด์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ํ…Œ์ด๋ธ”, topic

 

topic ์€ ์นดํ…Œ๊ณ ๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

kafka ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋“ค์— ๋Œ€ํ•ด์„œ ํ† ํ”ฝ์ด๋ผ๋Š” ๋‹จ์œ„๋กœ categorizing ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ storing ํ•œ๋‹ค.

 

์ด๋ฒคํŠธ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ๋‹จ์œ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ณ , ํ† ํ”ฝ์„ ํŒŒ์ผ์‹œ์Šคํ…œ์œผ๋กœ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ด๋‹ค.

 

ํ† ํ”ฝ์ด ๋””๋ ‰ํ† ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด๋ฒคํŠธ๋“ค์€ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ํŒŒ์ผ๋“ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค

 

.
โ”œโ”€โ”€ order.ordered <- topic
โ”‚   โ”œโ”€โ”€ event-1
โ”‚   โ”œโ”€โ”€ event-2
โ”‚   โ”œโ”€โ”€ event-3
โ”‚   โ”œโ”€โ”€ event-4
โ”œโ”€โ”€ member.terminated <- topic
โ”‚   โ”œโ”€โ”€ event-1
โ”‚   โ”œโ”€โ”€ event-2
โ”‚   โ””โ”€โ”€ event-3

 

ํ† ํ”ฝ์€ append only ์ด๋ฉฐ, ์ƒˆ ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ† ํ”ฝ์— ๋“ค์–ด์™€ ์ €์žฅ์ด ๋œ๋‹ค๋ฉด ์ ˆ๋Œ€ ์ˆ˜์ •๋  ์ˆ˜ ์—†๋‹ค.

 

๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ํ ํ˜•์‹์˜ ๋ฉ”์‹œ์ง• ์ธํ”„๋ผ์™€ ๋‹ฌ๋ฆฌ ํ† ํ”ฝ์—๋Š” producer ์™€ consumer ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž

 

์—ญ์‹œ kafka 101 ์˜์ƒ์—์„œ๋Š” ํ† ํ”ฝ์„ queue ๊ฐ€ ์•„๋‹ˆ๋ผ log of events ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค. log ๋ผ๋Š” ์ปจ์…‰์ด ์žˆ๊ธฐ์— immutable, append only ๊ทธ๋ฆฌ๊ณ  seek by offset ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒƒ์ด๋‹ค.

3. ์นดํ”„์นด์˜ ์—…์ŠคํŠธ๋ฆผ ํด๋ผ์ด์–ธํŠธ, producer

 

producer ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ƒ์‚ฐํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋‹ค.

 

๋ณดํ†ต upstream ํ˜น์€ ์ƒ์‚ฐ์ž ํ˜น์€ publisher ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, producer ๊ฐ€ topic ์— ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค

 

 

ํ”„๋กœ๋“€์„œ๋Š” ์›ํ•œ๋‹ค๋ฉด ํŠน์ • topic ๋‚ด์˜ partition ์—๋„ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค

 

์ž์„ธํ•œ ๊ฒƒ์€ ํ›„์— ์žˆ์„ ํ”„๋กœ๋“€์„œ ํŒŒํŠธ์—์„œ ๋” ์ด์•ผ๊ธฐํ•˜๋„๋ก ํ•˜์ž

 

4. ์นดํ”„์นด์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ํด๋ผ์ด์–ธํŠธ, consumer

 

consumer ๋Š” ์นดํ”„์นด์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์†Œ๋น„ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋‹ค.

 

์—ญ์‹œ consumer ๋ฅผ downstream, ์†Œ๋น„์ž ํ˜น์€ subscriber ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

 

consumer ๋Š” ํŠน์ • ํ† ํ”ฝ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ฝ๊ณ  ์–ด๋””๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์˜คํ”„์…‹ ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

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

 

์ž์„ธํ•œ ๊ฒƒ์€ ์—ญ์‹œ ํ›„์— ์žˆ์„ ์ปจ์Šˆ๋จธ ํŒŒํŠธ์—์„œ ๋” ์ด์•ผ๊ธฐํ•˜๋„๋ก ํ•˜์ž

 

5. ์นดํ”„์นด์˜ ์‹ค์งˆ์ ์ธ ์ €์žฅ์†Œ, partition

 

์–ด๋– ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์‚ฐ์ž์— ์˜ํ•ด์„œ publish ๋œ๋‹ค๋ฉด, ์‹ค์ œ๋กœ๋Š” ํ† ํ”ฝ์— ์ €์žฅ๋˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ† ํ”ฝ์— ์กด์žฌํ•˜๋Š” ํŠน์ • ํŒŒํ‹ฐ์…˜์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์นดํ”„์นด๋Š” ํ•˜๋‚˜์˜ ํ† ํ”ฝ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆฐ๋‹ค.

 

6. ์นดํ”„์นด์˜ ํ•ต์‹ฌ ์•ˆ์ „์š”์†Œ, replication

 

์•ž์ „์— ์นดํ”„์นด๋Š” high availability ์™€ scalability ๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ทธ ํ•ต์‹ฌ ์š”์†Œ๊ฐ€ ๋ฐ”๋กœ ์ด replication ์ด๋‹ค.

 

์นดํ”„์นด์—์„œ replication ์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค๋ฉด ๋ชจ๋“  ํ† ํ”ฝ์„ ๋ณต์ œํ•˜์—ฌ ์žฅ์• ์— ๋Œ€ํ•œ ๋‚ด๊ฒฐํ•จ์„ ๊ฐ–๋„๋ก ํ•œ๋‹ค.

 

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์นดํ”„์นด ๋ธŒ๋กœ์ปค๋กœ ๋“ค์–ด์™”์„ ๋•Œ ์–ด๋Š ํ•œ ํ† ํ”ฝ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ธ๋‹ค๋ฉด replication ์— ์˜ํ•ด์„œ ๋ณต์ œ๋ณธ ํ† ํ”ฝ์— ๊ฐ™์ด ์Œ“์ด๊ฒŒ ๋œ๋‹ค.