๐๋ค๋ก๊ฐ๊ธฐ
Apache Kafka๋?
Apache Kafka๋ ์ค์๊ฐ์ผ๋ก ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ถ์ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ ํ๋ซํผ์ผ๋ก, ์คํ ์์ค ์ํํธ์จ์ด๋ค. LinkedIn์์ ๊ฐ๋ฐ๋์ด 2011๋
์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์๊ณ , ํ์ฌ๋ Apache Software Foundation์ ํ๋ก์ ํธ๋ก ๊ด๋ฆฌ๋๊ณ ์๋ค.
Kafka๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ฐํ(publish), ๊ตฌ๋
(subscribe), ์ ์ฅ(store) ๋ฐ ์ฒ๋ฆฌ(process)ํ ์ ์๋ค.
Kafka๋ ์ค์๊ฐ์ผ๋ก ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ, ์ค์๊ฐ ๋ถ์, ์ด๋ฒคํธ ์์ฑ, ๋ก๊ทธ ์์ง ๋ฑ ์ฌ๋ฌ ์๋๋ฆฌ์ค์ ์ ์ฉ๋ ์ ์๋ค. ์ฃผ๋ก ์ค์๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋, ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ๋ฉ์์ง ์ ๋ฌ ๋ฑ์ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
๋ฐ๋ผ์, Kafka๋ ๋จ์ผ ํ๋ก๊ทธ๋จ๋ณด๋ค๋ ๋ ๋์ ์๋ฏธ์ ์ํํธ์จ์ด ํ๋ซํผ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ๊ฐ๋ฐ์๋ Kafka์ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
๋๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ ์ ์๋ค.
Kafka์ ํต์ฌ ๊ฐ๋
- Producer: ๋ฐ์ดํฐ๋ฅผ ์์ฑํด์ Kafka์ ์ ์กํ๋ ์ญํ ์ ํ๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊ทธ ํ์ผ์ด๋ ์ฌ์ฉ์ ์ด๋ฒคํธ ๋ฑ์ ์์ฑํ๋ ์๋น์ค๊ฐ ์ด์ ํด๋น๋๋ค.
- Consumer: Kafka๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ฑฐ๋ ๋ค๋ฅธ ์์คํ
์ ์ ์ฅํ๋ ๋ฑ์ ์์
์ ์ํํ๋ค.
- Topic: Kafka์์ ๋ฐ์ดํฐ๋ 'ํ ํฝ'์ด๋ผ๋ ์นดํ
๊ณ ๋ฆฌ์ ์ ์ฅ๋๋ค. ํ๋ก๋์๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ํ ํฝ์ ์ ์กํ๊ณ , ์ปจ์๋จธ๋ ํน์ ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
- Broker: Kafka ํด๋ฌ์คํฐ๋ ์ฌ๋ฌ๊ฐ์ ์๋ฒ(broker)๋ก ๊ตฌ์ฑ๋๋ค. ๊ฐ ์๋ฒ๋ ํ ํฝ์ ์ผ๋ถ(ํํฐ์
)๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ก์จ Kafka๋ ๋งค์ฐ ๋์ ์์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ๋ค.
Kafka์ ์ฃผ์ ์ฅ์ ์ ๋์ ์ฒ๋ฆฌ๋, ๋ด๊ณ ์ฅ์ฑ, ์ค์๊ฐ ์ฒ๋ฆฌ ๋ฑ์ด ์๋ค. ๋ํ, Kafka๋ '๋ก๊ทธ'๋ผ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฏ๋ก, ๋ฐ์ดํฐ์ ์์๋ฅผ ์ ์งํ๋ฉด์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. ์ด๋ฌํ ํน์ง๋ค ๋๋ถ์ Kafka๋ ์ค์๊ฐ ๋ถ์, ๋ก๊ทธ ์ฒ๋ฆฌ, ์ด๋ฒคํธ ์์ฑ ๋ฑ ๋ค์ํ ์์ญ์์ ํ์ฉ๋๊ณ ์๋ค.
๊ธฐ๋ฅ์ ๋ฐ๋ฅธ ์ฌ์ฉ ๋ฐฉ๋ฒ
- ์ค์๊ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ
- Kafka๋ ์ค์๊ฐ์ผ๋ก ๋์ฉ๋์ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ํจ์จ์ ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ค์๊ฐ ๋ถ์, ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ๋ฑ์ ์์
์์ Kafka๊ฐ ํ์ฉ๋๋ค.
- ๋์: Apache Flink, Apache Storm, Apache Samza ๋ฑ์ด ๋์์ด ๋ ์ ์๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ์ ํนํ๋์ด ์๋ค.
- ์ด๋ฒคํธ ์์ฑ
- ์ด๋ฒคํธ ์์ฑ์ ์ํ ๋ณํ๋ฅผ ์ด๋ฒคํธ๋ก ๋ชจ๋ธ๋งํ๊ณ , ์ด๋ฌํ ์ด๋ฒคํธ๋ฅผ ์์๋๋ก ์ ์ฅํจ์ผ๋ก์จ ์์คํ
์ ์ํ๋ฅผ ์ฌํํ๋ ์ํคํ
์ฒ ํจํด์ด๋ค. Kafka๋ ์ด๋ฒคํธ ์์ฑ ๊ตฌํ์ ์ ํฉํ ๋๊ตฌ์ด๋ค.
- ๋์: EventStore, Redis, Azure Cosmos DB ๋ฑ
- ๋ก๊ทธ ์์ง
- ์ฌ๋ฌ ์๋ฒ์์ ์์ฑ๋๋ ๋ก๊ทธ๋ฅผ ์ค์์์ ์์งํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ Kafka๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ๋์: Fluentd, Logstash ๋ฑ์ ๋ก๊ทธ ์์ง ๋๊ตฌ
- ๋ฉ์์ง ํ
- Kafka๋ ๋์ ์ฒ๋ฆฌ๋์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๋ฉ์์ง ํ๋ก ํ์ฉ๋ ์ ์๋ค.
- ๋์: RabbitMQ, ActiveMQ, Amazon SQS ๋ฑ์ ๋ฉ์์ง ์์คํ
์ค์ ๊ธฐ์
์ Kafka ์ฌ์ฉ ์ฌ๋ก
Netflix
Netflix๋ Apache Kafka๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ํด๋ผ์ด์ธํธ(์: ์ค๋งํธํฐ๋น, ์ปดํจํฐ, ํด๋ํฐ ๋ฑ)์ ๋ํ ์ฌ์ฉ์ ํ๋์ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ๋ค. ์ด ์ ๋ณด๋ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ค์๊ฐ์ผ๋ก ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ , ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ค.