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

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

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

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

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

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

Apache Kafka๋Š” ์ตœ์‹  ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ๋งค์šฐ โ€‹โ€‹์ค‘์š”ํ•œ ์•ˆ์ •์ ์ด๊ณ  ๊ฐ•๋ ฅํ•œ ๊ณ ์„ฑ๋Šฅ ๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ตœ์ ํ™”ํ•จ์œผ๋กœ์จ Kafka๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€ ์š”๊ตฌ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋Š” ํšจ์œจ์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. AppMasterno-code ํ”Œ๋žซํผ๊ณผ์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์„ ํ†ตํ•ด ๊ฐ„์†Œํ™”๋œ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ณ ๊ฐ์€ ์‹ค์‹œ๊ฐ„ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•˜๊ณ  ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•˜๊ณ  ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.