์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

ํ—ค์ด ํ•˜๋ธŒ๋ฅด!

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์— ๊ด€ํ•œ ์ฑ…์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ธฐ์‹œํ‚ต๋‹ˆ๋‹ค. ์นดํ”„์นด ์šฐ๋ฆฌ๋Š” ๋„์„œ๊ด€์— ๊ด€ํ•œ ๋˜‘๊ฐ™์ด ํฅ๋ฏธ๋กœ์šด ์ž‘ํ’ˆ์„ ์ถœํŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์นดํ”„์นด ์ŠคํŠธ๋ฆผ API.

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

ํ˜„์žฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ด ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ ํ•œ๊ณ„๋ฅผ ๋ฐฐ์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๊ทผ์— ๊ธฐ์‚ฌ๊ฐ€ ์ถœํŒ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ ๋ฒˆ์—ญ๋ณธ์„ ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ์†Œ๊ฐœํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ €์ž๋Š” ์ž์‹ ์˜ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ Kafka Streams๋ฅผ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ฆ๊ฒ๊ฒŒ ์ฝ์œผ์„ธ์š”!

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

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

๋‹จ์ผ ์ค‘์•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด์˜ ํ˜•์‹์  ์ƒํƒœ๋ฅผ ์ง€์›ํ•˜๋Š” ๋Œ€์ฒด ์ ‘๊ทผ ๋ฐฉ์‹์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์ฝ์–ด ๋ณด์‹ญ์‹œ์˜ค. ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณต์œ  ์ƒํƒœ๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ฐ”๊ฟ”์•ผ ํ•  ๋•Œ๋ผ๊ณ  ์ƒ๊ฐํ•œ ์ด์œ 

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

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 1: ์ „ํ™˜ ์ „์˜ ์ผ๋ฐ˜์ ์ธ ๋ถ„ํ•  ์ƒํƒœ ์‹œ๋‚˜๋ฆฌ์˜ค
Kafka ๋ฐ Kafka Streams: ์—์ด์ „ํŠธ๋Š” API๋ฅผ ํ†ตํ•ด ๋ทฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋Š” ์ค‘์•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

๊ณต์œ  ์ƒํƒœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” Kafka Streams๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”

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

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๊ฐ ์ƒํƒœ ์ €์žฅ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ํ† ํด๋กœ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Kafka Streams ์ธ์Šคํ„ด์Šค ์œ„์— ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” 1) ์†Œ์Šค 2) ์˜๊ตฌ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์„ธ์„œ 3) ์‹ฑํฌ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 2: ์ƒํƒœ ์ €์žฅ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ŠคํŠธ๋ฆฌ๋ฐ ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ ํ† ํด๋กœ์ง€. ์—ฌ๊ธฐ์—๋Š” ๊ณ„ํš ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ €์žฅ์†Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ ์—์ด์ „ํŠธ๋Š” ์†Œ์Šค ์ฃผ์ œ์— ์ œ๊ณต๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์†Œ๋น„์ž(์˜ˆ: ๋ฉ”์ผ ์•Œ๋ฆผ ์„œ๋น„์Šค)๋Š” ์‹ฑํฌ(์ถœ๋ ฅ ์ฃผ์ œ)๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ๋œ ๊ณต์œ  ์ƒํƒœ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 3: ๊ณต์œ  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํฌํ•จ๋œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์˜ˆ์ œ ์ž‘์—… ํ๋ฆ„: 1) ์—์ด์ „ํŠธ๋Š” Kafka ์†Œ์Šค ์ฃผ์ œ์— ๋„์ฐฉํ•˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. 2) ๊ณต์œ  ์ƒํƒœ๊ฐ€ ์žˆ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(Kafka Streams ์‚ฌ์šฉ)๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ณ„์‚ฐ๋œ ์ƒํƒœ๋ฅผ ์ตœ์ข… Kafka ์ฃผ์ œ์— ์”๋‹ˆ๋‹ค. ๊ทธ ํ›„ 3) ์†Œ๋น„์ž๋Š” ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค.

์ด ๋‚ด์žฅ๋œ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๋Š” ์‹ค์ œ๋กœ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!

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

์˜ต์…˜ #1: ๊ณ„์‚ฐ์— ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ ์‚ฌ์šฉ

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

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 4: ํ”„๋กœ์„ธ์„œ์˜ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์—ฝ๋‹ˆ๋‹ค(์ดํ›„ ๊ณต์œ  ์ƒํƒœ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋Š” ํ•ด๋‹น ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ) doProcess)

์˜ต์…˜ #2: Kafka Streams ์œ„์— CRUD API ์ƒ์„ฑ

๊ธฐ๋ณธ ์ž‘์—… ํ๋ฆ„์„ ์„ค์ •ํ•œ ํ›„ ๊ณต์œ  ์ƒํƒœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ RESTful CRUD API๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€ ๋˜๋Š” ๋ชจ๋“  ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค(๋ฐฑ์—”๋“œ ์ง€์›์— ์œ ์šฉํ•จ).

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

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 5: ๋‚ด์žฅ๋œ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐ๋œ ์ƒํƒœ ์–ป๊ธฐ

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

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 6: Kafka ์ƒ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์€ ๋ณต์žก์„ฑ: Kafka์—๋Š” ๋งŽ์€ ํŒŒํ‹ฐ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

์ฒ˜๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ: Kafka Streams์—์„œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ฒฐ๊ณผ

๊ทธ๋ฆผ 7: ์ŠคํŠธ๋ฆผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ฟผ๋ฆฌํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. GET ALL API์—๋„ ์œ ์‚ฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ฒฐ๊ณผ

Kafka Streams์˜ ์ƒํƒœ ์ €์žฅ์†Œ๋Š” ์‚ฌ์‹ค์ƒ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ด๋Ÿฌํ•œ ์žฅ์ ๊ณผ ๊ธฐํƒ€ ์žฅ์ ์œผ๋กœ ์ธํ•ด Kafka Streams๋Š” ์šฐ๋ฆฌ์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ „์—ญ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Kafka Streams๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋งค์šฐ ์•ˆ์ •์ ์ธ ๊ฒƒ์œผ๋กœ ์ž…์ฆ๋˜์—ˆ์œผ๋ฉฐ(๋ฐฐํฌํ•œ ์ดํ›„๋กœ ๋ฉ”์‹œ์ง€ ์†์‹ค์ด ๊ฑฐ์˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค) Kafka Streams์˜ ๊ธฐ๋Šฅ์€ ์—ฌ๊ธฐ์„œ ๋๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

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