๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด

์ž‘์€ ์ฑ…์˜ ๋ฒˆ์—ญ ๊ณ„์†:
๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด
์ €์ž: Jakub Korab, ๋ฐœํ–‰์ธ: O'Reilly Media, Inc., ๋ฐœํ–‰์ผ: 2017๋…„ 9781492049296์›”, ISBN: XNUMX.

์ด์ „ ๋ฒˆ์—ญ ๋ถ€๋ถ„: ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. 1 ์žฅ ์†Œ๊ฐœ

์ œ 3 ์žฅ

์นดํ”„์นด

Kafka๋Š” ๊ธฐ์กด ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์˜ ์ผ๋ถ€ ์ œํ•œ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ง€์  ๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋„๋ก LinkedIn์—์„œ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€ LinkedIn์€ ํŽ˜์ด์ง€ ํด๋ฆญ ๋ฐ ์•ก์„ธ์Šค ๋กœ๊ทธ์™€ ๊ฐ™์€ ๋งค์šฐ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ๋ฐฉํ–ฅ ์ˆ˜์ง‘์— ํฌ๊ฒŒ ์˜์กดํ•˜๋ฉด์„œ ์ƒ์‚ฐ์ž๋‚˜ ๋‹ค๋ฅธ ์†Œ๋น„์ž์˜ ์ƒ์‚ฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ Kafka๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” Universal Data Pipeline์ด ์„ค๋ช…ํ•˜๋Š” ์ผ์ข…์˜ ๋ฉ”์‹œ์ง• ์•„ํ‚คํ…์ฒ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ถ๊ทน์ ์ธ ๋ชฉํ‘œ๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹ค๋ฅธ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. Kafka๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋งค์šฐ ๋น ๋ฅด๊ฒŒ
  • ๋ฉ”์‹œ์ง€ ์ž‘์—… ์‹œ ๋” ๋งŽ์€ ๋Œ€์—ญํญ ์ œ๊ณต
  • Publisher-Subscriber ๋ฐ Point-to-Point ๋ชจ๋ธ ์ง€์›
  • ์†Œ๋น„์ž ์ถ”๊ฐ€๋กœ ์†๋„๋ฅผ ๋Šฆ์ถ”์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ActiveMQ์—์„œ ๋Œ€๊ธฐ์—ด๊ณผ ์ฃผ์ œ์˜ ์„ฑ๋Šฅ์€ ๋Œ€์ƒ์˜ ์†Œ๋น„์ž ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ์ง€์†ํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ธŒ๋กœ์ปค๊ฐ€ ์ตœ๋Œ€ ๋””์Šคํฌ ์†๋„์—์„œ๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋‹จ์ผ ๋ธŒ๋กœ์ปค ์ธ์Šคํ„ด์Šค๋ฅผ ๋„˜์–ด์„œ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.
  • ๋ฉ”์‹œ์ง€ ์ €์žฅ ๋ฐ ์žฌ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œํ•œ

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

ํ†ตํ•ฉ ๋Œ€์ƒ ๋ชจ๋ธ

์œ„์—์„œ ์„ค๋ช…ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด Kafka๋Š” ๊ฒŒ์‹œ-๊ฐ€์ž… ๋ฐ ์ง€์  ๊ฐ„ ๋ฉ”์‹œ์ง•์„ ํ•œ ์ข…๋ฅ˜์˜ ๋Œ€์ƒ์œผ๋กœ ๊ฒฐํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์ œ. ์ด๋Š” "์ฃผ์ œ"๋ผ๋Š” ๋‹จ์–ด๊ฐ€ (์ฃผ์ œ์—์„œ) ์ฝ๊ธฐ๊ฐ€ ์ง€์†๋˜์ง€ ์•Š๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์œผ๋กœ ์ž‘์—…ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. Kafka ํ† ํ”ฝ์€ ์ด ์ฑ…์˜ ์†Œ๊ฐœ์— ์ •์˜๋œ ๋Œ€๋กœ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Œ€์ƒ ์œ ํ˜•์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์žฅ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์—์„œ๋Š” ๋‹ฌ๋ฆฌ ๋ช…์‹œ์ ์œผ๋กœ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๋Š” ํ•œ "์ฃผ์ œ"๋ผ๋Š” ์šฉ์–ด๋Š” Kafka ์ฃผ์ œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

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

"๋กœ๊ทธ" ๋ฐ "ํฌ์ธํ„ฐ"๋ผ๋Š” ์šฉ์–ด๋Š” ์นดํ”„์นด ๋ฌธ์„œ. ์—ฌ๊ธฐ์—์„œ๋Š” ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ์ž˜ ์•Œ๋ ค์ง„ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์€ ๋ชจ๋“  ๋Œ€๊ธฐ์—ด์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋™์ผํ•œ ๋กœ๊ทธ์— ์ €์žฅ๋˜๊ณ  ๋ธŒ๋กœ์ปค๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์€ ํ›„ ์‚ญ์ œ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ActiveMQ์™€ ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
์ด์ œ ์กฐ๊ธˆ ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€ ์ฃผ์ œ ๋กœ๊ทธ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
Kafka ๋กœ๊ทธ๋Š” ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜(๊ทธ๋ฆผ 3-1). Kafka๋Š” ๊ฐ ํŒŒํ‹ฐ์…˜์—์„œ ์—„๊ฒฉํ•œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŠน์ • ์ˆœ์„œ๋กœ ํŒŒํ‹ฐ์…˜์— ๊ธฐ๋ก๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ์ฝํ˜€์ง„๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒŒํ‹ฐ์…˜์€ ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ๋กค๋ง ๋กœ๊ทธ ํŒŒ์ผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„ ์ง‘ํ•ฉ (ํ•˜์œ„ ์ง‘ํ•ฉ) ์ƒ์„ฑ์ž๊ฐ€ ์ฃผ์ œ๋กœ ๋ณด๋‚ธ ๋ชจ๋“  ๋ฉ”์‹œ์ง€์˜ ์ƒ์„ฑ๋œ ์ฃผ์ œ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜์˜ ์•„์ด๋””์–ด๋Š” ์ˆ˜ํ‰ ํ™•์žฅ์„ ์œ„ํ•œ Kafka์˜ ํ•ต์‹ฌ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด
๊ทธ๋ฆผ 3-1. ์นดํ”„์นด ํŒŒํ‹ฐ์…˜

์ƒ์‚ฐ์ž๊ฐ€ Kafka ์ฃผ์ œ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ํŒŒํ‹ฐ์…˜์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ์ฝ๊ธฐ

๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์œผ๋ ค๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ๋ช…๋ช…๋œ ํฌ์ธํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์†Œ๋น„์ž ๊ทธ๋ฃน, ์ด๋Š” ๋‹ค์Œ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์˜คํ”„์…‹ ํŒŒํ‹ฐ์…˜์˜ ๋ฉ”์‹œ์ง€. ์˜คํ”„์…‹์€ ํŒŒํ‹ฐ์…˜ ์‹œ์ž‘ ์‹œ 0์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์ฆ๋ถ„ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ group_id๋ฅผ ํ†ตํ•ด API์—์„œ ์ฐธ์กฐ๋˜๋Š” ์ด ์†Œ๋น„์ž ๊ทธ๋ฃน์€ ๋‹ค์Œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ์†Œ๋น„์ž ๋˜๋Š” ์‹œ์Šคํ…œ.

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

์ฝ๊ธฐ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์ œ์— ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์ด ์žˆ์Œ
  • ์—ฌ๋Ÿฌ ์†Œ๋น„์ž ๊ทธ๋ฃน์ด ๋™์‹œ์— ์ฃผ์ œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œ๋น„์ž ๊ทธ๋ฃน์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ๋‹ค๋Œ€๋‹ค ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Kafka๊ฐ€ ์†Œ๋น„์ž ๊ทธ๋ฃน, ์†Œ๋น„์ž ์ธ์Šคํ„ด์Šค ๋ฐ ํŒŒํ‹ฐ์…˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ ์ง„์ ์œผ๋กœ ๋” ๋ณต์žกํ•œ ์ผ๋ จ์˜ ์ฝ๊ธฐ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์†Œ๋น„์ž ๋ฐ ์†Œ๋น„์ž ๊ทธ๋ฃน

ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜(๊ทธ๋ฆผ 3-2).

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด
๊ทธ๋ฆผ 3-2. ์†Œ๋น„์ž๊ฐ€ ํŒŒํ‹ฐ์…˜์—์„œ ์ฝ์Œ

์†Œ๋น„์ž ์ธ์Šคํ„ด์Šค๊ฐ€ ์ž์ฒด group_id๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ฃผ์ œ์— ์—ฐ๊ฒฐํ•˜๋ฉด ์ฝ๊ธฐ ํŒŒํ‹ฐ์…˜๊ณผ ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์˜ ์˜คํ”„์…‹์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด ์˜คํ”„์…‹์˜ ์œ„์น˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ€์žฅ ์ตœ๊ทผ ์œ„์น˜(์ตœ์‹  ๋ฉ”์‹œ์ง€) ๋˜๋Š” ๊ฐ€์žฅ ์ดˆ๊ธฐ ์œ„์น˜(๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฉ”์‹œ์ง€)์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์†Œ๋น„์ž๋Š” ์ฃผ์ œ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญ(ํด๋ง)ํ•˜์—ฌ ๋กœ๊ทธ์—์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค.
์˜คํ”„์…‹ ์œ„์น˜๋Š” ์ •๊ธฐ์ ์œผ๋กœ Kafka์— ๋‹ค์‹œ ์ปค๋ฐ‹๋˜๊ณ  ๋‚ด๋ถ€ ์ฃผ์ œ์— ๋ฉ”์‹œ์ง€๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. _์†Œ๋น„์ž_์˜คํ”„์…‹. ์ผ๋ฐ˜ ๋ธŒ๋กœ์ปค์™€ ๋‹ฌ๋ฆฌ ์ฝ์€ ๋ฉ”์‹œ์ง€๋Š” ์—ฌ์ „ํžˆ ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฉฐ ํด๋ผ์ด์–ธํŠธ๋Š” ์˜คํ”„์…‹์„ ๋˜๊ฐ์•„ ์ด๋ฏธ ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋…ผ๋ฆฌ์  ์†Œ๋น„์ž๊ฐ€ ๋‹ค๋ฅธ group_id๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ๋•Œ ์ฒซ ๋ฒˆ์งธ(๊ทธ๋ฆผ 3-3). ๋”ฐ๋ผ์„œ Kafka ํ† ํ”ฝ์€ ํ•˜๋‚˜์˜ ์†Œ๋น„์ž๊ฐ€ ์žˆ๋Š” ๋Œ€๊ธฐ์—ด๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๊ณ  ์—ฌ๋Ÿฌ ์†Œ๋น„์ž๊ฐ€ ๊ตฌ๋…ํ•˜๋Š” ์ผ๋ฐ˜ ๊ฒŒ์‹œ-๊ตฌ๋…(pub-sub) ํ† ํ”ฝ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋ฉฐ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๊ฐ€ ์ €์žฅ๋˜๊ณ  ์—ฌ๋Ÿฌ ๋ฒˆ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ถ”๊ฐ€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด
๊ทธ๋ฆผ 3-3. ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ๋น„์ž ๊ทธ๋ฃน์˜ ๋‘ ์†Œ๋น„์ž๊ฐ€ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

์†Œ๋น„์ž ๊ทธ๋ฃน์˜ ์†Œ๋น„์ž

ํ•˜๋‚˜์˜ ์†Œ๋น„์ž ์ธ์Šคํ„ด์Šค๊ฐ€ ํŒŒํ‹ฐ์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ํฌ์ธํ„ฐ๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•˜๊ณ  ์ด์ „ ์„น์…˜์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์†Œ๋น„์ž์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์ด ์žˆ๋Š” ์ฃผ์ œ์— ๋™์ผํ•œ group_id๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ธ์Šคํ„ด์Šค์— ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์ด ๋ถ€์—ฌ๋˜๊ณ  ๊ทธ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3-4).

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด
๊ทธ๋ฆผ 3-4. ๋™์ผํ•œ ์†Œ๋น„์ž ๊ทธ๋ฃน์˜ ๋‘ ์†Œ๋น„์ž๊ฐ€ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

์†Œ๋น„์ž ์ธ์Šคํ„ด์Šค ์ˆ˜๊ฐ€ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ด๋Ÿฌํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ์ผ์ข…์˜ ๋…์  ์†Œ๋น„์ž๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์†Œ๋น„์ž ์ธ์Šคํ„ด์Šค์˜ "ํ™œ์„ฑ-์ˆ˜๋™"(๋˜๋Š” "hot-warm") ํด๋Ÿฌ์Šคํ„ฐ๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ‘๋ ฌ๋กœ ์—ฌ๋Ÿฌ ์†Œ๋น„์ž๋ฅผ ์‹คํ–‰("active-active" ๋˜๋Š” "hot-hot")ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ธฐ ์ค‘์ž…๋‹ˆ๋‹ค.

์œ„์—์„œ ์„ค๋ช…ํ•œ ์ด ๋ฉ”์‹œ์ง€ ๋ฐฐํฌ ๋™์ž‘์€ ์ผ๋ฐ˜ JMS ๋Œ€๊ธฐ์—ด์˜ ๋™์ž‘ ๋ฐฉ์‹๊ณผ ๋น„๊ตํ•  ๋•Œ ๋†€๋ผ์šด ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์—์„œ ๋Œ€๊ธฐ์—ด๋กœ ์ „์†ก๋œ ๋ฉ”์‹œ์ง€๋Š” ๋‘ ์†Œ๋น„์ž ์‚ฌ์ด์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

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

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

Kafka์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ •์‹ ๋ฐฉ๋ฒ•์€ b๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.ะž๋” ๋งŽ์€ ํŒŒํ‹ฐ์…˜.

ํŒŒํ‹ฐ์…”๋‹

ํŒŒํ‹ฐ์…˜์€ ๋‹จ์ผ ๋ธŒ๋กœ์ปค ์ธ์Šคํ„ด์Šค์˜ ๋Œ€์—ญํญ์„ ๋„˜์–ด ์ฃผ์ œ ์ฝ๊ธฐ ๋ฐ ํ™•์žฅ์„ ๋ณ‘๋ ฌํ™”ํ•˜๋Š” ์ฃผ์š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ์žˆ๋Š” ์ฃผ์ œ๊ฐ€ ์žˆ๊ณ  ํ•œ ๋ช…์˜ ์†Œ๋น„์ž๊ฐ€ ์ด ์ฃผ์ œ๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3-5).

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด
๊ทธ๋ฆผ 3-5. ํ•œ ์†Œ๋น„์ž๊ฐ€ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์—์„œ ์ฝ์Œ

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์†Œ๋น„์ž๋Š” ๋‘ ํŒŒํ‹ฐ์…˜์˜ group_id์— ํ•ด๋‹นํ•˜๋Š” ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ๋ถ€์—ฌ๋ฐ›๊ณ  ๋‘ ํŒŒํ‹ฐ์…˜์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
๋™์ผํ•œ group_id์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์†Œ๋น„์ž๊ฐ€ ์ด ์ฃผ์ œ์— ์ถ”๊ฐ€๋˜๋ฉด Kafka๋Š” ํŒŒํ‹ฐ์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฒซ ๋ฒˆ์งธ ์†Œ๋น„์ž์—์„œ ๋‘ ๋ฒˆ์งธ ์†Œ๋น„์ž๋กœ ์žฌํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์†Œ๋น„์ž์˜ ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” ์ฃผ์ œ์˜ ํ•œ ํŒŒํ‹ฐ์…˜์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆผ 3-6).

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

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์ œ3์žฅ ์นดํ”„์นด
๊ทธ๋ฆผ 3-6. ๋™์ผํ•œ ์†Œ๋น„์ž ๊ทธ๋ฃน์˜ ๋‘ ์†Œ๋น„์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

์ด ์ฒด๊ณ„๋Š” JMS ๋Œ€๊ธฐ์—ด์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฉ”์‹œ์ง€ ๋ฐฐํฌ์— ๋น„ํ•ด Kafka ๋ธŒ๋กœ์ปค์˜ ๋ณต์žก์„ฑ์„ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ผ์šด๋“œ ๋กœ๋นˆ ํ• ๋‹น, ํ”„๋ฆฌํŽ˜์น˜ ๋ฒ„ํผ์˜ ํ˜„์žฌ ์šฉ๋Ÿ‰ ๋˜๋Š” ์ด์ „ ๋ฉ”์‹œ์ง€(JMS ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน์˜ ๊ฒฝ์šฐ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์Œ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•ด์•ผ ํ•˜๋Š” ์†Œ๋น„์ž.
  • ์–ด๋–ค ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋–ค ์†Œ๋น„์ž์—๊ฒŒ ์ „์†ก๋˜๊ณ  ์‹คํŒจ ์‹œ ๋‹ค์‹œ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€.

Kafka ๋ธŒ๋กœ์ปค๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์†Œ๋น„์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์š”์ฒญํ•  ๋•Œ ์†Œ๋น„์ž์—๊ฒŒ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ

๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ํŒŒํ‹ฐ์…˜์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๋‹น ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ์ž์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ดํ•ดํ•˜๋ ค๋ฉด ๋จผ์ € ์‹ค์ œ๋กœ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ๋ณด๋‚ด๋Š”์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

JMS์—์„œ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(ํ—ค๋” ๋ฐ ์†์„ฑ)์™€ ํŽ˜์ด๋กœ๋“œ(ํŽ˜์ด๋กœ๋“œ)๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณธ๋ฌธ์ด ์žˆ๋Š” ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด Kafka์—์„œ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Œ "ํ‚ค-๊ฐ’". ๋ฉ”์‹œ์ง€ ํŽ˜์ด๋กœ๋“œ๋Š” ๊ฐ’์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ํ‚ค๋Š” ์ฃผ๋กœ ํŒŒํ‹ฐ์…”๋‹์— ์‚ฌ์šฉ๋˜๋ฉฐ ๋‹ค์Œ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ํŠน์ • ํ‚ค๊ด€๋ จ ๋ฉ”์‹œ์ง€๋ฅผ ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

2์žฅ์—์„œ๋Š” ๊ด€๋ จ ์ด๋ฒคํŠธ๋ฅผ ๋‹จ์ผ ์†Œ๋น„์ž๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์˜จ๋ผ์ธ ๋ฒ ํŒ… ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž ๊ณ„์ •์ด ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ˆ์ด ๊ณ„์ •์— ์ ๋ฆฝ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ณ„์ขŒ์—์„œ ๋ˆ์„ ์ธ์ถœํ•˜๋Š” ๋‚ด๊ธฐ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๊ฐ ์ด๋ฒคํŠธ๊ฐ€ ์ฃผ์ œ์— ๊ฒŒ์‹œ๋œ ๋ฉ”์‹œ์ง€์ธ ๊ฒฝ์šฐ ์ž์—ฐ ํ‚ค๋Š” ๊ณ„์ • ID์ž…๋‹ˆ๋‹ค.
๋ฉ”์‹œ์ง€๊ฐ€ Kafka Producer API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†ก๋˜๋ฉด ๋ฉ”์‹œ์ง€์™€ Kafka ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ด์•ผ ํ•˜๋Š” ํŒŒํ‹ฐ์…˜์˜ ID๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŒŒํ‹ฐ์…˜ ํ•จ์ˆ˜๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Partitioner ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด Java๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

interface Partitioner {
    int partition(String topic,
        Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
}

Partitioner ๊ตฌํ˜„์€ ํ‚ค์— ๋Œ€ํ•ด ๊ธฐ๋ณธ ๋ฒ”์šฉ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒํ‹ฐ์…˜์„ ๊ฒฐ์ •ํ•˜๊ฑฐ๋‚˜ ํ‚ค๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ผ์šด๋“œ ๋กœ๋นˆ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ๊ฐ’์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•ž์œผ๋กœ๋Š” ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋งŒ์˜ ํŒŒํ‹ฐ์…”๋‹ ์ „๋žต ์ž‘์„ฑ

๋ฉ”์‹œ์ง€ ํŽ˜์ด๋กœ๋“œ์™€ ํ•จ๊ป˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋ ค๋Š” ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ํŽ˜์ด๋กœ๋“œ๋Š” ๊ฒŒ์ž„ ๊ณ„์ •์— ์ž…๊ธˆํ•˜๋ผ๋Š” ์ง€์‹œ์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์€ ์ „์†ก ์‹œ ์ˆ˜์ •๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์—…์ŠคํŠธ๋ฆผ ์‹œ์Šคํ…œ๋งŒ ํ•ด๋‹น ๋ช…๋ น์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์†ก์‹  ๋ฐ ์ˆ˜์‹  ์‹œ์Šคํ…œ์€ ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ฐ˜ JMS์—์„œ๋Š” ๋‹จ์ˆœํžˆ "๋ฉ”์‹œ์ง€ ์„œ๋ช…" ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ  ๋ฉ”์‹œ์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Kafka๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ํ‚ค์™€ ๊ฐ’๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฐ’์€ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋Š” ์€ํ–‰ ์†ก๊ธˆ ํŽ˜์ด๋กœ๋“œ์ด๋ฏ€๋กœ ํ‚ค์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…”๋‹์„ ์œ„ํ•ด ๊ณ„์ • ID๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ณ„์ •๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ JSON ๊ตฌ์กฐ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

{
  "signature": "541661622185851c248b41bf0cea7ad0",
  "accountId": "10007865234"
}

์„œ๋ช… ๊ฐ’์€ ํŽ˜์ด๋กœ๋“œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ Partitioner ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋ณธ ํ•ด์‹ฑ ์ „๋žต์€ ๊ด€๋ จ ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ํ‚ค๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  accountId ๊ฐ’์„ ๋ถ„ํ• ํ•˜๋Š” ์ž์ฒด ์ „๋žต์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Kafka์—๋Š” ์ €์žฅ์†Œ์˜ ๋ฉ”์‹œ์ง€ ์†์ƒ์„ ๊ฐ์ง€ํ•˜๋Š” ์ฒดํฌ์„ฌ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ „์ฒด ๋ณด์•ˆ ๊ธฐ๋Šฅ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์œ„์™€ ๊ฐ™์€ ์‚ฐ์—…๋ณ„ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋•Œ๋•Œ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์˜ ๋ถ„ํ•  ์ „๋žต์€ ๋ชจ๋“  ๊ด€๋ จ ๋ฉ”์‹œ์ง€๊ฐ€ ๋™์ผํ•œ ๋ถ„ํ• ์—์„œ ๋๋‚˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ ๊ด€๋ จ ๋ฉ”์‹œ์ง€ ์ˆœ์„œ ์ง€์ •์˜ ์ค‘์š”์„ฑ๊ณผ ์ฃผ์ œ์˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ณ ์ •๋˜์–ด ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์ œ์˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์ดˆ๊ธฐ ์˜ˆ์ƒ์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง€ ํ‚ค๋Š” ์›๋ž˜ ์ „์†ก๋œ ํŒŒํ‹ฐ์…˜๊ณผ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ƒ์‚ฐ์ž ์ธ์Šคํ„ด์Šค ๊ฐ„์— ๊ณต์œ ํ•  ์ƒํƒœ์˜ ์ผ๋ถ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ณ ๋ คํ•ด์•ผ ํ•  ๋˜ ๋‹ค๋ฅธ ์š”์†Œ๋Š” ํŒŒํ‹ฐ์…˜ ๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ‚ค๋Š” ๋ฉ”์‹œ์ง€ ์ „์ฒด์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ฐฐํฌ๋˜์ง€ ์•Š์œผ๋ฉฐ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ž‘์€ ํ‚ค ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€์˜ ๊ณต์ •ํ•œ ๋ฐฐํฌ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฉ”์‹œ์ง€ ๋ถ„ํ• ์„ ์„ ํƒํ•˜๋”๋ผ๋„ ๊ตฌ๋ถ„์ž ์ž์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋กœ ๋‹ค๋ฅธ ์ง€๋ฆฌ์  ์œ„์น˜์— ์žˆ๋Š” Kafka ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ด๋ฅผ ์œ„ํ•ด Kafka๋Š” ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ  ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” MirrorMaker๋ผ๋Š” ๋ช…๋ น์ค„ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

MirrorMaker๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ„์— ๋ณต์ œํ•  ๋•Œ ๋ฉ”์‹œ์ง€ ๊ฐ„์˜ ์ƒ๋Œ€์  ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณต์ œ๋œ ์ฃผ์ œ์˜ ํ‚ค๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฃผ์ œ์— ๋Œ€ํ•œ ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ๋‘ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋™์ผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

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

JMS ๋ธŒ๋กœ์ปค๋„ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„ JMS ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน(SLB(์Šคํ‹ฐํ‚ค ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ) ์ „๋žต์˜ ๋ณ€ํ˜•)์„ ํ†ตํ•ด ๊ตฌํ˜„๋œ ๋™์ผํ•œ ์†Œ๋น„์ž์—๊ฒŒ ๊ด€๋ จ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜๋„ ๋ฐœ์‹ ์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๊ด€๋ จ์œผ๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JMS์˜ ๊ฒฝ์šฐ ๋ธŒ๋กœ์ปค๋Š” ์ด ๊ด€๋ จ ๋ฉ”์‹œ์ง€ ๊ทธ๋ฃน์„ ์—ฌ๋Ÿฌ ์†Œ๋น„์ž ์ค‘ ํ•˜๋‚˜์˜ ์†Œ๋น„์ž์—๊ฒŒ ๋ณด๋‚ด๊ณ  ์†Œ๋น„์ž๊ฐ€ ๋–จ์–ด์ง€๋ฉด ๊ทธ๋ฃน์˜ ์†Œ์œ ๊ถŒ์„ ์ด์ „ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ƒ์‚ฐ์ž ๊ณ„์•ฝ

๋ถ„ํ• ์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์œ ์ผํ•œ ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. Java API์—์„œ Producer ํด๋ž˜์Šค์˜ send() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Future < RecordMetadata > send(ProducerRecord < K, V > record);
Future < RecordMetadata > send(ProducerRecord < K, V > record, Callback callback);

๋‘ ๋ฉ”์„œ๋“œ ๋ชจ๋‘ ์ „์†ก ์ž‘์—…์ด ์ฆ‰์‹œ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” Future๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ ์— ์ฆ‰์‹œ ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€(ProducerRecord)๊ฐ€ ๊ฐ ํ™œ์„ฑ ํŒŒํ‹ฐ์…˜์˜ ์ „์†ก ๋ฒ„ํผ์— ๊ธฐ๋ก๋˜๊ณ  Kafka ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ๋ธŒ๋กœ์ปค์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†๋„๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋นจ๋ผ์ง€์ง€๋งŒ ๊ฒฝํ—˜์ด ์—†๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์ง€๋˜๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์žƒ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ์ „์†ก ์ž‘์—…์„ ๋ณด๋‹ค ์•ˆ์ •์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋Š” 0์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณด๋‚ด๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์Šค๋ ˆ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ธŒ๋กœ์ปค๋กœ์˜ ๋ฉ”์‹œ์ง€ ์ „์†ก์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ฐ•์ œ๋กœ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.

RecordMetadata metadata = producer.send(record).get();

๋ฉ”์‹œ์ง€ ์ฝ๊ธฐ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

๋ฉ”์‹œ์ง€ ์ฝ๊ธฐ์—๋Š” ์ถ”์ธกํ•ด์•ผ ํ•  ์ถ”๊ฐ€์ ์ธ ๋ณต์žก์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ๊ธฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JMS API์™€ ๋‹ฌ๋ฆฌ ์†Œ๋น„์ž Kafka๋Š” ํˆฌํ‘œ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํˆฌํ‘œ()์ด ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ:

ConsumerRecords < K, V > poll(long timeout);

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

2์žฅ์—์„œ ๋…ผ์˜ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋˜๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€์— ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JMS์—์„œ ์ด๊ฒƒ์€ ํ™•์ธ ๋ชจ๋“œ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋กœ์ปค๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์›์‹œ ๋˜๋Š” ๊ฐ€์งœ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค(ํŠธ๋žœ์žญ์…˜์ด ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •).
Kafka๋Š” ๋งค์šฐ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ต์ • ํ›„ ๋ฉ”์‹œ์ง€๋Š” ๋ธŒ๋กœ์ปค์—์„œ ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฉฐ ์‹คํŒจ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ๊ต์ • ์ฝ”๋“œ ์ž์ฒด์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์†Œ๋น„์ž ๊ทธ๋ฃน์€ ๋กœ๊ทธ์˜ ์˜คํ”„์…‹๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜คํ”„์…‹๊ณผ ๊ด€๋ จ๋œ ๋กœ๊ทธ ์œ„์น˜๋Š” ๋‹ค์Œ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ฐœํ–‰๋  ๋‹ค์Œ ๋ฉ”์‹œ์ง€์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํˆฌํ‘œ(). ์ด ์˜คํ”„์…‹์ด ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ์ ์ด ํŒ๋…์— ๊ฒฐ์ •์ ์ž…๋‹ˆ๋‹ค.

์•ž์—์„œ ์„ค๋ช…ํ•œ ์ฝ๊ธฐ ๋ชจ๋ธ๋กœ ๋Œ์•„๊ฐ€์„œ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋Š” ์„ธ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. ์ฝ์„ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Kafka ์†Œ๋น„์ž๋Š” ๊ตฌ์„ฑ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”.์ž๋™.์ปค๋ฐ‹. ์ด๊ฒƒ์€ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์„ค์ •์ด๋ฉฐ "์ž๋™"์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ์„ค์ •์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kafka 0.10 ์ด์ „์—๋Š” ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์Œ ํ˜ธ์ถœ์—์„œ ์ฝ์€ ๋งˆ์ง€๋ง‰ ๋ฉ”์‹œ์ง€์˜ ์˜คํ”„์…‹์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํˆฌํ‘œ() ์ฒ˜๋ฆฌ ํ›„. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ํŒŒ๊ดด๋œ ๊ฒฝ์šฐ ์ด๋ฏธ ๊ฐ€์ ธ์˜จ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ํˆฌํ‘œ(). ๋ธŒ๋กœ์ปค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์€ ํšŸ์ˆ˜์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋‹ค์Œ ์†Œ๋น„์ž๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ์˜์‚ฌ ํŠธ๋žœ์žญ์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”„์…‹์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ปค๋ฐ‹๋˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด ๋ธŒ๋กœ์ปค๋Š” ๋™์ผํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์— ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ณด์žฅ "์ ์–ด๋„ ํ•œ ๋ฒˆ".

Kafka 0.10์—์„œ๋Š” ๊ตฌ์„ฑ๋œ ๋Œ€๋กœ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ปค๋ฐ‹์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋„๋ก ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. auto.commit.interval.ms. ์ด ๋™์ž‘์€ JMS AUTO_ACKNOWLEDGE์™€ DUPS_OK_ACKNOWLEDGE ๋ชจ๋“œ ์‚ฌ์ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋™ ์ปค๋ฐ‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ปค๋ฐ‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋Š๋ฆฐ ์†Œ๋น„์ž์˜ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ๋น„์ž๊ฐ€ ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ ์ปค๋ฐ‹๋œ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋‹ค์Œ ์†Œ๋น„์ž๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Kafka๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์†์‹คํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ฝ๊ธฐ ์ฝ”๋“œ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“œ๋Š” ๋ฒ„์ „ 0.9์™€ ๋™์ผํ•œ ์•ฝ์†์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹คํŒจํ•  ๊ฒฝ์šฐ ์˜คํ”„์…‹์ด ์ปค๋ฐ‹๋˜์ง€ ์•Š์•„ ์ž ์žฌ์ ์œผ๋กœ ๋ฐฐ๋‹ฌ์ด ๋‘ ๋ฐฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋งŽ์„์ˆ˜๋ก ํˆฌํ‘œ(), ์ด ๋ฌธ์ œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก.

21ํŽ˜์ด์ง€์˜ "๋Œ€๊ธฐ์—ด์—์„œ ๋ฉ”์‹œ์ง€ ์ฝ๊ธฐ"์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์žฅ์•  ๋ชจ๋“œ๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

Kafka์—๋Š” ์˜คํ”„์…‹(offset)์„ ์ปค๋ฐ‹(commit)ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค: ์ž๋™ ๋ฐ ์ˆ˜๋™. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋˜์—ˆ์ง€๋งŒ ์ปค๋ฐ‹ ์ „์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฐœ์ƒํ•˜๊ณ  ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋ฅผ ์ „ํ˜€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์•„๋งˆ๋„ Kafka 0.9 ๋ฐ ์ด์ „ ๋ฒ„์ „์—์„œ).

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ Kafka ์†Œ๋น„์ž API์—์„œ ์ˆ˜๋™ ์˜คํ”„์…‹ ์ปค๋ฐ‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”.์ž๋™.์ปค๋ฐ‹ ๋‹ค์Œ ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ false๋กœ ์ง€์ •ํ•˜๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

void commitSync();
void commitAsync();

"์ ์–ด๋„ ํ•œ ๋ฒˆ" ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜คํ”„์…‹์„ ์ˆ˜๋™์œผ๋กœ ์ปค๋ฐ‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. commitSync()๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ฆ‰์‹œ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ์Šน์ธ๋˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ํŠธ๋žœ์žญ์…˜์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•˜๋ฉด์„œ ์ž ์žฌ์ ์ธ ์ฒ˜๋ฆฌ ์ง€์—ฐ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kafka์—๋Š” ํŠธ๋žœ์žญ์…˜์ด ์—†์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์งœ ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋กค๋ฐฑํ•ฉ๋‹ˆ๋‹ค. ์†Œ๋น„์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์žฌ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋กœ์ปค์— ์˜์กดํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ํŽ˜์ด๋กœ๋“œ ๋ฐ ๋ฐฑ์—”๋“œ ์ค‘๋‹จ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์›์ž์  ์ž‘์—…์œผ๋กœ ์—ฌ๋Ÿฌ ์ฃผ์ œ์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ณง ๋ณด๊ฒŒ ๋˜๊ฒ ์ง€๋งŒ, ์ „์†ก๋  ๋•Œ ํŠธ๋žœ์žญ์…˜์„ ์กฐ์ •ํ•˜์ง€ ์•Š๋Š” Kafka ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ๋‹ค์–‘ํ•œ ์ฃผ์ œ ๋ฐ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ์ œ์–ด๊ฐ€ ์ƒ์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์— KIP-98๋กœ ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ์ฃผ์ œ์—์„œ ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค๋ฅธ ์ฃผ์ œ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์—ฐ๊ด€์‹œํ‚ค์‹ญ์‹œ์˜ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ Kafka์˜ ์•„ํ‚คํ…์ฒ˜๋Š” ํ•˜๋‚˜์˜ ๋ฒ„์Šค๋กœ ์‹คํ–‰๋˜๋Š” ๋งŽ์€ ๋…๋ฆฝ ๋จธ์‹ ์— ์˜์กดํ•˜๋ฉฐ ์ด๋ฅผ ์ˆจ๊ธฐ๋ ค๋Š” ์‹œ๋„๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋งํฌ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” API ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์†Œ๋น„์ž ะธ ํ”„๋กœ๋“€์„œ ๊ฑฐ๋ž˜์—์„œ. JMS์—์„œ ์ด๊ฒƒ์€ ๊ฐ์ฒด์— ์˜ํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์ƒ์„ฑ๋˜๋Š” ๊ฒƒ ๋ฉ”์‹œ์ง€ ์ƒ์‚ฐ์ž ะธ ๋ฉ”์‹œ์ง€ ์†Œ๋น„์ž.

ํŠธ๋žœ์žญ์…˜์— ์˜์กดํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ธฐ์กด ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์˜๋ฏธ ์ฒด๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์†Œ๋น„์ž ์ถฉ๋Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋˜๊ธฐ ์ „์— ์†Œ๋น„์ž์˜ ์˜คํ”„์…‹์ด ์ฆ๊ฐ€ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์†Œ๋น„์ž๋Š” ํŒŒํ‹ฐ์…˜์ด ํ• ๋‹น๋  ๋•Œ ์†Œ๋น„์ž ๊ทธ๋ฃน์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋†“์ณค๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ๊ฐ€์ง€ ์ „๋žต์€ ์˜คํ”„์…‹์„ ์ด์ „ ์œ„์น˜๋กœ ๋˜๊ฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Kafka ์†Œ๋น„์ž API๋Š” ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

void seek(TopicPartition partition, long offset);
void seekToBeginning(Collection < TopicPartition > partitions);

๋ฐฉ๋ฒ• ๊ตฌํ•˜๋‹ค() ๋ฐฉ๋ฒ•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
offsetsForTimes(์ง€๋„ timestampsToSearch) ๊ณผ๊ฑฐ์˜ ํŠน์ • ์‹œ์ ์œผ๋กœ ๋˜๊ฐ๊ธฐ.

์•”๋ฌต์ ์œผ๋กœ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „์— ์ฒ˜๋ฆฌ๋œ ์ผ๋ถ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ์ฝ๊ณ  ์ฒ˜๋ฆฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด 4์žฅ์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ๋ฉฑ๋“ฑ์„ฑ ์ฝ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „์— ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ฐœ์ธ์ ์ธ ๊ด€์ฐฐ์— ๋”ฐ๋ฅด๋ฉด ๋ฉ”์‹œ์ง€์˜ ๊ฐ•๋„๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๊ฐ ๊ฐœ๋ณ„ ๋ฉ”์‹œ์ง€์˜ ๊ฐ€์น˜๋Š” ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ํฐ ๋ฉ”์‹œ์ง€๋Š” ์ง‘๊ณ„๋œ ํ˜•์‹์œผ๋กœ ๋ณผ ๋•Œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ฐ€์šฉ์„ฑ

๊ณ ๊ฐ€์šฉ์„ฑ์— ๋Œ€ํ•œ Kafka์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ActiveMQ์˜ ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Kafka๋Š” ๋ชจ๋“  ๋ธŒ๋กœ์ปค ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์‹œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ์Šค์ผ€์ผ ์•„์›ƒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Kafka ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ๋ธŒ๋กœ์ปค ์ธ์Šคํ„ด์Šค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Kafka๋Š” ๊ฐ ๋…ธ๋“œ์— ์ „์šฉ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์žˆ๋Š” ์ผ๋ฐ˜ ๋…๋ฆฝํ˜• ํ•˜๋“œ์›จ์–ด์—์„œ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SAN(Network Attached Storage) ์‚ฌ์šฉ์€ ์—ฌ๋Ÿฌ ์ปดํ“จํŒ… ๋…ธ๋“œ๊ฐ€ ์‹œ๊ฐ„์„ ๋†“๊ณ  ๊ฒฝ์Ÿํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.ะซ์ „์ž ์ €์žฅ ๊ฐ„๊ฒฉ ๋ฐ ์ถฉ๋Œ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์นดํ”„์นด๋Š” ํ•ญ์ƒ ์ผœ์ ธ ์ฒด๊ณ„. ๋งŽ์€ ๋Œ€๊ทœ๋ชจ Kafka ์‚ฌ์šฉ์ž๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ข…๋ฃŒํ•˜์ง€ ์•Š์œผ๋ฉฐ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ•ญ์ƒ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ธŒ๋กœ์ปค ๊ฐ„์˜ ๋ฉ”์‹œ์ง€ ๋ฐ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•ด ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•จ์œผ๋กœ์จ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ๋œ ๋ธŒ๋กœ์ปค ์ฃผ ํ‚คํผ, ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์—ญํ• ์„ ํ•˜๋ฉฐ ๊ฐ ๋ธŒ๋กœ์ปค์˜ ์—ญํ• ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ZooKeeper ์ž์ฒด๋Š” ์ •๋ณด์˜ ๋ณต์ œ๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ •์กฑ์ˆ˜.

๊ธฐ๋ณธ ์‚ฌ๋ก€์—์„œ ์ฃผ์ œ๋Š” ๋‹ค์Œ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Kafka ํด๋Ÿฌ์Šคํ„ฐ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  • ํŒŒํ‹ฐ์…˜ ์ˆ˜. ์•ž์„œ ๋…ผ์˜ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ •ํ™•ํ•œ ๊ฐ’์€ ์›ํ•˜๋Š” ๋ณ‘๋ ฌ ํŒ๋… ์ˆ˜์ค€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • ๋ณต์ œ ํŒฉํ„ฐ(ํŒฉํ„ฐ)๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ด ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ๋ธŒ๋กœ์ปค ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์กฐ์ •์„ ์œ„ํ•ด ZooKeepers๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kafka๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ธŒ๋กœ์ปค ๊ฐ„์— ์ƒˆ ํŒŒํ‹ฐ์…˜์„ ๊ณต์ •ํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ์„ ํ•˜๋Š” ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

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

๋ฆฌ๋”๊ฐ€ ๋ณด์œ ํ•œ ๋ชจ๋“  ๋ฉ”์‹œ์ง€๋ฅผ ํฌํ•จํ•˜๋Š” ํŒ”๋กœ์›Œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐํ™”๋œ ๋ณต์ œ๋ณธ (๋™๊ธฐํ™”๋œ ์ƒํƒœ์˜ ๋ณต์ œ๋ณธ, ๋™๊ธฐํ™”๋œ ๋ณต์ œ๋ณธ). ํŒŒํ‹ฐ์…˜์˜ ๋ฆฌ๋” ์—ญํ• ์„ ํ•˜๋Š” ๋ธŒ๋กœ์ปค๊ฐ€ ์ž‘๋™ ์ค‘์ง€๋˜๋ฉด ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ์ตœ์‹  ์ƒํƒœ์ด๊ฑฐ๋‚˜ ๋™๊ธฐํ™”๋œ ๋ธŒ๋กœ์ปค๊ฐ€ ๋ฆฌ๋” ์—ญํ• ์„ ๋งก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ์ง€์† ๊ฐ€๋Šฅํ•œ ๋””์ž์ธ์ž…๋‹ˆ๋‹ค.

์ƒ์‚ฐ์ž ๊ตฌ์„ฑ์˜ ์ผ๋ถ€๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. Acks, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณ„์† ์ „์†กํ•˜๊ธฐ ์ „์— ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์„ ํ™•์ธ(ํ™•์ธ)ํ•ด์•ผ ํ•˜๋Š” ๋ณต์ œ๋ณธ์˜ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค(0, 1 ๋˜๋Š” ๋ชจ๋‘). ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ๋ชจ๋“ ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ˆ˜์‹ ๋˜๋ฉด ๋ฆฌ๋”๋Š” ์ฃผ์ œ ์„ค์ •์— ์˜ํ•ด ์ •์˜๋œ ์—ฌ๋Ÿฌ ํ(์ž์ฒด ํฌํ•จ)์—์„œ ๋ ˆ์ฝ”๋“œ์˜ ํ™•์ธ(ํ™•์ธ)์„ ์ˆ˜์‹ ํ•˜๋Š” ์ฆ‰์‹œ ํ™•์ธ์„ ์ƒ์‚ฐ์ž์—๊ฒŒ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค. min.insync.replicas (๊ธฐ๋ณธ๊ฐ’ 1). ๋ฉ”์‹œ์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋ณต์ œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ƒ์‚ฐ์ž๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์˜ˆ์™ธ(์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๋ณต์ œ๋ณธ ๋˜๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Œ๋ณต์ œ๋ณธ์ถ”๊ฐ€ํ›„).

์ผ๋ฐ˜์ ์ธ ๊ตฌ์„ฑ์€ ๋ณต์ œ ๊ณ„์ˆ˜๊ฐ€ 3(ํŒŒํ‹ฐ์…˜๋‹น ๋ฆฌ๋” 1๊ฐœ, ํŒ”๋กœ์›Œ 2๊ฐœ) ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ฃผ์ œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. min.insync.replicas ์ด ๊ฒฝ์šฐ 2๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ฃผ์ œ ํŒŒํ‹ฐ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ธŒ๋กœ์ปค ์ค‘ ํ•˜๋‚˜๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ค‘๋‹จ๋˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ ๊ฐ„์˜ ์ด๋ฏธ ์ต์ˆ™ํ•œ ์ ˆ์ถฉ์•ˆ์œผ๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ํŒ”๋กœ์›Œ์˜ ํ™•์ธ(ํ™•์ธ)์„ ์œ„ํ•œ ์ถ”๊ฐ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ํฌ์ƒํ•˜์—ฌ ๋ณต์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œ XNUMX๊ฐœ ๋…ธ๋“œ์— ๋Œ€ํ•œ ๋ณต์ œ๋Š” XNUMX๊ฐœ ๋…ธ๋“œ์™€ ๋™์ผํ•œ ์„ฑ๋Šฅ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค(๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€๋Š” ๋ฌด์‹œ).

์ด ๋ณต์ œ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ Kafka๋Š” ์ž‘์—…์„ ํ†ตํ•ด ๊ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋””์Šคํฌ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ธฐ๋กํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋™์กฐ(). ์ƒ์‚ฐ์ž๊ฐ€ ๋ณด๋‚ธ ๊ฐ ๋ฉ”์‹œ์ง€๋Š” ๋ถ„ํ•  ์˜์—ญ ๋กœ๊ทธ์— ๊ธฐ๋ก๋˜์ง€๋งŒ 2์žฅ์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŒŒ์ผ ์“ฐ๊ธฐ๋Š” ์ดˆ๊ธฐ์— ์šด์˜ ์ฒด์ œ์˜ ๋ฒ„ํผ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ค๋ฅธ Kafka ์ธ์Šคํ„ด์Šค์— ๋ณต์ œ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฆฌ๋”์˜ ์†์‹ค์€ ๋ฉ”์‹œ์ง€ ์ž์ฒด๊ฐ€ ์†์‹ค๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋™๊ธฐํ™”๋œ ๋ณต์ œ๋ณธ์— ์˜ํ•ด ์ธ๊ณ„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž‘์—… ์ˆ˜ํ–‰ ๊ฑฐ๋ถ€ ๋™์กฐ() Kafka๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋น ๋ฅด๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋””์Šคํฌ๋กœ ํ”Œ๋Ÿฌ์‹œํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Kafka ๋ธŒ๋กœ์ปค์— 64GB ์ด์ƒ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๋Š” ๊ฒƒ์€ ๋“œ๋ฌธ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ๋‹จ์ผ Kafka ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ธฐ์กด ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ณด๋‹ค ์ˆ˜์ฒœ ๋ฐฐ ๋น ๋ฅธ ์†๋„๋กœ ์‰ฝ๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

๋‹จ์ผ Kafka ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค Kafka ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์ œ ํŒŒํ‹ฐ์…˜์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ณ„ ์‹œ์Šคํ…œ์— ๊ฑธ์ณ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

์ด ์žฅ์—์„œ๋Š” Kafka ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํด๋ผ์ด์–ธํŠธ์™€ ๋ธŒ๋กœ์ปค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ๊ธฐ์กด ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ณด๋‹ค ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋ช‡ ๋ฐฐ ๋” ๋งŽ์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋ฉ”์‹œ์ง• ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์œผ๋ฉฐ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์žฅ์—์„œ๋Š” ๋ฉ”์‹œ์ง• ๊ธฐ๋ฐ˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ „๋žต์„ ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ ํ•ฉ์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์‹œ์ง• ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ด ์žฅ์„ ๋๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ „ ๋ฒˆ์—ญ ๋ถ€๋ถ„: ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์ดํ•ด. ActiveMQ ๋ฐ Kafka๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์‹œ์ง• ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. 1์žฅ

๋ฒˆ์—ญ ์™„๋ฃŒ: tele.gg/middle_java

๊ณ„์† ๋  ...

๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งŒ ์„ค๋ฌธ ์กฐ์‚ฌ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์ œ๋ฐœ

์กฐ์ง์—์„œ Kafka๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  • ะ”ะฐ

  • ์•„๋‹ˆ

  • ์ด์ „์—๋Š” ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

  • ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค

38๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. 8๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๊ถŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€