๋ฐฑ์๋ ๊ฐ๋ฐ ๋งฅ๋ฝ์์ "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 ํ๋ซํผ๊ณผ์ ์ํํ ํตํฉ์ ํตํด ๊ฐ์ํ๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ฏ๋ก ๊ณ ๊ฐ์ ์ค์๊ฐ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๊ณ ๋ณํํ๋ ์๊ตฌ ์ฌํญ์ ๋น ๋ฅด๊ฒ ์ ์ํ ์ ์๋ ๊ฐ๋ ฅํ๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.