Spring cloud 02.1 - Kafka
๐๐ป Kafka
์นดํ์นด๋ ๋งํฌ๋์ธ์์ ์ ์ํ ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด์ด๋ค. ํ์ด์ ์ด์ผ๊ธฐ ํ๋ฉด, ์ดํ๋ฆฌ์ผ์ด์ ์ฌ์ด์์ ์๋ก ์ฐ๊ฒฐ์์ผ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ฒ ํด์ฃผ๊ณ , ์ด ๋์ ๋ฐ์ดํฐ๋ ๋ฉ์์ง ์ ๋ฌ์ ํตํ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ด๋ค. ์ฆ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ๊ตฌ๋ ๋ฐ ์ ์ฅํ ์ ์๋ ๋ถ์ฐํ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ผ๋ก ์ ์ํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ ์ํฉ์ ๋ง๋ค์ด ๋ณด์๋ค. ๊ฐ ์ฌ๋์ ๋คํธ์ํฌ ํต์ ์ ํตํด ๊ฐ ์ฌ๋๊ณผ ์ฐ๊ฒฐ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ข์ ์ ์ ๋ฌด์์ผ๊น?
์ผ๋จ, (๋ฌผ๋ก ์ฒ์์๋ง) ์ฝ๊ณ ์ง๊ด์ ์ด๋ค. ๋ณดํต ์ด๋ ๊ฒ ๊ฐ๋ฐํ๊ณ ์์ง๋ ์์๊ฐ? ํ์๋ ํ ์ดํ๋ก์ ํธ๋ ๋๋ ๊ฐ๋จํ ๊ฐ๋ฐ์ ํ๊ฒ ๋ ๋ ๋น์ฐํ ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ค ํ๋ก์ ํธ์์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ํธ์ถํ๊ฒ ๋ ๋ ์ง์ ์ ์ผ๋ก ์ฃผ์๋ฅผ ์์ฒญํ์ฌ ์ฐ๊ฒฐ์ํค๊ณ ๋ ํ๋ค. ์ด๋ ๋น์ฐํ ์ค๊ฐ ๊ตฌ์กฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ํฌ๋ํฐ ์ฅ์ ์ด ์๋ค. ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊ป ์ ์ํด์จ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๊ฐ ๋ฐ๋ก ์์ ๊ตฌ์กฐ์ด๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์ ๋จ์ ์ spring cloud 1ํธ์์ ์ด์ผ๊ธฐ ํ๋ฏ์ด ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ด ์ด๋ ต๋ค๋ ๊ฒ์ด๋ค. ๋ง์ฝ, 7๋ฒ ์ฌ๋์ด ์ถ๊ฐ๋๋ค๋ฉด 1๋ฒ๋ถํฐ 3๋ฒ๊น์ง์ ์ฌ๋์ด ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด์ผ ํ๋์ง, ์ถ๊ฐ์ ์ธ ์์ ์ ์๋์ง, ๊ท์ฝ์ด ๋ฐ๋์ง๋ ์๋์ง ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์์๋ฅผ ์ ๊ฒฝ์จ์ผ ํ๋ค. ๋์ฑ์ด ์๊ฐ์ด๋ ๋น์ฉ์ ์ธ ์ธก๋ฉด์์๋ ์๋น์ค๊ฐ ์ปค์ง์ ๋ฐ๋ผ ํจ์จ์ ์ด์ง ๋ชปํ๋ค.
์ ํ๊ธฐ๋ก๋ถ๊ฐ ์๋ ์ํ์์ ๋ฉ์์ง๋ฅผ ์ง์ ๋ณด๋ด์ผํ๋ค๊ณ ์๊ฐํด๋ณด๋ผ. ๋ฏธ๋ฆฌ ์ ์ฅ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์์ ๋ฒํธ๋ฅผ ์ธ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ผ ํ๋ฉฐ, ์ฌ์ง์ด๋ ์๋ ์ฌ๋์ด ๋์ฑ ๋ง์์ง์๋ก ๊ณจ์น์ํ๋ค.. ์ธ์ ๋ ๋ค๋ฅธ ์ ํ๋ฒํธ๋ฅผ ์ธ์์ผ ํ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ฅผ ๊ฐ์ง๊ฒ ๋์๋ค.
๐ฆด Kafka ๊ตฌ์กฐ
์์ธํ๋ ๋ชจ๋ฅด์ง๋ง '์ด๋ค ๋ฌด์ธ๊ฐ'๊ฐ ์ค๊ฐ์ ๊ตํ๊ธฐ์ฒ๋ผ ์๊ณ , ๊ฐ ์ฌ๋์ ๋ฉ์์ง ํ๊ฐ ์กด์ฌํ๋ค. ์ด๋ค ๋ฌด์ธ๊ฐ๋ ๊ฐ ์ฌ๋์๊ฒ '๋ฉ์์ง๊ฐ ์์ด์!'๋ผ๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌํด์ค๋ค. ์์ง์ '์ด๋ค ๋ฌด์ธ๊ฐ'๊ฐ ๋ญ์ง ๋ชจ๋ฅด์ง๋ง ์ฐ๋ฆฌ๋ 7๋ฒ ์ฌ๋์ด ์ถ๊ฐ๋์ด๋, 8๋ฒ ์ฌ๋์ด ์ถ๊ฐ๋์ด๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์ฌ๋์ '์ด๋ค ๋ฌด์ธ๊ฐ'์ ์ฃผ์๋ง ๊ธฐ์ตํด๋ด๋ฉด ๋๋ค. ๊ฒฐ๊ตญ์ ์ฌ๋์ด ์ถ๊ฐ๋์ด๋ ์ถ๊ฐ์ ์ผ๋ก ๊ฐ๋ฐํ ์ฌํญ๋ค์ ๋ํญ ์ค์ด๋ค๊ณ , ํ์ฅ์ฑ ๋ฉด์์๋ ์ถฉ๋ถํ ์ด๋์ ๋ณธ ๊ฒ ๊ฐ๋ค.
์ด๊ฒ์ด ๋ฐ๋ก kafka๊ฐ ํ๋ ํต์ฌ ์ผ์ด๋ค.
์ค์ ๋ก ๋งํฌ๋์ธ์์ kafka ์๋น์ค ์์ด ๊ฐ๋ฐํ ๋์๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ์๋ค๊ณ ํ๋ค.
๊ทธ๋ฆผ์ด ์ด๋ ค์๋ณด์ด๋ฉด ์ ์์ด๋ค!
์ฐ๋ฆฌ๋ ์ด ๊ทธ๋ฆผ์์ ์ด ํ๋ฆ๋ง ์ดํดํ๋ฉด ๋๋ค. ๋งจ ์์ Apps and Services๊ฐ Monitoring, Splunk(๋ฐ์ดํฐ ์ค์๊ฐ ์์ง ๋ฐ ๋ถ์), MQ(Message Queue), Relational Databases, Log Appregation ๋ฑ ๋ง์ ์๋น์ค์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๊ฒ์ ๋ณด๋ฉด ๋๋ค. ๋ง์ฝ, ์ด๋ค ์๋น์ค๋ฅผ ์ค์ ๋ก ๋์ ํ๋ค๊ณ ํ์ ๋์ ์ค๊ฐ์ ํ๋ ๋ฃ๊ฒ ๋๋ฉด ๊ทธ์ ๊ด๋ จ๋ ๊ด๊ณ ์ฒ๋ฆฌ๋ ์ด๋ป๊ฒ ํด์ผํ๋์ง ๋ฒ์จ๋ถํฐ ๊ณ ๋ฏผ์ด ๋๋ค. ๋ง์ฝ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋ ๋ ๋์ ํ๋ค๊ณ ํ๋ฉด ๊ทธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ป๊ฒ ๋์๊ฑด์ง ํ ๋ฒ ์๊ฐํด๋ณด๋ฉด ์ดํด๊ฐ ๋ ๋ฏ ํ๋ค.
๋ํ ๊ฐ๋ฐ์ ์ธ ์ธก๋ฉด์์ ๋ณด์์ ๋ ๊ฐ๋ฐ์ ํจ์จ์ ์ธ ์ธก๋ฉด๋ ์ค์ํ์ง๋ง ์ ๊ทธ๋ ๊ฒ ์ค๊ณํ์๊น ํ๋ ๋ถ๋ถ๋ ์ ๋ง ์ค์ํ ํฌ์ธํธ๊ฐ ๋๋ค. ์ฝํ๊ณ ์คํจ ์ ๊ด๊ณ๋ค์ ๋ณด๋ฉด์ ์ดํดํ๋ ๋ถ๋ถ์ ๋นํจ์จ์ ์ธ ๋น์ฉ์ด ์ถ๊ฐ์ ์ผ๋ก ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๋งํฌ๋์ธ์ ์นดํ์นด๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ์ฌ๊ตฌ์ฑํ๋ค.
๋ก๊ทธ ๋ชจ๋ํฐ๋ง, ๋ณด์ ๊ด๋ฆฌ, ์ค์๊ฐ ๋ถ์ ๋ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค, ์คํธ๋ฆผ ์ฒ๋ฆฌ๋ค์ kafka์ ๋ฐ์ดํฐ๋ก๋ถํฐ ๋ฐ๊ฒ ๋๊ณ , ์ฑ ์๋น์ค์์ ๋์ค๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ค์์์ ๊ด๋ฆฌํ๋ ํ์์ผ๋ก ๋ฐ๊พธ์๋ค. ํ๋์ kafka ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ์ ์ฒด์ ํ๋ฆ์ ๋ฐ๊ฟ ์ ์์ ๋งํผ ์ค์ํ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
๊ธฐ์กด์๋ ์ค์ํ๋ ์ ์ก ์์ญ์ ๋ถ์ฌ๊ฐ ์๋ํฌ์ธํธ๋ฅผ ์๋ก ์ฎ๋๋ฐ ๋ณต์กํ๊ณ , ๊ฐ ์์คํ ๋ง๋ค ๊ตฌํ๋๋ ๋ฐฉ์์ด ์๋ก ๋ฌ๋ผ ํ์ฅํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค. ๋ง์ฝ ์ด์ ๋งํฌ๋์ธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์๋ค๋ฉด ์ด๋ ํ ๊ณณ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๊ทธ ์์ธ์ง๋ฅผ ์ฐพ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๊น์ง ๋ฐ์ํ์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ kafka๋ฅผ ๋์ ํ๋ฉฐ ์๋น์ค ํ์ฅ์๋ ์ฉ์ดํ๋ฉฐ, ์ถ๊ฐ์ ์ธ ์ฅ์ ์ผ๋ก '์ค์๊ฐ์ฑ ๋ฐ์ดํฐ ์ฒ๋ฆฌ'๊ฐ ์๊ฒผ๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํด๋ ๋ฐ๋ก ์์ฒญํด์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ์๋, ๋ฉ์์ง ํ์ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด๋๊ณ ์์ ์ด ์ํํ ์ผ๋ง ์งํํ๊ณ ์๋ค๊ฐ ๋ฉ์์ง ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ๋ ์ด๋ฆ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง ๊ฒ์ด๋ค.
์ฝ๊ฒ ์์๋ฅผ ๋ค์ด๋ณด์. ์ด์ ๋ด์ฉ๊ณผ ๋ค ์ผ๋งฅ์ํตํ๋๋ฐ ์ฌ์ด ์์๊ฐ ์๊ฐ๋ฌ๋ค.
๊ฐ๋ ์๋ผ๋์์ ์ฑ
์ ๊ตฌ๋งคํ๋ค๋ณด๋ฉด ์ง ์์์ ๋ฐ๋ ํ๋ฐฐ๋ ์์ง๋ง, ๊ฐ๊น์ด ๋๋ฆฌ์ ์ ๊ฐ์ ์ฑ
์ ํฝ์
ํด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฌํ ๋ชจ์ต์ ํก์ฌ kafka์ ๊ฐ๋ค. ์๋ผ๋ ๋ณธ์ฌ๊ฐ producer, ๊ฐ ๋๋ฆฌ์ ์ kafka, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ consumer๊ฐ ๋๋ ๊ฒ์ด๋ค. ๋๋ฆฌ์ ์ด ์๊ธฐ์ ์๋ผ๋ ๋ณธ์ฌ๋ ์ฐ๋ฆฌ์ ์ฃผ์๋ฅผ ์๊ฐํ ํ์๊ฐ ์๊ณ , ๋๋ฆฌ์ ์๊ฒ ์ฑ
๋ง ๋ณด๋ด์ฃผ๋ฉด ๊ทธ ์๋์ด consumer์ธ ์ฐ๋ฆฌ์๊ฒ ๋๋ฌํ์ฌ ์ฐ๋ฆฌ๋ ์ฑ
๋ง ๊ฐ์ง๋ฌ ๊ฐ๋ฉด ๋๋ค.
๐ Kafka ์ฉ์ด ์ค๋ช
๊ทธ๋ฌ๋ฉด ์๋ก์ด ์ฉ์ด๋ฅผ ๊ณ์ ์ฌ์ฉํด์ผ ํ๋๋ฐ, kafka๋ฅผ ์ดํดํ๊ธฐ ์ํด ๊ฐ ์ฉ์ด๋ฅผ ์์๋ณด์
Producer : ๋ฉ์์ง๋ฅผ ์์ฐํ๋ ์ฃผ์ฒด, ํน์ ํ ํฝ์ ์ง์ ํ์ฌ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค.
Consumer : ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์์ฒญ. ํน์ ํํฐ์ ์ ๊ด๋ฆฌํ๊ณ ์๋ ํํฐ์ ๋ฆฌ๋์๊ฒ ์์ฒญํ๋ค.
Topic : ๋ฉ์์ง์ ๊ทธ๋ฃน. ํ๋ก๋์์ ์ปจ์๋จธ ์ฌ์ด์ ๋ฉ์์ง ํ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ๋ณดํต Topic์ ๊ฐ ๋ฉ์์ง ์ฃผ์ ์ ๋ง์ถ์ด ์์ฑํ๋ค.
Record : ๋ฉ์์ง ๋๋ ๋ฐ์ดํฐ.
Broker : kafka๊ฐ ์ค์น๋ ์๋ฒ๋ฅผ ์๋ฏธํ๋ค.
Cluster : apache project application์ผ๋ก ๋ธ๋ก์ปค๋ฅผ ๊ตฌ์ฑํ ๊ฒ์ ์๋ฏธํ๋ค.
โ๏ธ Spring Cloud Kafka
๐ Docker์ผ๋ก kafka ๋ฐ zookeeper ์ค์น
๋ณธ๊ฒฉ์ ์ผ๋ก kafka์ ๋์ ํด๋ณด์.
Spring cloud ์๋ฒ ์ธ์๋ ์ฐ๋ฆฌ๋ kafka server๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๊ตฌํํด์ผ ํ๋ค. producer์ consumer๋ spring cloud์์ ๋ด๋นํ๋ค๋ ์ด์ผ๊ธฐ๋ค. kafka๋ฅผ ์ค์นํ๊ธฐ ์ํด์๋ docker๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ฆฌํ๊ฒ ๊ตฌ์ถํ ์ ์์ผ๋ฉฐ, docker ์ค์น์ ๊ด๋ จํด์๋ ๊ฐ์๊ฐ ์ฐพ์๋ณด๊ธธ ๋ฐ๋๋ค.
docker์ผ๋ก kafka์ zookeeper์ ์ค์นํ๋ค.
// zookeeper ์ค์น
docker pull wurstmeister/zookeeper
// kafka ์ค์น
docker pull wurstmeister/kafka
vi์ผ๋ก docker-compose.yml ํ์ผ์ ์ ์ํ๊ณ , ๋ค์ ๋ด์ฉ์ ๋ฃ๋๋ค.
docker-compose.yml
version: '2'
services:
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
container_name: kafka
image: wurstmeister/kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ADVERTISED_PORT: 9092
KAFKA_CREATE_TOPICS: "test-topic:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
๋ค์ ๋์์์ docker-compose๋ฅผ ์คํ์ํจ๋ค.
docker-compose up -d
lazydocker๊ฐ ๋ค์ด๋์ด ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ํ๋ฅผ ๋ณผ ์ ์๋ค.
[Mac ๊ธฐ์ค]
์๋ค๋ฉด brew install lazydocker๋ก ๋ค์ด์ ๋ฐ๊ณ
sudo lazydocker๋ฅผ ์ ๋ ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
ํ๋ฉด์์ ๋์ค๋ ๋ฐฉ๋ฒ์ q๋ง ๋๋ฅด๋ฉด ๋๋ค.
์ฌ๊ธฐ๊น์ง zookeeper์ kafka๋ฅผ ํตํด kafka์๋ฒ๋ฅผ ์ ์ํ ์ ์๊ฒ ๋์๋ค.
์ฐ๋ฆฌ๊ฐ ์์
ํด์ผํ๋ ๋๋ฒ์งธ ๋จ๊ณ๋ kafka ๋ด์ topic์ ์์ฑํ๊ณ producer์ ๋ฉ์์ง ์ ์ก, consumer์ ๋ฉ์์ง ์ฝ๊ธฐ ๋ฐ Spring์ผ๋ก producer์ consumer์ ๊ตฌํ์ ํด๋ณด์์ผ ํ๋ค.
๋ค์์ ํตํด docker์ผ๋ก ๋์ด kafka์ ๋ค์ด๊ฐ๋ณด์
docker exec -it kafka /bin/bash
kafka ์๋ฒ์์ topic์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
kafka-topics.sh --create --topic heony-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
์ค๊ฐ์ heony-topic์ ํ์๊ฐ ์์ฑํ ํ ํฝ์ ์ด๋ฆ์ด๋ฉฐ, ๋ณธ์ธ์ด ํ๊ณ ์ถ์ ํ ํฝ ์ฃผ์ ๋ฅผ ์์ฑํด์ ์จ๋ ๋๋ค.
root@d6f8ae8b644e:/# kafka-topics.sh --create --topic heony-topic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
Created topic heony-topic.
root@d6f8ae8b644e:/#
์์ ์๊ฐํ kafka์ topic์ ์ ์ํ์ผ๋ฉฐ, producer๋ consumer ๋ํ ์นดํ์นด ์๋ฒ ๋ด์์ ๊ตฌํํ ์ ์๋ค. ํ์ง๋ง ์ฐ๋ฆฌ์ ๋ชฉํ๋ spring cloud๋ฅผ ํตํด kafka๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ docker ๋ด์์ ๊ตฌํํ๋ ๊ฒ์ ์๋ตํ๋ค.
๐ง๐ป๐ป Spring boot์์ kafka ์์ฑ
spring boot ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด dependencies๋ฅผ ์ ํํ๋ ๋ถ๋ถ์์ ๋ ๊ฐ์ ์ ํ์ง๋ฅผ ๋ณผ ์ ์๋ค.
๋ ๊ฐ์ ์ ํ์ง๋ฅผ ๋ชจ๋ ์ ํํ ํ์๋ ์๋ค. ๊ฒน์น๊ฒ ๋๋ฏ๋ก.
ํ์ง๋ง ๋ฌด์์ด ๋ค๋ฅธ์ง๋ ํ๋ฒ ์ง๊ณ ๋์ด๊ฐ๋ณด์.
spring-cloud ๊ณต์ ์ฌ์ดํธ์์๋ spring-cloud-stream-binder-kafka๋ฅผ ์ถ๊ฐํ๊ฒ ๋๋๋ฐ,
์ฌ์ดํธ๋ฅผ ๋์๋ค๋๋ค ๋ณด๋ฉด ๊ทธ๋ฅ spring-kafka๋ง์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ๋ค.
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
spring-kafka์ spring-cloud-stream-binder-kafka์์ ์ฐจ์ด๋ ์๋ ์ฌ์ดํธ์ ์ ๋์์๋ค.
https://stackoverflow.com/questions/69335758/difference-between-spring-cloud-kafka-streams-vs-spring-cloud-stream
Difference between Spring Cloud Kafka Streams Vs Spring Cloud Stream?
Whats the difference between Spring Cloud Kafka Streams Vs Spring Cloud Stream Vs Spring Cloud Function Vs Spring AMQP and Spring for Apache Kafka?
stackoverflow.com
์์ฝํ์๋ฉด,
Spring for Apache Kafka(์์ spring-kafka์ ๊ฐ์) - ๋ฎ์ ์์ค์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ ์คํ๋ง ๋ถํธ๊ฐ ํ์ํ์ง ์๋ค
Spring Cloud Function - java 8 ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ๊ณตํ๋ฉฐ ์ด๋ spring boot ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ค.
Spring Cloud Stream - ์ด๋ฒคํธ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ํ๋ ์ ์ํฌ์ด๋ฉฐ spring boot ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋๋ค.
Spring Cloud Stream Kafka/Kafka Streams - Apache Kafka์ฉ Spring์ ํ์ฉํ์ฌ Spring Cloud Stream binder ๊ตฌํ
๊ฒฐ๊ตญ ์ํฉ์ ๋ง๋ ๊ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ถ๋ฅ๋๋ฏ๋ก.
๐๐ป ๊ฐ๋ฐ
๊ฐ๋ฐ์ git์ ์ ๋ก๋๋์ด ์๋ ํ๋ก์ ํธ๋ฅผ ์ด์ฉํ๋๋ฐ, ์ด ์ธ์ ์นดํ์นด ์์๋ณด๋ค๋ ์ธ๋ถํ๋์ด ์์ด ํ๋์ ํฌ์คํธ๋ก ๋์ฒดํด์ผ ํ ๊ฒ ๊ฐ๋ค. ๋ค์ ๊ฒ์๋ฌผ์ ํตํด ๊ฐ๋ฐ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์์๋ณด์.