Kafka Connector?
Last updated
Last updated
์นดํ์นด ์ปค๋ฅํฐ(Kafka Connector)๋ Apache Kafka์ ๋ฐ์ดํฐ ํตํฉ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ ์ํด Kafka Connect ํ๋ ์์ํฌ์์ ์ ๊ณต๋๋ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ์์ค์์ ์นดํ์นด๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์์งํ๊ณ , ์นดํ์นด์์ ์ธ๋ถ ์์คํ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. ์นดํ์นด ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปค์คํ ์ฝ๋ฉ ์์ด ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์๋ํํ ์ ์์ต๋๋ค.
Kafka Connect๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฐ๋์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ์ค๊ณ๋ ํ๋ ์์ํฌ์ ๋๋ค. ์ปค๋ฅํฐ๋ ์ด ํ๋ ์์ํฌ ์์์ ์คํ๋๋ฉฐ, ์์ค ์ปค๋ฅํฐ(Source Connector)์ ์ฑํฌ ์ปค๋ฅํฐ(Sink Connector) ๋ ๊ฐ์ง ์ข ๋ฅ๋ก ๋๋ฉ๋๋ค.
์์ค ์ปค๋ฅํฐ: ์ธ๋ถ ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ์นดํ์นด ํ ํฝ์ผ๋ก ๋ณด๋ด๋ ์ญํ ์ ํฉ๋๋ค.
์: MySQL, PostgreSQL, MongoDB, Elasticsearch ๋ฑ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ Kafka๋ก ์ ์ก.
์ฑํฌ ์ปค๋ฅํฐ: ์นดํ์นด ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ธ๋ถ ์์คํ ์ ์ ์ฅํ๋ ์ญํ ์ ํฉ๋๋ค.
์: ๋ฐ์ดํฐ๋ฅผ HDFS, Elasticsearch, RDBMS ๋ฑ์ ์ ์ฅ.
ํ์ฅ์ฑ: ๋ถ์ฐํ์ผ๋ก ๋์ํ์ฌ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ด๊ฒฐํจ์ฑ: ์ปค๋ฅํฐ๊ฐ ์คํจํ๋๋ผ๋ ์๋์ผ๋ก ๋ณต๊ตฌํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ๊ด๋ฆฌ ํธ์์ฑ: REST API๋ฅผ ํตํด ์ปค๋ฅํฐ๋ฅผ ๋ฐฐํฌ, ์ค์ , ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ๋ณํ(Transformation): ์คํธ๋ฆผ ๋ฐ์ดํฐ ๋ณํ ๋ฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ํํ๋ก ๊ฐ๊ณตํ ์ ์์ต๋๋ค.
Kafka ์ปค๋ฅํฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ ํฌ๋งท์ ์ผ์น์ํค๊ฑฐ๋, ๋ถํ์ํ ํ๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฑ์ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ ์ฉํฉ๋๋ค.
SMT ์์:
ํ๋ ๊ฐ์ ํ์์ ๋ณํํ๊ฑฐ๋, ๋ฉ์์ง์์ ํน์ ํ๋๋ฅผ ์ญ์ ๋๋ ์ถ๊ฐํ๋ ์์ .
์๋ฅผ ๋ค์ด, ํน์ JSON ๋ฐ์ดํฐ์ ์ผ๋ถ ํ๋๋ฅผ ํํฐ๋งํ์ฌ ์ ์กํ ๋ SMT๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Kafka ์์ค ์ปค๋ฅํฐ๋ ์ธ๋ถ ์์คํ ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ Kafka ํ ํฝ์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
์ฃผ๋ก ๋ฐ์ดํฐ ์์ง ํ์ดํ๋ผ์ธ์์ ๋ฐ์ดํฐ๋ฅผ Kafka๋ก ์คํธ๋ฆฌ๋ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฉ์์ง ์์คํ , ํ์ผ ์์คํ ๋ฑ ๋ค์ํ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
Kafka ์์ค ์ปค๋ฅํฐ๋ ์ธ๋ถ ์์คํ ์์ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ฅผ Kafka๋ก ์ง์์ ์ผ๋ก ์ ์กํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ๋ฐ์ดํฐ ์์ค๋ฅผ ํตํฉํ๊ณ , ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์์ค ์์คํ : ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์ธ๋ถ ์์คํ (์: MySQL, MongoDB, ํ์ผ ์์คํ , ํด๋ผ์ฐ๋ ์๋น์ค ๋ฑ)
Kafka ํ ํฝ: ์์ค ์ปค๋ฅํฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ชฉ์ ์ง(Kafka์ ๋ฐ์ดํฐ ์คํธ๋ฆผ)
์์ค ์ปค๋ฅํฐ์ ๋์ ๋ฐฉ์์ ์์ค ์์คํ ์์ Kafka ํด๋ฌ์คํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์ ๋๋ค.
์ปค๋ฅํฐ ์ด๊ธฐํ:
Kafka ์์ค ์ปค๋ฅํฐ๊ฐ ์์๋๋ฉด ์ค์ ํ์ผ์ ๋ฐํ์ผ๋ก ์ธ๋ถ ์์ค ์์คํ ์ ์ฐ๊ฒฐํ๊ณ , ํ์ํ ์ด๊ธฐํ ์์ ์ ์ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅํฐ์ ๊ฒฝ์ฐ JDBC ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
๋ฐ์ดํฐ ์ฝ๊ธฐ:
์์ค ์ปค๋ฅํฐ๋ ์์ค ์์คํ ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฝ์ด์ต๋๋ค. ์ด๋ ํด๋ง ๋ฐฉ์์ด๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
ํด๋ง ๋ฐฉ์: ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์ธ๋ถ ์์คํ ์์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์กฐํ.
์ด๋ฒคํธ ๊ธฐ๋ฐ: CDC(Change Data Capture)์ฒ๋ผ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฐ์ง.
Kafka ํ ํฝ์ผ๋ก ๋ฐ์ดํฐ ์ ์ก:
์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ Kafka์ ํน์ ํ ํฝ์ผ๋ก ์ ์กํฉ๋๋ค.
์ด ๋ฐ์ดํฐ๋ Kafka ํ ํฝ์ ๋ฉ์์ง ํํ๋ก ์ ์ฅ๋๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ Kafka Streams๋ ์๋น์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์คํ์ ๊ด๋ฆฌ:
์์ค ์ปค๋ฅํฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ ์์น(์คํ์ )๋ฅผ ๊ธฐ๋กํ์ฌ, ์ค๋จ ํ ์ฌ์์ ์ ์ค๋ณต ์์ด ๋ฐ์ดํฐ๋ฅผ ์ด์ด์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์คํ์ ์ Kafka์ __consumer_offsets ํ ํฝ์ ์ ์ฅ๋ฉ๋๋ค.
์ปค๋ฅํฐ(Connector): ๋ฐ์ดํฐ๋ฅผ ์์ค ์์คํ ์์ Kafka๋ก ์ ์กํ๋ ์ฃผ์ ๊ตฌ์ฑ ์์์ ๋๋ค.
ํ์คํฌ(Task): ์ปค๋ฅํฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ํ์คํฌ๋ก ๋ถํ ๋ฉ๋๋ค. ๊ฐ ํ์คํฌ๋ ๋ณ๋ ฌ๋ก ์คํ๋์ด ์ฒ๋ฆฌ๋์ ๋์ ๋๋ค.
์คํ์ (Offset): ์ปค๋ฅํฐ๊ฐ ์์ค ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ ์์น๋ฅผ ์ถ์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต ์์ด ์ง์์ ์ผ๋ก ์ฝ์ ์ ์์ต๋๋ค.
๋ณํ(Transformation): ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ณผ์ ์์ **Single Message Transformations(SMT)**๋ฅผ ์ฌ์ฉํด ๋ฉ์์ง๋ฅผ ๋ณํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ถํ์ํ ํ๋๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ํน์ ํ๋๋ง ์ถ์ถํ ์ ์์ต๋๋ค.
Kafka ์ฑํฌ ์ปค๋ฅํฐ๋ Kafka ํ ํฝ์์ ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ์์คํ ์ ์ ์ฅํ๋ ์ญํ ์ ํฉ๋๋ค. Kafka์์ ๋ฐ์ดํฐ๋ฅผ ์๋นํ๊ณ ์ด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ ์์คํ , ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง ๋๋ ๋ค๋ฅธ ์์คํ ์ผ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
์ฑํฌ ์ปค๋ฅํฐ๋ Kafka์์ ๋ฐ์ดํฐ๋ฅผ ์๋นํ์ฌ ์ธ๋ถ ์์คํ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ญํ ์ ํฉ๋๋ค.
์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅ, ๋ถ์, ๋ชจ๋ํฐ๋ง ๋๋ ๋ฐฑ์ ์์ ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ์ธ๋ถ ์์คํ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, Elasticsearch, HDFS, Amazon S3 ๊ฐ์ ์คํ ๋ฆฌ์ง ์์คํ ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
์์ค ์์คํ : Kafka ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ญํ .
์ธ๋ถ ์์คํ : ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ๋ชฉ์ ์ง. (์: MySQL, MongoDB, HDFS, Elasticsearch)
์ฑํฌ ์ปค๋ฅํฐ๋ Kafka ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ์ด๋ฅผ ์ธ๋ถ ์์คํ ์ผ๋ก ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ ์๋์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ปค๋ฅํฐ ์ด๊ธฐํ:
Kafka ์ฑํฌ ์ปค๋ฅํฐ๊ฐ ์์๋๋ฉด, Kafka ํ ํฝ๊ณผ ์ธ๋ถ ์์คํ ์ ์ค์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑํฌ ์ปค๋ฅํฐ์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์ ๊ณผ Kafka ํ ํฝ์ ์ค์ ํฉ๋๋ค.
Kafka ํ ํฝ์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ:
์ฑํฌ ์ปค๋ฅํฐ๋ Kafka ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ต๋๋ค. Kafka ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด ์๋น์(consumer) ์ญํ ์ ํ๋ฉฐ, ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ์ ธ์ต๋๋ค.
์ธ๋ถ ์์คํ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ก:
์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ์์คํ ์ผ๋ก ์ ์กํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๋ฉด SQL ์ฟผ๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ณ , ํ์ผ ์์คํ ์ด๋ผ๋ฉด ํ์ผ์ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
์คํ์ ๊ด๋ฆฌ:
์์ค ์ปค๋ฅํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ฑํฌ ์ปค๋ฅํฐ๋ ์คํ์
์ ๊ด๋ฆฌํ์ฌ ์ค๋ณต ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์คํ์
์ Kafka์ __consumer_offsets
ํ ํฝ์ ์ ์ฅ๋์ด, ์ปค๋ฅํฐ๊ฐ ์ฌ์์๋๋๋ผ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์ฐ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
์ปค๋ฅํฐ(Connector): Kafka ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ธ๋ถ ์์คํ ์ผ๋ก ์ ์กํ๋ ์ญํ ์ ํฉ๋๋ค.
ํ์คํฌ(Task): ์ฑํฌ ์ปค๋ฅํฐ๋ ์ฌ๋ฌ ํ์คํฌ๋ก ๋ถํ ํ์ฌ ๋ณ๋ ฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์ ์ก์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
์คํ์ (Offset): ์ฑํฌ ์ปค๋ฅํฐ๊ฐ Kafka ํ ํฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ ์์ ๊น์ง ์ฝ์๋์ง๋ฅผ ์ถ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค๋จ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ ์กํ ์ ์์ต๋๋ค.
๋ณํ(Transformation): ์ฑํฌ ์ปค๋ฅํฐ๋ Kafka์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ, ํ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ์ฌ ์ธ๋ถ ์์คํ ์ ์ ํฉํ ํ์์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.