์์ ์ฑ
์ ๋ฒ์ญ ๊ณ์:
๋ฉ์์ง ๋ธ๋ก์ปค ์ดํด
์ ์: Jakub Korab, ๋ฐํ์ธ: O'Reilly Media, Inc., ๋ฐํ์ผ: 2017๋
9781492049296์, ISBN: XNUMX.
์ด์ ๋ฒ์ญ ๋ถ๋ถ:
์ 3 ์ฅ
์นดํ์นด
Kafka๋ ๊ธฐ์กด ๋ฉ์์ง ๋ธ๋ก์ปค์ ์ผ๋ถ ์ ํ ์ฌํญ์ ํด๊ฒฐํ๊ณ ๋ค์ํ ์ง์ ๊ฐ ์ํธ ์์ฉ์ ์ํด ์ฌ๋ฌ ๋ฉ์์ง ๋ธ๋ก์ปค๋ฅผ ์ค์ ํ์ง ์์๋ ๋๋๋ก LinkedIn์์ ๊ฐ๋ฐ๋์์ต๋๋ค. ์ฌ์ฉ ์ฌ๋ก LinkedIn์ ํ์ด์ง ํด๋ฆญ ๋ฐ ์ก์ธ์ค ๋ก๊ทธ์ ๊ฐ์ ๋งค์ฐ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋จ๋ฐฉํฅ ์์ง์ ํฌ๊ฒ ์์กดํ๋ฉด์ ์์ฐ์๋ ๋ค๋ฅธ ์๋น์์ ์์ฐ์ฑ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ์ฌ๋ฌ ์์คํ ์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉํ์ต๋๋ค. ์ค์ ๋ก Kafka๊ฐ ์กด์ฌํ๋ ์ด์ ๋ Universal Data Pipeline์ด ์ค๋ช ํ๋ ์ผ์ข ์ ๋ฉ์์ง ์ํคํ ์ฒ๋ฅผ ์ป๊ธฐ ์ํด์์ ๋๋ค.
์ด๋ฌํ ๊ถ๊ทน์ ์ธ ๋ชฉํ๋ฅผ ๊ณ ๋ คํ ๋ ์์ฐ์ค๋ฝ๊ฒ ๋ค๋ฅธ ์๊ตฌ ์ฌํญ์ด ์๊ฒผ์ต๋๋ค. Kafka๋ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
- ๋งค์ฐ ๋น ๋ฅด๊ฒ
- ๋ฉ์์ง ์์ ์ ๋ ๋ง์ ๋์ญํญ ์ ๊ณต
- Publisher-Subscriber ๋ฐ Point-to-Point ๋ชจ๋ธ ์ง์
- ์๋น์ ์ถ๊ฐ๋ก ์๋๋ฅผ ๋ฆ์ถ์ง ๋ง์ญ์์ค. ์๋ฅผ ๋ค์ด ActiveMQ์์ ๋๊ธฐ์ด๊ณผ ์ฃผ์ ์ ์ฑ๋ฅ์ ๋์์ ์๋น์ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ ํ๋ฉ๋๋ค.
- ์ํ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๋ฉ์์ง๋ฅผ ์ง์ํ๋ ํ๋์ ๋ธ๋ก์ปค๊ฐ ์ต๋ ๋์คํฌ ์๋์์๋ง ๊ทธ๋ ๊ฒ ํ ์ ์๋ค๋ฉด ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋จ์ผ ๋ธ๋ก์ปค ์ธ์คํด์ค๋ฅผ ๋์ด์๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
- ๋ฉ์์ง ์ ์ฅ ๋ฐ ์ฌ๊ฒ์์ ๋ํ ์ก์ธ์ค ์ ํ
์ด ๋ชจ๋ ๊ฒ์ ๋ฌ์ฑํ๊ธฐ ์ํด Kafka๋ ํด๋ผ์ด์ธํธ์ ๋ฉ์์ง ๋ธ๋ก์ปค์ ์ญํ ๊ณผ ์ฑ
์์ ์ฌ์ ์ํ๋ ์ํคํ
์ฒ๋ฅผ ์ฑํํ์ต๋๋ค. JMS ๋ชจ๋ธ์ ๋งค์ฐ ๋ธ๋ก์ปค ์งํฅ์ ์ด๋ฉฐ ๋ธ๋ก์ปค๋ ๋ฉ์์ง ๋ฐฐํฌ๋ฅผ ๋ด๋นํ๊ณ ํด๋ผ์ด์ธํธ๋ ๋ฉ์์ง ์ก์์ ์ ๋ํด์๋ง ๊ฑฑ์ ํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋ฉด Kafka๋ ํด๋ผ์ด์ธํธ ์ค์ฌ์ ์ด๋ฉฐ ํด๋ผ์ด์ธํธ๋ ๋งค์ฐ ๋น ๋ฅด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ธ๋ก์ปค์ ๊ตํํ์ฌ ๊ด๋ จ ๋ฉ์์ง๋ฅผ ์๋น์์๊ฒ ๊ณต์ ํ๊ฒ ๋ฐฐํฌํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ ํต์ ์ธ ๋ธ๋ก์ปค์ ๋ง์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ์ ํต์ ์ธ ๋ฉ์์ง ์์คํ
์ผ๋ก ์์
ํ ์ฌ๋๋ค์๊ฒ Kafka๋ก ์์
ํ๋ ค๋ฉด ๊ทผ๋ณธ์ ์ธ ์๊ฐ์ ๋ณํ๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฌํ ์์ง๋์ด๋ง ๋ฐฉํฅ์ผ๋ก ์ธํด ๊ธฐ์กด ๋ธ๋ก์ปค์ ๋นํด ์ฒ๋ฆฌ๋์ ํจ์ฌ ๋ ๋์ผ ์ ์๋ ๋ฉ์์ง ์ธํ๋ผ๊ฐ ๋ง๋ค์ด์ก์ต๋๋ค. ์์ผ๋ก ์ดํด๋ณด๊ฒ ์ง๋ง ์ด ์ ๊ทผ ๋ฐฉ์์๋ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์ฆ, Kafka๋ ํน์ ์ ํ์ ์ํฌ๋ก๋ ๋ฐ ์ค์น๋ ์ํํธ์จ์ด์ ์ ํฉํ์ง ์์ต๋๋ค.
ํตํฉ ๋์ ๋ชจ๋ธ
์์์ ์ค๋ช ํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด Kafka๋ ๊ฒ์-๊ฐ์ ๋ฐ ์ง์ ๊ฐ ๋ฉ์์ง์ ํ ์ข ๋ฅ์ ๋์์ผ๋ก ๊ฒฐํฉํ์ต๋๋ค. ์ฃผ์ . ์ด๋ "์ฃผ์ "๋ผ๋ ๋จ์ด๊ฐ (์ฃผ์ ์์) ์ฝ๊ธฐ๊ฐ ์ง์๋์ง ์๋ ๋ธ๋ก๋์บ์คํธ ๋ฉ์ปค๋์ฆ์ ๋ํ๋ด๋ ๋ฉ์์ง ์์คํ ์ผ๋ก ์์ ํ ์ฌ๋๋ค์๊ฒ ํผ๋์ค๋ฝ์ต๋๋ค. Kafka ํ ํฝ์ ์ด ์ฑ ์ ์๊ฐ์ ์ ์๋ ๋๋ก ํ์ด๋ธ๋ฆฌ๋ ๋์ ์ ํ์ผ๋ก ๊ฐ์ฃผ๋์ด์ผ ํฉ๋๋ค.
์ด ์ฅ์ ๋๋จธ์ง ๋ถ๋ถ์์๋ ๋ฌ๋ฆฌ ๋ช ์์ ์ผ๋ก ์ธ๊ธํ์ง ์๋ ํ "์ฃผ์ "๋ผ๋ ์ฉ์ด๋ Kafka ์ฃผ์ ๋ฅผ ๋ํ๋ ๋๋ค.
ํ ํฝ์ด ๋์ํ๋ ๋ฐฉ์๊ณผ ํ ํฝ์ด ์ ๊ณตํ๋ ๋ณด์ฅ์ ์์ ํ ์ดํดํ๋ ค๋ฉด ๋จผ์ ํ ํฝ์ด Kafka์์ ์ด๋ป๊ฒ ๊ตฌํ๋๋์ง ์ดํด๋ด์ผ ํฉ๋๋ค.
Kafka์ ๊ฐ ์ฃผ์ ์๋ ์์ฒด ๋ก๊ทธ๊ฐ ์์ต๋๋ค.
Kafka์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์์ฐ์๋ ์ด ๋ก๊ทธ์ ์ฐ๊ณ ์๋น์๋ ์ง์์ ์ผ๋ก ์์ผ๋ก ์ด๋ํ๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์์ ์ฝ์ต๋๋ค. ์ฃผ๊ธฐ์ ์ผ๋ก Kafka๋ ํด๋น ๋ถ๋ถ์ ๋ฉ์์ง๋ฅผ ์ฝ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ก๊ทธ์ ๊ฐ์ฅ ์ค๋๋ ๋ถ๋ถ์ ์ญ์ ํฉ๋๋ค. Kafka ์ค๊ณ์ ํต์ฌ ๋ถ๋ถ์ ๋ธ๋ก์ปค๊ฐ ๋ฉ์์ง๋ฅผ ์ฝ๋ ์ฝ์ง ์๋ ์๊ดํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ์ ์ฑ
์์
๋๋ค.
"๋ก๊ทธ" ๋ฐ "ํฌ์ธํฐ"๋ผ๋ ์ฉ์ด๋
์นดํ์นด ๋ฌธ์ . ์ฌ๊ธฐ์์๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์ด๋ฌํ ์ ์๋ ค์ง ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ๋ชจ๋ธ์ ๋ชจ๋ ๋๊ธฐ์ด์ ๋ฉ์์ง๊ฐ ๋์ผํ ๋ก๊ทธ์ ์ ์ฅ๋๊ณ ๋ธ๋ก์ปค๊ฐ ๋ฉ์์ง๋ฅผ ์ฝ์ ํ ์ญ์ ๋ ๊ฒ์ผ๋ก ํ์ํ๋ ActiveMQ์ ์์ ํ ๋ค๋ฆ
๋๋ค.
์ด์ ์กฐ๊ธ ๋ ๊น์ด ๋ค์ด๊ฐ ์ฃผ์ ๋ก๊ทธ๋ฅผ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Kafka ๋ก๊ทธ๋ ์ฌ๋ฌ ํํฐ์
(
๊ทธ๋ฆผ 3-1. ์นดํ์นด ํํฐ์
์์ฐ์๊ฐ Kafka ์ฃผ์ ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ํํฐ์ ์ ๊ฒฐ์ ํฉ๋๋ค. ์ด์ ๋ํด์๋ ๋์ค์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฉ์์ง ์ฝ๊ธฐ
๋ฉ์์ง๋ฅผ ์ฝ์ผ๋ ค๋ ํด๋ผ์ด์ธํธ๋ ๋ช ๋ช ๋ ํฌ์ธํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์๋น์ ๊ทธ๋ฃน, ์ด๋ ๋ค์์ ๊ฐ๋ฆฌํจ๋ค. ์คํ์ ํํฐ์ ์ ๋ฉ์์ง. ์คํ์ ์ ํํฐ์ ์์ ์ 0์์ ์์ํ๋ ์ฆ๋ถ ์์น์ ๋๋ค. ์ฌ์ฉ์ ์ ์ group_id๋ฅผ ํตํด API์์ ์ฐธ์กฐ๋๋ ์ด ์๋น์ ๊ทธ๋ฃน์ ๋ค์์ ํด๋นํฉ๋๋ค. ํ๋์ ๋ ผ๋ฆฌ์ ์๋น์ ๋๋ ์์คํ .
๋๋ถ๋ถ์ ๋ฉ์์ง ์์คํ ์ ๋ฉ์์ง๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ์ธ์คํด์ค์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ์ ์ผ๋ก ๋์ผํ ์๋น์ ๊ทธ๋ฃน์ ๊ณต์ ํ๋ ๋ง์ ์๋น์ ์ธ์คํด์ค๊ฐ ์์ต๋๋ค.
์ฝ๊ธฐ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋ผ ์ ์์ต๋๋ค.
- ์ฃผ์ ์ ์ฌ๋ฌ ํํฐ์ ์ด ์์
- ์ฌ๋ฌ ์๋น์ ๊ทธ๋ฃน์ด ๋์์ ์ฃผ์ ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋น์ ๊ทธ๋ฃน์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ณ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ํ์ง ์์ ๋ค๋๋ค ๋ฌธ์ ์ ๋๋ค. Kafka๊ฐ ์๋น์ ๊ทธ๋ฃน, ์๋น์ ์ธ์คํด์ค ๋ฐ ํํฐ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ธฐ ์ํด ์ ์ง์ ์ผ๋ก ๋ ๋ณต์กํ ์ผ๋ จ์ ์ฝ๊ธฐ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์๋น์ ๋ฐ ์๋น์ ๊ทธ๋ฃน
ํ๋์ ํํฐ์
(
๊ทธ๋ฆผ 3-2. ์๋น์๊ฐ ํํฐ์
์์ ์ฝ์
์๋น์ ์ธ์คํด์ค๊ฐ ์์ฒด group_id๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ฃผ์ ์ ์ฐ๊ฒฐํ๋ฉด ์ฝ๊ธฐ ํํฐ์
๊ณผ ํด๋น ํํฐ์
์ ์คํ์
์ด ํ ๋น๋ฉ๋๋ค. ์ด ์คํ์
์ ์์น๋ ํด๋ผ์ด์ธํธ์์ ๊ฐ์ฅ ์ต๊ทผ ์์น(์ต์ ๋ฉ์์ง) ๋๋ ๊ฐ์ฅ ์ด๊ธฐ ์์น(๊ฐ์ฅ ์ค๋๋ ๋ฉ์์ง)์ ๋ํ ํฌ์ธํฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์๋น์๋ ์ฃผ์ ์์ ๋ฉ์์ง๋ฅผ ์์ฒญ(ํด๋ง)ํ์ฌ ๋ก๊ทธ์์ ์์ฐจ์ ์ผ๋ก ์ฝ์ต๋๋ค.
์คํ์
์์น๋ ์ ๊ธฐ์ ์ผ๋ก Kafka์ ๋ค์ ์ปค๋ฐ๋๊ณ ๋ด๋ถ ์ฃผ์ ์ ๋ฉ์์ง๋ก ์ ์ฅ๋ฉ๋๋ค. _์๋น์_์คํ์
. ์ผ๋ฐ ๋ธ๋ก์ปค์ ๋ฌ๋ฆฌ ์ฝ์ ๋ฉ์์ง๋ ์ฌ์ ํ ์ญ์ ๋์ง ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ๋ ์คํ์
์ ๋๊ฐ์ ์ด๋ฏธ ๋ณธ ๋ฉ์์ง๋ฅผ ๋ค์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ ๋
ผ๋ฆฌ์ ์๋น์๊ฐ ๋ค๋ฅธ group_id๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ ๋ ์ฒซ ๋ฒ์งธ(
๊ทธ๋ฆผ 3-3. ์๋ก ๋ค๋ฅธ ์๋น์ ๊ทธ๋ฃน์ ๋ ์๋น์๊ฐ ๋์ผํ ํํฐ์
์์ ์ฝ์ต๋๋ค.
์๋น์ ๊ทธ๋ฃน์ ์๋น์
ํ๋์ ์๋น์ ์ธ์คํด์ค๊ฐ ํํฐ์
์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ํฌ์ธํฐ๋ฅผ ์์ ํ ์ ์ดํ๊ณ ์ด์ ์น์
์์ ์ค๋ช
ํ ๋๋ก ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์๋น์์ ์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ํ๋์ ํํฐ์
์ด ์๋ ์ฃผ์ ์ ๋์ผํ group_id๋ก ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ ๋ง์ง๋ง์ผ๋ก ์ฐ๊ฒฐ๋ ์ธ์คํด์ค์ ํฌ์ธํฐ์ ๋ํ ์ ์ด๊ถ์ด ๋ถ์ฌ๋๊ณ ๊ทธ ์๊ฐ๋ถํฐ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์์ ํฉ๋๋ค(
๊ทธ๋ฆผ 3-4. ๋์ผํ ์๋น์ ๊ทธ๋ฃน์ ๋ ์๋น์๊ฐ ๋์ผํ ํํฐ์
์์ ์ฝ์ต๋๋ค.
์๋น์ ์ธ์คํด์ค ์๊ฐ ํํฐ์ ์๋ฅผ ์ด๊ณผํ๋ ์ด๋ฌํ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ผ์ข ์ ๋ ์ ์๋น์๋ก ์๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ์๋น์ ์ธ์คํด์ค์ "ํ์ฑ-์๋"(๋๋ "hot-warm") ํด๋ฌ์คํฐ๋ง์ด ํ์ํ ๊ฒฝ์ฐ ์ ์ฉํ ์ ์์ง๋ง ๋ณ๋ ฌ๋ก ์ฌ๋ฌ ์๋น์๋ฅผ ์คํ("active-active" ๋๋ "hot-hot")ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ผ๋ฐ์ ์ ๋๋ค. ๋๊ธฐ ์ค์ ๋๋ค.
์์์ ์ค๋ช ํ ์ด ๋ฉ์์ง ๋ฐฐํฌ ๋์์ ์ผ๋ฐ JMS ๋๊ธฐ์ด์ ๋์ ๋ฐฉ์๊ณผ ๋น๊ตํ ๋ ๋๋ผ์ด ๊ฒ์ผ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ธ์์ ๋๊ธฐ์ด๋ก ์ ์ก๋ ๋ฉ์์ง๋ ๋ ์๋น์ ์ฌ์ด์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋ฉ๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์๋น์์ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ๋ฉ์์ง๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ์ฝ๊ธฐ ์๋๋ฅผ ๋์ด๊ฑฐ๋ ์ฝ๊ธฐ ํ๋ก์ธ์ค์ ์์ ์ฑ์ ๋์ด๊ธฐ ์ํด ์ด ์์ ์ ์ํํฉ๋๋ค. ํ ๋ฒ์ ํ๋์ ์๋น์ ์ธ์คํด์ค๋ง ํํฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ผ๋ฏ๋ก Kafka์์๋ ์ด๋ป๊ฒ ์ด๋ฅผ ๋ฌ์ฑํฉ๋๊น?
์ด๋ฅผ ์ํํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋จ์ผ ์๋น์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ ์ค๋ ๋ ํ์ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฒ๋ฆฌ ์ฒ๋ฆฌ๋์ ์ฆ๊ฐ์ํค์ง๋ง ์๋น์ ๋ก์ง์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํค๊ณ ํ๋ ์์คํ ์ ๊ฒฌ๊ณ ์ฑ์ ์ฆ๊ฐ์ํค๋ ๋ฐ ์๋ฌด๋ฐ ๋์์ด ๋์ง ์์ต๋๋ค. ์ ์ ๋๋ ์ ์ฌํ ์ด๋ฒคํธ๋ก ์ธํด ์๋น์ ์ฌ๋ณธ ํ๋๊ฐ ๋ค์ด๋๋ฉด ๋นผ๊ธฐ๊ฐ ์ค์ง๋ฉ๋๋ค.
Kafka์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ์ ๋ฐฉ๋ฒ์ b๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.ะ๋ ๋ง์ ํํฐ์ .
ํํฐ์ ๋
ํํฐ์
์ ๋จ์ผ ๋ธ๋ก์ปค ์ธ์คํด์ค์ ๋์ญํญ์ ๋์ด ์ฃผ์ ์ฝ๊ธฐ ๋ฐ ํ์ฅ์ ๋ณ๋ ฌํํ๋ ์ฃผ์ ๋ฉ์ปค๋์ฆ์
๋๋ค. ์ด๋ฅผ ๋ ์ ์ดํดํ๊ธฐ ์ํด ๋ ๊ฐ์ ํํฐ์
์ด ์๋ ์ฃผ์ ๊ฐ ์๊ณ ํ ๋ช
์ ์๋น์๊ฐ ์ด ์ฃผ์ ๋ฅผ ๊ตฌ๋
ํ๋ ์ํฉ์ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค(
๊ทธ๋ฆผ 3-5. ํ ์๋น์๊ฐ ์ฌ๋ฌ ํํฐ์
์์ ์ฝ์
์ด ์๋๋ฆฌ์ค์์ ์๋น์๋ ๋ ํํฐ์
์ group_id์ ํด๋นํ๋ ํฌ์ธํฐ์ ๋ํ ์ ์ด๊ถ์ ๋ถ์ฌ๋ฐ๊ณ ๋ ํํฐ์
์์ ๋ฉ์์ง๋ฅผ ์ฝ๊ธฐ ์์ํฉ๋๋ค.
๋์ผํ group_id์ ๋ํ ์ถ๊ฐ ์๋น์๊ฐ ์ด ์ฃผ์ ์ ์ถ๊ฐ๋๋ฉด Kafka๋ ํํฐ์
์ค ํ๋๋ฅผ ์ฒซ ๋ฒ์งธ ์๋น์์์ ๋ ๋ฒ์งธ ์๋น์๋ก ์ฌํ ๋นํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋น์์ ๊ฐ ์ธ์คํด์ค๋ ์ฃผ์ ์ ํ ํํฐ์
์์ ์ฝ์ต๋๋ค(
๋ฉ์์ง๊ฐ 20๊ฐ์ ์ค๋ ๋์์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ๋๋๋ก ํ๋ ค๋ฉด ์ต์ 20๊ฐ์ ํํฐ์ ์ด ํ์ํฉ๋๋ค. ํํฐ์ ์๊ฐ ์ ์ผ๋ฉด ๋ฐฐํ์ ์๋น์์ ๋ํ ๋ ผ์์์ ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ์์ ํ ๊ฒ์ด ์๋ ์๋น์๋ง ๋จ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆผ 3-6. ๋์ผํ ์๋น์ ๊ทธ๋ฃน์ ๋ ์๋น์๊ฐ ์๋ก ๋ค๋ฅธ ํํฐ์
์์ ์ฝ์ต๋๋ค.
์ด ์ฒด๊ณ๋ JMS ๋๊ธฐ์ด์ ์ ์งํ๋ ๋ฐ ํ์ํ ๋ฉ์์ง ๋ฐฐํฌ์ ๋นํด Kafka ๋ธ๋ก์ปค์ ๋ณต์ก์ฑ์ ํฌ๊ฒ ์ค์ ๋๋ค. ์ฌ๊ธฐ์ ๋ค์ ์ฌํญ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
- ๋ผ์ด๋ ๋ก๋น ํ ๋น, ํ๋ฆฌํ์น ๋ฒํผ์ ํ์ฌ ์ฉ๋ ๋๋ ์ด์ ๋ฉ์์ง(JMS ๋ฉ์์ง ๊ทธ๋ฃน์ ๊ฒฝ์ฐ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ฉ์์ง๋ฅผ ์์ ํด์ผ ํ๋ ์๋น์.
- ์ด๋ค ๋ฉ์์ง๊ฐ ์ด๋ค ์๋น์์๊ฒ ์ ์ก๋๊ณ ์คํจ ์ ๋ค์ ์ ๋ฌ๋์ด์ผ ํ๋์ง ์ฌ๋ถ.
Kafka ๋ธ๋ก์ปค๊ฐ ํด์ผ ํ ์ผ์ ์๋น์๊ฐ ๋ฉ์์ง๋ฅผ ์์ฒญํ ๋ ์๋น์์๊ฒ ์์ฐจ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๊ต์ ๋ฐ ์คํจํ ๋ฉ์์ง ์ฌ์ ์ก์ ๋ํ ์๊ตฌ ์ฌํญ์ ์ฌ๋ผ์ง์ง ์์ต๋๋ค. ์ด์ ๋ํ ์ฑ ์์ ๋จ์ํ ๋ธ๋ก์ปค์์ ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ฆ, ์ฝ๋์์ ์ด๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ฉ์์ง ๋ณด๋ด๊ธฐ
๋ฉ์์ง๋ฅผ ๋ณด๋ผ ํํฐ์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ํด๋น ๋ฉ์์ง ์์ฑ์์ ์ฑ ์์ ๋๋ค. ์ด ์์ ์ด ์ํ๋๋ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ ค๋ฉด ๋จผ์ ์ค์ ๋ก ์ ํํ ๋ฌด์์ ๋ณด๋ด๋์ง ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
JMS์์๋ ๋ฉํ๋ฐ์ดํฐ(ํค๋ ๋ฐ ์์ฑ)์ ํ์ด๋ก๋(ํ์ด๋ก๋)๋ฅผ ํฌํจํ๋ ๋ณธ๋ฌธ์ด ์๋ ๋ฉ์์ง ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ฉด Kafka์์๋ ๋ฉ์์ง๊ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ "ํค-๊ฐ". ๋ฉ์์ง ํ์ด๋ก๋๋ ๊ฐ์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๋ฐ๋ฉด์ ํค๋ ์ฃผ๋ก ํํฐ์ ๋์ ์ฌ์ฉ๋๋ฉฐ ๋ค์์ ํฌํจํด์ผ ํฉ๋๋ค. ๋น์ฆ๋์ค ๋ก์ง ํน์ ํค๊ด๋ จ ๋ฉ์์ง๋ฅผ ๋์ผํ ํํฐ์ ์ ๋ฃ์ต๋๋ค.
2์ฅ์์๋ ๊ด๋ จ ์ด๋ฒคํธ๋ฅผ ๋จ์ผ ์๋น์๊ฐ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ์จ๋ผ์ธ ๋ฒ ํ ์๋๋ฆฌ์ค์ ๋ํด ๋ ผ์ํ์ต๋๋ค.
- ์ฌ์ฉ์ ๊ณ์ ์ด ๊ตฌ์ฑ๋์์ต๋๋ค.
- ๋์ด ๊ณ์ ์ ์ ๋ฆฝ๋ฉ๋๋ค.
- ๊ณ์ข์์ ๋์ ์ธ์ถํ๋ ๋ด๊ธฐ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
๊ฐ ์ด๋ฒคํธ๊ฐ ์ฃผ์ ์ ๊ฒ์๋ ๋ฉ์์ง์ธ ๊ฒฝ์ฐ ์์ฐ ํค๋ ๊ณ์ ID์
๋๋ค.
๋ฉ์์ง๊ฐ Kafka Producer API๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ก๋๋ฉด ๋ฉ์์ง์ Kafka ํด๋ฌ์คํฐ์ ํ์ฌ ์ํ๊ฐ ์ฃผ์ด์ง๋ฉด ๋ฉ์์ง๋ฅผ ์ ์กํด์ผ ํ๋ ํํฐ์
์ ID๋ฅผ ๋ฐํํ๋ ํํฐ์
ํจ์๋ก ๋ฉ์์ง๊ฐ ์ ๋ฌ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ Partitioner ์ธํฐํ์ด์ค๋ฅผ ํตํด Java๋ก ๊ตฌํ๋ฉ๋๋ค.
์ด ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
interface Partitioner {
int partition(String topic,
Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);
}
Partitioner ๊ตฌํ์ ํค์ ๋ํด ๊ธฐ๋ณธ ๋ฒ์ฉ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํํฐ์ ์ ๊ฒฐ์ ํ๊ฑฐ๋ ํค๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ผ์ด๋ ๋ก๋น์ ์ฌ์ฉํฉ๋๋ค. ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ผ๋ก๋ ์ง์ ์์ฑํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค.
๋๋ง์ ํํฐ์ ๋ ์ ๋ต ์์ฑ
๋ฉ์์ง ํ์ด๋ก๋์ ํจ๊ป ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๋ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์ ์ ํ์ด๋ก๋๋ ๊ฒ์ ๊ณ์ ์ ์
๊ธํ๋ผ๋ ์ง์์
๋๋ค. ๋ช
๋ น์ ์ ์ก ์ ์์ ๋์ง ์๋๋ก ๋ณด์ฅํ๊ณ ์ ๋ขฐํ ์ ์๋ ์
์คํธ๋ฆผ ์์คํ
๋ง ํด๋น ๋ช
๋ น์ ์์ํ ์ ์๋๋ก ๋ณด์ฅํ๋ ค๋ ๊ฒ์
๋๋ค. ์ด ๊ฒฝ์ฐ ์ก์ ๋ฐ ์์ ์์คํ
์ ์๋ช
์ ์ฌ์ฉํ์ฌ ๋ฉ์์ง๋ฅผ ์ธ์ฆํ๋ ๋ฐ ๋์ํฉ๋๋ค.
์ผ๋ฐ JMS์์๋ ๋จ์ํ "๋ฉ์์ง ์๋ช
" ์์ฑ์ ์ ์ํ๊ณ ๋ฉ์์ง์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ Kafka๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง ์๊ณ ํค์ ๊ฐ๋ง ์ ๊ณตํฉ๋๋ค.
๊ฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ค๋ ์ํ ์ก๊ธ ํ์ด๋ก๋์ด๋ฏ๋ก ํค์์ ์ฌ์ฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ ์๋ฐ์ ์์ต๋๋ค. ํํฐ์ ๋์ ์ํด ๊ณ์ ID๊ฐ ํ์ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ๊ณ์ ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ JSON ๊ตฌ์กฐ๊ฐ ๋์ต๋๋ค.
{
"signature": "541661622185851c248b41bf0cea7ad0",
"accountId": "10007865234"
}
์๋ช ๊ฐ์ ํ์ด๋ก๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก Partitioner ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ํด์ฑ ์ ๋ต์ ๊ด๋ จ ๋ฉ์์ง๋ฅผ ์์ ์ ์ผ๋ก ๊ทธ๋ฃนํํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ํค๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ accountId ๊ฐ์ ๋ถํ ํ๋ ์์ฒด ์ ๋ต์ ์์ฑํด์ผ ํฉ๋๋ค.
Kafka์๋ ์ ์ฅ์์ ๋ฉ์์ง ์์์ ๊ฐ์งํ๋ ์ฒดํฌ์ฌ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์ฒด ๋ณด์ ๊ธฐ๋ฅ ์ธํธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์์ ๊ฐ์ ์ฐ์ ๋ณ ์๊ตฌ ์ฌํญ์ด ๋๋๋ก ๋ํ๋ฉ๋๋ค.
์ฌ์ฉ์์ ๋ถํ ์ ๋ต์ ๋ชจ๋ ๊ด๋ จ ๋ฉ์์ง๊ฐ ๋์ผํ ๋ถํ ์์ ๋๋๋๋ก ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๊ฐ๋จํด ๋ณด์ด์ง๋ง ๊ด๋ จ ๋ฉ์์ง ์์ ์ง์ ์ ์ค์์ฑ๊ณผ ์ฃผ์ ์ ํํฐ์ ์๊ฐ ์ผ๋ง๋ ๊ณ ์ ๋์ด ์๋์ง์ ๋ฐ๋ผ ์๊ตฌ ์ฌํญ์ด ๋ณต์กํด์ง ์ ์์ต๋๋ค.
์ฃผ์ ์ ํํฐ์ ์๋ ํธ๋ํฝ์ด ์ด๊ธฐ ์์์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์ถ๊ฐ๋ ์ ์์ผ๋ฏ๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฉ์์ง ํค๋ ์๋ ์ ์ก๋ ํํฐ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์์ฐ์ ์ธ์คํด์ค ๊ฐ์ ๊ณต์ ํ ์ํ์ ์ผ๋ถ๋ฅผ ์๋ฏธํฉ๋๋ค.
๊ณ ๋ คํด์ผ ํ ๋ ๋ค๋ฅธ ์์๋ ํํฐ์
๊ฐ์ ๋ฉ์์ง๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ ๊ฒ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํค๋ ๋ฉ์์ง ์ ์ฒด์ ๊ท ๋ฑํ๊ฒ ๋ฐฐํฌ๋์ง ์์ผ๋ฉฐ ํด์ ํจ์๋ ์์ ํค ์งํฉ์ ๋ํ ๋ฉ์์ง์ ๊ณต์ ํ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
๋ฉ์์ง ๋ถํ ์ ์ ํํ๋๋ผ๋ ๊ตฌ๋ถ์ ์์ฒด๋ฅผ ์ฌ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค.
์๋ก ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ ์๋ Kafka ํด๋ฌ์คํฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ๊ธฐ ์ํ ์๊ตฌ ์ฌํญ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ฅผ ์ํด Kafka๋ ํ ํด๋ฌ์คํฐ์์ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ ๋ค๋ฅธ ํด๋ฌ์คํฐ๋ก ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ MirrorMaker๋ผ๋ ๋ช ๋ น์ค ๋๊ตฌ์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
MirrorMaker๋ ํด๋ฌ์คํฐ ๊ฐ์ ๋ณต์ ํ ๋ ๋ฉ์์ง ๊ฐ์ ์๋์ ์์๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋ณต์ ๋ ์ฃผ์ ์ ํค๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค. ํด๋น ์ฃผ์ ์ ๋ํ ํํฐ์ ์๊ฐ ๋ ํด๋ฌ์คํฐ์์ ๋์ผํ์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธฐ๋ณธ ํด์ฑ ๋๋ ๋ผ์ด๋ ๋ก๋น์ด ๋๋ถ๋ถ์ ์๋๋ฆฌ์ค์์ ์ ์๋ํ๋ฏ๋ก ์ฌ์ฉ์ ์ง์ ํํฐ์ ๋ ์ ๋ต์ ์๋์ ์ผ๋ก ๋๋ญ ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ ฅํ ์์ ๋ณด์ฅ์ด ํ์ํ๊ฑฐ๋ ํ์ด๋ก๋์์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ ํํฐ์ ๋์ ์์ธํ ์ดํด๋ด์ผ ํฉ๋๋ค.
Kafka์ ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ ์ด์ ์ ๊ธฐ์กด ๋ธ๋ก์ปค์ ์ผ๋ถ ์ฑ ์์ ํด๋ผ์ด์ธํธ๋ก ์ด์ ํ๋ ๋ฐ์ ๋น๋กฏ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ณ๋ ฌ๋ก ์์ ํ๋ ์ฌ๋ฌ ์๋น์์๊ฒ ์ ์ฌ์ ์ผ๋ก ๊ด๋ จ๋ ๋ฉ์์ง๋ฅผ ๋ฐฐํฌํ๊ธฐ๋ก ๊ฒฐ์ ํฉ๋๋ค.
JMS ๋ธ๋ก์ปค๋ ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ํฅ๋ฏธ๋กญ๊ฒ๋ JMS ๋ฉ์์ง ๊ทธ๋ฃน(SLB(์คํฐํค ๋ก๋ ๋ฐธ๋ฐ์ฑ) ์ ๋ต์ ๋ณํ)์ ํตํด ๊ตฌํ๋ ๋์ผํ ์๋น์์๊ฒ ๊ด๋ จ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฉ์ปค๋์ฆ๋ ๋ฐ์ ์๊ฐ ๋ฉ์์ง๋ฅผ ๊ด๋ จ์ผ๋ก ํ์ํด์ผ ํฉ๋๋ค. JMS์ ๊ฒฝ์ฐ ๋ธ๋ก์ปค๋ ์ด ๊ด๋ จ ๋ฉ์์ง ๊ทธ๋ฃน์ ์ฌ๋ฌ ์๋น์ ์ค ํ๋์ ์๋น์์๊ฒ ๋ณด๋ด๊ณ ์๋น์๊ฐ ๋จ์ด์ง๋ฉด ๊ทธ๋ฃน์ ์์ ๊ถ์ ์ด์ ํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
์์ฐ์ ๊ณ์ฝ
๋ถํ ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋ ๊ณ ๋ คํด์ผ ํ ์ ์ผํ ์ฌํญ์ด ์๋๋๋ค. Java API์์ Producer ํด๋์ค์ send() ๋ฉ์๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Future < RecordMetadata > send(ProducerRecord < K, V > record);
Future < RecordMetadata > send(ProducerRecord < K, V > record, Callback callback);
๋ ๋ฉ์๋ ๋ชจ๋ ์ ์ก ์์ ์ด ์ฆ์ ์ํ๋์ง ์์์ ๋ํ๋ด๋ Future๋ฅผ ๋ฐํํ๋ค๋ ์ ์ ์ฆ์ ์ ์ํด์ผ ํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๋ฉ์์ง(ProducerRecord)๊ฐ ๊ฐ ํ์ฑ ํํฐ์ ์ ์ ์ก ๋ฒํผ์ ๊ธฐ๋ก๋๊ณ Kafka ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ก ๋ธ๋ก์ปค์ ์ ์ก๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๋๊ฐ ์์ฒญ๋๊ฒ ๋นจ๋ผ์ง์ง๋ง ๊ฒฝํ์ด ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๊ฐ ์ค์ง๋๋ฉด ๋ฉ์์ง๋ฅผ ์์ ์ ์์ต๋๋ค.
ํญ์ ๊ทธ๋ ๋ฏ์ด ์ ์ก ์์ ์ ๋ณด๋ค ์์ ์ ์ผ๋ก ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด ๋ฒํผ์ ํฌ๊ธฐ๋ 0์ผ๋ก ์ค์ ํ ์ ์์ผ๋ฉฐ ๋ณด๋ด๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ค๋ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ธ๋ก์ปค๋ก์ ๋ฉ์์ง ์ ์ก์ด ์๋ฃ๋ ๋๊น์ง ๊ฐ์ ๋ก ๋๊ธฐํฉ๋๋ค.
RecordMetadata metadata = producer.send(record).get();
๋ฉ์์ง ์ฝ๊ธฐ์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ
๋ฉ์์ง ์ฝ๊ธฐ์๋ ์ถ์ธกํด์ผ ํ ์ถ๊ฐ์ ์ธ ๋ณต์ก์ฑ์ด ์์ต๋๋ค. ๋ฉ์์ง์ ๋ํ ์๋ต์ผ๋ก ๋ฉ์์ง ์์ ๊ธฐ๋ฅผ ์คํํ ์ ์๋ JMS API์ ๋ฌ๋ฆฌ ์๋น์ Kafka๋ ํฌํ๋ง ํฉ๋๋ค. ๋ฐฉ๋ฒ์ ์์ธํ ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ํฌํ()์ด ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ:
ConsumerRecords < K, V > poll(long timeout);
๋ฉ์๋์ ๋ฐํ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ ์ปจํ ์ด๋ ๊ตฌ์กฐ์ ๋๋ค. ์๋น์ ๊ธฐ๋ก ์ ์ฌ์ ์ผ๋ก ์ฌ๋ฌ ํํฐ์ ์์. ์๋น์ ๊ธฐ๋ก ํ์๋ ํํฐ์ ๊ณผ ๊ฐ์ ๊ด๋ จ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์๋ ํค-๊ฐ ์์ ๋ํ ํ๋ ๊ฐ์ฒด ์์ฒด์ ๋๋ค.
2์ฅ์์ ๋
ผ์ํ ๋ฐ์ ๊ฐ์ด, ์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฑฐ๋ ์ค๋จ๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ์ฑ๊ณต์ ์ผ๋ก ๋๋ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์ ๊ฒฝ์ฐ ๋ฉ์์ง์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์ผ๋์ ๋์ด์ผ ํฉ๋๋ค. JMS์์ ์ด๊ฒ์ ํ์ธ ๋ชจ๋๋ฅผ ํตํด ์ฒ๋ฆฌ๋์์ต๋๋ค. ๋ธ๋ก์ปค๋ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๋ฉ์์ง๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์์ ๋๋ ๊ฐ์ง ๋ฉ์์ง๋ฅผ ๋ค์ ์ ๋ฌํฉ๋๋ค(ํธ๋์ญ์
์ด ์ฌ์ฉ๋์๋ค๊ณ ๊ฐ์ ).
Kafka๋ ๋งค์ฐ ๋ค๋ฅด๊ฒ ์๋ํฉ๋๋ค. ๊ต์ ํ ๋ฉ์์ง๋ ๋ธ๋ก์ปค์์ ์ญ์ ๋์ง ์์ผ๋ฉฐ ์คํจ ์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ ๊ต์ ์ฝ๋ ์์ฒด์ ์ฑ
์์
๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋งํ๋ฏ์ด ์๋น์ ๊ทธ๋ฃน์ ๋ก๊ทธ์ ์คํ์ ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด ์คํ์ ๊ณผ ๊ด๋ จ๋ ๋ก๊ทธ ์์น๋ ๋ค์์ ๋ํ ์๋ต์ผ๋ก ๋ฐํ๋ ๋ค์ ๋ฉ์์ง์ ํด๋นํฉ๋๋ค. ํฌํ(). ์ด ์คํ์ ์ด ์ฆ๊ฐํ๋ ์์ ์ด ํ๋ ์ ๊ฒฐ์ ์ ์ ๋๋ค.
์์์ ์ค๋ช ํ ์ฝ๊ธฐ ๋ชจ๋ธ๋ก ๋์๊ฐ์ ๋ฉ์์ง ์ฒ๋ฆฌ๋ ์ธ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ฝ์ ๋ฉ์์ง๋ฅผ ๊ฒ์ํฉ๋๋ค.
- ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฉ์์ง๋ฅผ ํ์ธํฉ๋๋ค.
Kafka ์๋น์๋ ๊ตฌ์ฑ ์ต์ ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ํ์ฑํ.์๋.์ปค๋ฐ. ์ด๊ฒ์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์ค์ ์ด๋ฉฐ "์๋"์ด๋ผ๋ ๋จ์ด๊ฐ ํฌํจ๋ ์ค์ ์์ ํํ ๋ณผ ์ ์์ต๋๋ค.
Kafka 0.10 ์ด์ ์๋ ์ด ์ต์ ์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ค์ ํธ์ถ์์ ์ฝ์ ๋ง์ง๋ง ๋ฉ์์ง์ ์คํ์ ์ ๋ณด๋ ๋๋ค. ํฌํ() ์ฒ๋ฆฌ ํ. ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์ง๋ง ํธ์ถํ๊ธฐ ์ ์ ์๊ธฐ์น ์๊ฒ ํ๊ดด๋ ๊ฒฝ์ฐ ์ด๋ฏธ ๊ฐ์ ธ์จ ๋ฉ์์ง๋ฅผ ๋ค์ ์ฒ๋ฆฌํ ์ ์์์ ์๋ฏธํ์ต๋๋ค. ํฌํ(). ๋ธ๋ก์ปค๋ ๋ฉ์์ง๋ฅผ ์ฝ์ ํ์์ ๋ํ ์ํ๋ฅผ ์ ์งํ์ง ์๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๋ ๋ค์ ์๋น์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ ์ ์ ์์ต๋๋ค. ์ด ๋์์ ์์ฌ ํธ๋์ญ์ ์ด์์ต๋๋ค. ์คํ์ ์ ๋ฉ์์ง๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๊ฒฝ์ฐ์๋ง ์ปค๋ฐ๋์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ์ค๋จ๋๋ฉด ๋ธ๋ก์ปค๋ ๋์ผํ ๋ฉ์์ง๋ฅผ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์ ๋ค์ ๋ณด๋ ๋๋ค. ์ด ๋์์ ๋ฉ์์ง ์ ๋ฌ ๋ณด์ฅ "์ ์ด๋ ํ ๋ฒ".
Kafka 0.10์์๋ ๊ตฌ์ฑ๋ ๋๋ก ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ปค๋ฐ์ด ํธ๋ฆฌ๊ฑฐ๋๋๋ก ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค. auto.commit.interval.ms. ์ด ๋์์ JMS AUTO_ACKNOWLEDGE์ DUPS_OK_ACKNOWLEDGE ๋ชจ๋ ์ฌ์ด์ ์์ต๋๋ค. ์๋ ์ปค๋ฐ์ ์ฌ์ฉํ๋ฉด ๋ฉ์์ง๊ฐ ์ค์ ๋ก ์ฒ๋ฆฌ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ฉ์์ง๊ฐ ์ปค๋ฐ๋ ์ ์์ต๋๋ค. ์ด๋ ๋๋ฆฐ ์๋น์์ ๊ฒฝ์ฐ์ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋น์๊ฐ ์ค๋จ๋ ๊ฒฝ์ฐ ์ปค๋ฐ๋ ์์น์์ ์์ํ์ฌ ๋ค์ ์๋น์๊ฐ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค๋ฏ๋ก ๋ฉ์์ง๊ฐ ๋๋ฝ๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ Kafka๋ ๋ฉ์์ง๋ฅผ ์์คํ์ง ์์์ผ๋ฉฐ ์ฝ๊ธฐ ์ฝ๋๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์ง ์์์ต๋๋ค.
์ด ๋ชจ๋๋ ๋ฒ์ 0.9์ ๋์ผํ ์ฝ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง ์คํจํ ๊ฒฝ์ฐ ์คํ์ ์ด ์ปค๋ฐ๋์ง ์์ ์ ์ฌ์ ์ผ๋ก ๋ฐฐ๋ฌ์ด ๋ ๋ฐฐ๊ฐ ๋ ์ ์์ต๋๋ค. ์คํํ ๋ ๊ฐ์ ธ์ค๋ ๋ฉ์์ง๊ฐ ๋ง์์๋ก ํฌํ(), ์ด ๋ฌธ์ ๊ฐ ๋ง์์๋ก.
21ํ์ด์ง์ "๋๊ธฐ์ด์์ ๋ฉ์์ง ์ฝ๊ธฐ"์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ์ฅ์ ๋ชจ๋๋ฅผ ๊ณ ๋ คํ ๋ ๋ฉ์์ง ์์คํ ์์ ๋ฉ์์ง๋ฅผ ํ ๋ฒ๋ง ์ ๋ฌํ๋ ๊ฒ์ ์์ต๋๋ค.
Kafka์๋ ์คํ์ (offset)์ ์ปค๋ฐ(commit)ํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค: ์๋ ๋ฐ ์๋. ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฉ์์ง๊ฐ ์ฒ๋ฆฌ๋์์ง๋ง ์ปค๋ฐ ์ ์ ์คํจํ ๊ฒฝ์ฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ปค๋ฐ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฐ์ํ๊ณ ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ์ฝ๋๊ฐ ์๋ฃ๋ ๊ฒฝ์ฐ ๋ฉ์์ง๋ฅผ ์ ํ ์ฒ๋ฆฌํ์ง ์๋๋ก ์ ํํ ์๋ ์์ต๋๋ค(์๋ง๋ Kafka 0.9 ๋ฐ ์ด์ ๋ฒ์ ์์).
๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ์ฌ Kafka ์๋น์ API์์ ์๋ ์คํ์ ์ปค๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ํ์ฑํ.์๋.์ปค๋ฐ ๋ค์ ๋ฉ์๋ ์ค ํ๋๋ฅผ false๋ก ์ง์ ํ๊ณ ๋ช ์์ ์ผ๋ก ํธ์ถํฉ๋๋ค.
void commitSync();
void commitAsync();
"์ ์ด๋ ํ ๋ฒ" ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ์คํ์ ์ ์๋์ผ๋ก ์ปค๋ฐํด์ผ ํฉ๋๋ค. commitSync()๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ํ ์ฆ์ ์ด ๋ช ๋ น์ ์คํํฉ๋๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋ฉ์์ง๊ฐ ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ์น์ธ๋๋ ๊ฒ์ ํ์ฉํ์ง ์์ง๋ง ํธ๋์ญ์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ฉด์ ์ ์ฌ์ ์ธ ์ฒ๋ฆฌ ์ง์ฐ์ ์ ๊ฑฐํ๋ ๋ฐ ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค. Kafka์๋ ํธ๋์ญ์ ์ด ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ๊ฐ์ง ๋ฉ์์ง๋ฅผ ์๋์ผ๋ก ๋กค๋ฐฑํฉ๋๋ค. ์๋น์๋ ๋ฉ์์ง๋ฅผ ์ฌ์ ๋ฌํ๊ธฐ ์ํด ๋ธ๋ก์ปค์ ์์กดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๋ ํ์ด๋ก๋ ๋ฐ ๋ฐฑ์๋ ์ค๋จ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ง์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- ํ๋์ ์์์ ์์ ์ผ๋ก ์ฌ๋ฌ ์ฃผ์ ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค. ๊ณง ๋ณด๊ฒ ๋๊ฒ ์ง๋ง, ์ ์ก๋ ๋ ํธ๋์ญ์ ์ ์กฐ์ ํ์ง ์๋ Kafka ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ์์คํ ์ ๋ค์ํ ์ฃผ์ ๋ฐ ํํฐ์ ์ ๋ํ ์ ์ด๊ฐ ์์ฃผํ ์ ์์ต๋๋ค. ์ด ๊ธ์ ์ฐ๋ ์์ ์ KIP-98๋ก ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ์์ ์ด ์ํ๋์์ต๋๋ค.
- ํ ์ฃผ์ ์์ ํ ๋ฉ์์ง๋ฅผ ์ฝ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ๋ฉ์์ง๋ฅผ ๋ค๋ฅธ ์ฃผ์ ๋ก ๋ณด๋ด๋ ๊ฒ์ ์ฐ๊ด์ํค์ญ์์ค. ๋ค์ ๋งํ์ง๋ง Kafka์ ์ํคํ ์ฒ๋ ํ๋์ ๋ฒ์ค๋ก ์คํ๋๋ ๋ง์ ๋ ๋ฆฝ ๋จธ์ ์ ์์กดํ๋ฉฐ ์ด๋ฅผ ์จ๊ธฐ๋ ค๋ ์๋๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋งํฌ๋ฅผ ํ์ฉํ๋ API ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. ์๋น์ ะธ ํ๋ก๋์ ๊ฑฐ๋์์. JMS์์ ์ด๊ฒ์ ๊ฐ์ฒด์ ์ํด ์ ๊ณต๋ฉ๋๋ค. ์ธ์ ์์ฑ๋๋ ๊ฒ ๋ฉ์์ง ์์ฐ์ ะธ ๋ฉ์์ง ์๋น์.
ํธ๋์ญ์ ์ ์์กดํ ์ ์๋ค๋ฉด ๊ธฐ์กด ๋ฉ์์ง ์์คํ ์์ ์ ๊ณตํ๋ ๊ฒ๊ณผ ์ ์ฌํ ์๋ฏธ ์ฒด๊ณ๋ฅผ ์ด๋ป๊ฒ ์ ๊ณตํ ์ ์์ต๋๊น?
์๋น์ ์ถฉ๋๊ณผ ๊ฐ์ด ๋ฉ์์ง๊ฐ ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ์๋น์์ ์คํ์ ์ด ์ฆ๊ฐํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์๋น์๋ ํํฐ์ ์ด ํ ๋น๋ ๋ ์๋น์ ๊ทธ๋ฃน์ด ๋ฉ์์ง๋ฅผ ๋์ณค๋์ง ์ฌ๋ถ๋ฅผ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ํ ๊ฐ์ง ์ ๋ต์ ์คํ์ ์ ์ด์ ์์น๋ก ๋๊ฐ๋ ๊ฒ์ ๋๋ค. Kafka ์๋น์ API๋ ์ด๋ฅผ ์ํด ๋ค์ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
void seek(TopicPartition partition, long offset);
void seekToBeginning(Collection < TopicPartition > partitions);
๋ฐฉ๋ฒ ๊ตฌํ๋ค() ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค
offsetsForTimes(์ง๋ timestampsToSearch) ๊ณผ๊ฑฐ์ ํน์ ์์ ์ผ๋ก ๋๊ฐ๊ธฐ.
์๋ฌต์ ์ผ๋ก ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ด์ ์ ์ฒ๋ฆฌ๋ ์ผ๋ถ ๋ฉ์์ง๋ฅผ ๋ค์ ์ฝ๊ณ ์ฒ๋ฆฌํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด 4์ฅ์์ ์ค๋ช ํ ๋๋ก ๋ฉฑ๋ฑ์ฑ ์ฝ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ ๋ณธ ๋ฉ์์ง๋ฅผ ์ถ์ ํ๊ณ ์ค๋ณต์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋๋ ๋ฉ์์ง ์์ค์ด๋ ์ค๋ณต์ด ํ์ฉ๋๋ ํ ์๋น์ ์ฝ๋๋ฅผ ๋จ์ํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค. ๋ก๊ทธ ์ด๋ฒคํธ, ๋ฉํธ๋ฆญ, ํด๋ฆญ ์ถ์ ๋ฑ๊ณผ ๊ฐ์ด Kafka๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ ๋ ๊ฐ๋ณ ๋ฉ์์ง์ ์์ค์ด ์ฃผ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฐ ์ํฅ์ ๋ฏธ์น์ง ์์ ๊ฒ์์ ์ดํดํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ์๋ฒฝํ๊ฒ ํ์ฉ๋ฉ๋๋ค. ๋ฐ๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ง๋ถ์ ๋ณด๋ด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ ๊ฐ๋ณ ๋ฉ์์ง๋ฅผ ์ ์คํ๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ชจ๋ ๋งฅ๋ฝ์ ๋ฌ๋ ค ์์ต๋๋ค.
๊ฐ์ธ์ ์ธ ๊ด์ฐฐ์ ๋ฐ๋ฅด๋ฉด ๋ฉ์์ง์ ๊ฐ๋๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊ฐ ๊ฐ๋ณ ๋ฉ์์ง์ ๊ฐ์น๋ ๊ฐ์ํฉ๋๋ค. ํฐ ๋ฉ์์ง๋ ์ง๊ณ๋ ํ์์ผ๋ก ๋ณผ ๋ ๊ฐ์น๊ฐ ์๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๊ณ ๊ฐ์ฉ์ฑ
๊ณ ๊ฐ์ฉ์ฑ์ ๋ํ Kafka์ ์ ๊ทผ ๋ฐฉ์์ ActiveMQ์ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋งค์ฐ ๋ค๋ฆ ๋๋ค. Kafka๋ ๋ชจ๋ ๋ธ๋ก์ปค ์ธ์คํด์ค๊ฐ ๋์์ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ๋ฐฐํฌํ๋ ์ค์ผ์ผ ์์ ํด๋ฌ์คํฐ๋ฅผ ์ค์ฌ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค.
Kafka ํด๋ฌ์คํฐ๋ ์๋ก ๋ค๋ฅธ ์๋ฒ์์ ์คํ๋๋ ์ฌ๋ฌ ๋ธ๋ก์ปค ์ธ์คํด์ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. Kafka๋ ๊ฐ ๋ ธ๋์ ์ ์ฉ ์คํ ๋ฆฌ์ง๊ฐ ์๋ ์ผ๋ฐ ๋ ๋ฆฝํ ํ๋์จ์ด์์ ์คํ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. SAN(Network Attached Storage) ์ฌ์ฉ์ ์ฌ๋ฌ ์ปดํจํ ๋ ธ๋๊ฐ ์๊ฐ์ ๋๊ณ ๊ฒฝ์ํ ์ ์์ผ๋ฏ๋ก ๊ถ์ฅ๋์ง ์์ต๋๋ค.ะซ์ ์ ์ ์ฅ ๊ฐ๊ฒฉ ๋ฐ ์ถฉ๋์ ๋ง๋ญ๋๋ค.
์นดํ์นด๋ ํญ์ ์ผ์ ธ ์ฒด๊ณ. ๋ง์ ๋๊ท๋ชจ Kafka ์ฌ์ฉ์๋ ํด๋ฌ์คํฐ๋ฅผ ์ข ๋ฃํ์ง ์์ผ๋ฉฐ ์ํํธ์จ์ด๋ ํญ์ ์์ฐจ์ ์ผ๋ก ๋ค์ ์์ํ์ฌ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ด๋ ๋ธ๋ก์ปค ๊ฐ์ ๋ฉ์์ง ๋ฐ ์ํธ ์์ฉ์ ๋ํด ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํจ์ผ๋ก์จ ๋ฌ์ฑ๋ฉ๋๋ค.
์๋ฒ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐ๋ ๋ธ๋ก์ปค
๊ธฐ๋ณธ ์ฌ๋ก์์ ์ฃผ์ ๋ ๋ค์ ์์ฑ์ ์ฌ์ฉํ์ฌ Kafka ํด๋ฌ์คํฐ์ ์์ฑ๋ฉ๋๋ค.
- ํํฐ์ ์. ์์ ๋ ผ์ํ ๋ฐ์ ๊ฐ์ด ์ฌ๊ธฐ์์ ์ฌ์ฉ๋๋ ์ ํํ ๊ฐ์ ์ํ๋ ๋ณ๋ ฌ ํ๋ ์์ค์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
- ๋ณต์ ํฉํฐ(ํฉํฐ)๋ ํด๋ฌ์คํฐ์์ ์ด ํํฐ์ ์ ๋ํ ๋ก๊ทธ๋ฅผ ํฌํจํด์ผ ํ๋ ๋ธ๋ก์ปค ์ธ์คํด์ค ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์กฐ์ ์ ์ํด ZooKeepers๋ฅผ ์ฌ์ฉํ์ฌ Kafka๋ ํด๋ฌ์คํฐ์ ๋ธ๋ก์ปค ๊ฐ์ ์ ํํฐ์ ์ ๊ณต์ ํ๊ฒ ๋ถ๋ฐฐํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๊ฒ์ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ ๋จ์ผ ์ธ์คํด์ค์ ์ํด ์ํ๋ฉ๋๋ค.
๋ฐํ์์ ๊ฐ ์ฃผ์ ํํฐ์ ์ ๋ํด ์ ์ด ์ฅ์น ๋ธ๋ก์ปค์๊ฒ ์ญํ ํ ๋น ๋ฆฌ๋ (๋ฆฌ๋, ๋ง์คํฐ, ๋ฐํ์) ๋ฐ ์ถ์ข ์ (์ถ์ข ์, ๋ ธ์, ๋ถํ). ์ด ํํฐ์ ์ ๋ฆฌ๋ ์ญํ ์ ํ๋ ๋ธ๋ก์ปค๋ ์์ฐ์๊ฐ ๋ณด๋ธ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ์๋น์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ฐฐํฌํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ฉ์์ง๊ฐ ์ฃผ์ ํํฐ์ ์ผ๋ก ์ ์ก๋๋ฉด ํด๋น ํํฐ์ ์ ํ๋ก์ ์ญํ ์ ํ๋ ๋ชจ๋ ๋ธ๋ก์ปค ๋ ธ๋์ ๋ฉ์์ง๊ฐ ๋ณต์ ๋ฉ๋๋ค. ํํฐ์ ์ ๋ํ ๋ก๊ทธ๋ฅผ ํฌํจํ๋ ๊ฐ ๋ ธ๋๋ฅผ ํธ์ถํฉ๋๋ค. ๋ ํ๋ฆฌ์นด. ๋ธ๋ก์ปค๋ ์ผ๋ถ ํํฐ์ ์์๋ ๋ฆฌ๋ ์ญํ ์ ํ๊ณ ๋ค๋ฅธ ํํฐ์ ์์๋ ํ๋ก์ ์ญํ ์ ํ ์ ์์ต๋๋ค.
๋ฆฌ๋๊ฐ ๋ณด์ ํ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ํฌํจํ๋ ํ๋ก์๋ฅผ ํธ์ถํฉ๋๋ค. ๋๊ธฐํ๋ ๋ณต์ ๋ณธ (๋๊ธฐํ๋ ์ํ์ ๋ณต์ ๋ณธ, ๋๊ธฐํ๋ ๋ณต์ ๋ณธ). ํํฐ์ ์ ๋ฆฌ๋ ์ญํ ์ ํ๋ ๋ธ๋ก์ปค๊ฐ ์๋ ์ค์ง๋๋ฉด ํด๋น ํํฐ์ ์ ๋ํด ์ต์ ์ํ์ด๊ฑฐ๋ ๋๊ธฐํ๋ ๋ธ๋ก์ปค๊ฐ ๋ฆฌ๋ ์ญํ ์ ๋งก์ ์ ์์ต๋๋ค. ๋ฏฟ์ ์ ์์ ์ ๋๋ก ์ง์ ๊ฐ๋ฅํ ๋์์ธ์ ๋๋ค.
์์ฐ์ ๊ตฌ์ฑ์ ์ผ๋ถ๋ ๋งค๊ฐ๋ณ์์ ๋๋ค. Acks, ์ ํ๋ฆฌ์ผ์ด์ ์ค๋ ๋๊ฐ ๊ณ์ ์ ์กํ๊ธฐ ์ ์ ๋ฉ์์ง ์์ ์ ํ์ธ(ํ์ธ)ํด์ผ ํ๋ ๋ณต์ ๋ณธ์ ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค(0, 1 ๋๋ ๋ชจ๋). ๋ก ์ค์ ํ ๊ฒฝ์ฐ ๋ชจ๋ ๊ทธ๋ฐ ๋ค์ ๋ฉ์์ง๊ฐ ์์ ๋๋ฉด ๋ฆฌ๋๋ ์ฃผ์ ์ค์ ์ ์ํด ์ ์๋ ์ฌ๋ฌ ํ(์์ฒด ํฌํจ)์์ ๋ ์ฝ๋์ ํ์ธ(ํ์ธ)์ ์์ ํ๋ ์ฆ์ ํ์ธ์ ์์ฐ์์๊ฒ ๋ค์ ๋ณด๋ ๋๋ค. min.insync.replicas (๊ธฐ๋ณธ๊ฐ 1). ๋ฉ์์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ณต์ ํ ์ ์๋ ๊ฒฝ์ฐ ์์ฐ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ์์ธ(์ถฉ๋ถํ์ง ์์ ๋ณต์ ๋ณธ ๋๋ ์ถฉ๋ถํ์ง ์์๋ณต์ ๋ณธ์ถ๊ฐํ).
์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ์ ๋ณต์ ๊ณ์๊ฐ 3(ํํฐ์ ๋น ๋ฆฌ๋ 1๊ฐ, ํ๋ก์ 2๊ฐ) ๋ฐ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์ฃผ์ ๋ฅผ ์์ฑํฉ๋๋ค. min.insync.replicas ์ด ๊ฒฝ์ฐ 2๋ก ์ค์ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํด๋ฌ์คํฐ๋ ์ฃผ์ ํํฐ์ ์ ๊ด๋ฆฌํ๋ ๋ธ๋ก์ปค ์ค ํ๋๊ฐ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ค๋จ๋๋๋ก ํ์ฉํฉ๋๋ค.
์ด๋ ์ฑ๋ฅ๊ณผ ์์ ์ฑ ๊ฐ์ ์ด๋ฏธ ์ต์ํ ์ ์ถฉ์์ผ๋ก ๋๋์๊ฐ๋๋ค. ํ๋ก์์ ํ์ธ(ํ์ธ)์ ์ํ ์ถ๊ฐ ๋๊ธฐ ์๊ฐ์ ํฌ์ํ์ฌ ๋ณต์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณ๋ ฌ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ์ต์ XNUMX๊ฐ ๋ ธ๋์ ๋ํ ๋ณต์ ๋ XNUMX๊ฐ ๋ ธ๋์ ๋์ผํ ์ฑ๋ฅ์ ๊ฐ์ต๋๋ค(๋คํธ์ํฌ ๋์ญํญ ์ฌ์ฉ๋ ์ฆ๊ฐ๋ ๋ฌด์).
์ด ๋ณต์ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ Kafka๋ ์์
์ ํตํด ๊ฐ ๋ฉ์์ง๋ฅผ ๋์คํฌ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ธฐ๋กํ ํ์๊ฐ ์์ต๋๋ค. ๋์กฐ(). ์์ฐ์๊ฐ ๋ณด๋ธ ๊ฐ ๋ฉ์์ง๋ ๋ถํ ์์ญ ๋ก๊ทธ์ ๊ธฐ๋ก๋์ง๋ง 2์ฅ์์ ์ค๋ช
ํ ๊ฒ์ฒ๋ผ ํ์ผ ์ฐ๊ธฐ๋ ์ด๊ธฐ์ ์ด์ ์ฒด์ ์ ๋ฒํผ์์ ์ํ๋ฉ๋๋ค. ์ด ๋ฉ์์ง๊ฐ ๋ค๋ฅธ Kafka ์ธ์คํด์ค์ ๋ณต์ ๋๊ณ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๊ฒฝ์ฐ ๋ฆฌ๋์ ์์ค์ ๋ฉ์์ง ์์ฒด๊ฐ ์์ค๋์์์ ์๋ฏธํ์ง ์์ผ๋ฉฐ ๋๊ธฐํ๋ ๋ณต์ ๋ณธ์ ์ํด ์ธ๊ณ๋ ์ ์์ต๋๋ค.
์์
์ํ ๊ฑฐ๋ถ ๋์กฐ() Kafka๋ ๋ฉ์์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ธ ์ ์๋ ๋งํผ ๋น ๋ฅด๊ฒ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์คํฌ๋ก ํ๋ฌ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ ์๊ฐ์ด ๊ธธ์๋ก ์ข์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋ก Kafka ๋ธ๋ก์ปค์ 64GB ์ด์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๋ ๊ฒ์ ๋๋ฌธ ์ผ์ด ์๋๋๋ค. ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋จ์ผ Kafka ์ธ์คํด์ค๊ฐ ๊ธฐ์กด ๋ฉ์์ง ๋ธ๋ก์ปค๋ณด๋ค ์์ฒ ๋ฐฐ ๋น ๋ฅธ ์๋๋ก ์ฝ๊ฒ ์คํ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์์
์ ์ ์ฉํ๋๋ก Kafka๋ฅผ ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค. ๋์กฐ() ๋ฉ์์ง ํจํค์ง์. Kafka์ ๋ชจ๋ ๊ฒ์ด ํจํค์ง ์งํฅ์ ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋ง์ ์ฌ์ฉ ์ฌ๋ก์์ ๊ฝค ์ ์๋ํ๋ฉฐ ๋งค์ฐ ๊ฐ๋ ฅํ ๋ณด์ฆ์ด ํ์ํ ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ๋๊ตฌ์
๋๋ค. Kafka์ ์์ํ ์ฑ๋ฅ์ ๋๋ถ๋ถ์ ๋ธ๋ก์ปค์ ํจํท์ผ๋ก ์ ์ก๋๋ ๋ฉ์์ง์ ์ด๋ฌํ ๋ฉ์์ง๊ฐ
๋จ์ผ Kafka ๋ธ๋ก์ปค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค Kafka ํด๋ฌ์คํฐ์์ ํจ์ฌ ๋ ๋์ ์ฑ๋ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฃผ์ ํํฐ์ ์ด ์ฌ๋ฌ ๊ฐ๋ณ ์์คํ ์ ๊ฑธ์ณ ํ์ฅ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฒฐ๊ณผ
์ด ์ฅ์์๋ Kafka ์ํคํ ์ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ธ๋ก์ปค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ๊ธฐ์กด ๋ฉ์์ง ๋ธ๋ก์ปค๋ณด๋ค ์ฒ๋ฆฌ๋์ด ๋ช ๋ฐฐ ๋ ๋ง์ ๋งค์ฐ ๊ฐ๋ ฅํ ๋ฉ์์ง ํ์ดํ๋ผ์ธ์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋ํด ๋ ผ์ํ์ผ๋ฉฐ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํคํ ์ฒ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด์์ต๋๋ค. ๋ค์ ์ฅ์์๋ ๋ฉ์์ง ๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํด๊ฒฐํด์ผ ํ๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ ๋ต์ ๋ ผ์ํฉ๋๋ค. ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์ ํฉ์ฑ์ ํ๊ฐํ ์ ์๋๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์์ง ๊ธฐ์ ์ ๋ํด ์ค๋ช ํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๋ ๊ฒ์ผ๋ก ์ด ์ฅ์ ๋๋ผ ๊ฒ์ ๋๋ค.
์ด์ ๋ฒ์ญ ๋ถ๋ถ:
๋ฒ์ญ ์๋ฃ:
๊ณ์ ๋ ...
๋ฑ๋ก๋ ์ฌ์ฉ์๋ง ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์กฐ์ง์์ Kafka๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
-
ะะฐ
-
์๋
-
์ด์ ์๋ ์ฌ์ฉํ์ง๋ง ์ง๊ธ์ ์ฌ์ฉํ์ง ์์
-
์ฐ๋ฆฌ๋ ์ฌ์ฉํ ๊ณํ์ ๋๋ค
38๋ช
์ ์ฌ์ฉ์๊ฐ ํฌํํ์ต๋๋ค. 8๋ช
์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ถํ์ต๋๋ค.
์ถ์ฒ : habr.com