Kafka Connector?

์นดํ”„์นด ์ปค๋„ฅํ„ฐ(Kafka Connector)๋Š” Apache Kafka์˜ ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด Kafka Connect ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณต๋˜๋Š” ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ์นดํ”„์นด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ˆ˜์ง‘ํ•˜๊ณ , ์นดํ”„์นด์—์„œ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์นดํ”„์นด ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค์Šคํ…€ ์ฝ”๋”ฉ ์—†์ด ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kafka Connect ?

Kafka Connect๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์˜ ์—ฐ๋™์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๋Š” ์ด ํ”„๋ ˆ์ž„์›Œํฌ ์œ„์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์†Œ์Šค ์ปค๋„ฅํ„ฐ(Source Connector)์™€ ์‹ฑํฌ ์ปค๋„ฅํ„ฐ(Sink Connector) ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. ์†Œ์Šค ์ปค๋„ฅํ„ฐ: ์™ธ๋ถ€ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์นดํ”„์นด ํ† ํ”ฝ์œผ๋กœ ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ: MySQL, PostgreSQL, MongoDB, Elasticsearch ๋“ฑ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ Kafka๋กœ ์ „์†ก.

  2. ์‹ฑํฌ ์ปค๋„ฅํ„ฐ: ์นดํ”„์นด ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ: ๋ฐ์ดํ„ฐ๋ฅผ HDFS, Elasticsearch, RDBMS ๋“ฑ์— ์ €์žฅ.

Drawing

ํ™•์žฅ์„ฑ: ๋ถ„์‚ฐํ˜•์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฒฐํ•จ์„ฑ: ์ปค๋„ฅํ„ฐ๊ฐ€ ์‹คํŒจํ•˜๋”๋ผ๋„ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ํŽธ์˜์„ฑ: REST API๋ฅผ ํ†ตํ•ด ์ปค๋„ฅํ„ฐ๋ฅผ ๋ฐฐํฌ, ์„ค์ •, ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€ํ™˜(Transformation): ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€ํ™˜

Kafka ์ปค๋„ฅํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ์ผ์น˜์‹œํ‚ค๊ฑฐ๋‚˜, ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

SMT ์˜ˆ์‹œ:

  • ํ•„๋“œ ๊ฐ’์˜ ํ˜•์‹์„ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€์—์„œ ํŠน์ • ํ•„๋“œ๋ฅผ ์‚ญ์ œ ๋˜๋Š” ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—….

  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • JSON ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€ ํ•„๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์ „์†กํ•  ๋•Œ SMT๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Source Connector ?

Kafka ์†Œ์Šค ์ปค๋„ฅํ„ฐ๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€ Kafka ํ† ํ”ฝ์— ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ Kafka๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ์ปค๋„ฅํ„ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

Kafka ์†Œ์Šค ์ปค๋„ฅํ„ฐ๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ Kafka๋กœ ์ง€์†์ ์œผ๋กœ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ํ†ตํ•ฉํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์‹œ์Šคํ…œ: ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์™ธ๋ถ€ ์‹œ์Šคํ…œ(์˜ˆ: MySQL, MongoDB, ํŒŒ์ผ ์‹œ์Šคํ…œ, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๋“ฑ)

  • Kafka ํ† ํ”ฝ: ์†Œ์Šค ์ปค๋„ฅํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ชฉ์ ์ง€(Kafka์˜ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ)

์†Œ์Šค ์ปค๋„ฅํ„ฐ์˜ ๋™์ž‘ ์›๋ฆฌ

์†Œ์Šค ์ปค๋„ฅํ„ฐ์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ์†Œ์Šค ์‹œ์Šคํ…œ์—์„œ Kafka ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ ์ดˆ๊ธฐํ™”:

Kafka ์†Œ์Šค ์ปค๋„ฅํ„ฐ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ์„ค์ • ํŒŒ์ผ์„ ๋ฐ”ํƒ•์œผ๋กœ ์™ธ๋ถ€ ์†Œ์Šค ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐํ•˜๊ณ , ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅํ„ฐ์˜ ๊ฒฝ์šฐ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ฝ๊ธฐ:

์†Œ์Šค ์ปค๋„ฅํ„ฐ๋Š” ์†Œ์Šค ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค. ์ด๋•Œ ํด๋ง ๋ฐฉ์‹์ด๋‚˜ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

WAL ?

๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ์ „ ์•ก์„ธ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ๋กœ ์ €์žฅํ•ด๋‘๋Š” ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ”๋กœ ๋””์Šคํฌ๋กœ ์“ฐ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฒ„ํผ๋กœ ๋ชจ์•„ ํ•œ๋ฒˆ์— ๋“ฑ๋กํ•œ๋‹ค. ์ด๋Ÿฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” I/O๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ Redo log๋ผ๊ณ ๋„ ์ด์•ผ๊ธฐํ•œ๋‹ค

  • ํด๋ง ๋ฐฉ์‹: ์ผ์ • ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์—์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ.

  • ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜: CDC(Change Data Capture)์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€.

Kafka ํ† ํ”ฝ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก:

์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ Kafka์˜ ํŠน์ • ํ† ํ”ฝ์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐ์ดํ„ฐ๋Š” Kafka ํ† ํ”ฝ์— ๋ฉ”์‹œ์ง€ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋Š” Kafka Streams๋‚˜ ์†Œ๋น„์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์˜คํ”„์…‹ ๊ด€๋ฆฌ:

์†Œ์Šค ์ปค๋„ฅํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ ์œ„์น˜(์˜คํ”„์…‹)๋ฅผ ๊ธฐ๋กํ•˜์—ฌ, ์ค‘๋‹จ ํ›„ ์žฌ์‹œ์ž‘ ์‹œ ์ค‘๋ณต ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ด์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”„์…‹์€ Kafka์˜ __consumer_offsets ํ† ํ”ฝ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์†Œ์Šค ์ปค๋„ฅํ„ฐ์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

  • ์ปค๋„ฅํ„ฐ(Connector): ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์Šค ์‹œ์Šคํ…œ์—์„œ Kafka๋กœ ์ „์†กํ•˜๋Š” ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

  • ํƒœ์Šคํฌ(Task): ์ปค๋„ฅํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํƒœ์Šคํฌ๋กœ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํƒœ์Šคํฌ๋Š” ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜์–ด ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์ž…๋‹ˆ๋‹ค.

  • ์˜คํ”„์…‹(Offset): ์ปค๋„ฅํ„ฐ๊ฐ€ ์†Œ์Šค ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต ์—†์ด ์ง€์†์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ€ํ™˜(Transformation): ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ณผ์ •์—์„œ **Single Message Transformations(SMT)**๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถˆํ•„์š”ํ•œ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ํŠน์ • ํ•„๋“œ๋งŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Sink Connector ?

Kafka ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋Š” Kafka ํ† ํ”ฝ์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Kafka์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•˜๊ณ  ์ด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ์‹œ์Šคํ…œ, ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ๋˜๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ฑํฌ ์ปค๋„ฅํ„ฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋Š” Kafka์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•˜์—ฌ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ, ๋ถ„์„, ๋ชจ๋‹ˆํ„ฐ๋ง ๋˜๋Š” ๋ฐฑ์—… ์ž‘์—…๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์‹œ์Šคํ…œ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, Elasticsearch, HDFS, Amazon S3 ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์‹œ์Šคํ…œ: Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์—ญํ• .

  • ์™ธ๋ถ€ ์‹œ์Šคํ…œ: ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š” ๋ชฉ์ ์ง€. (์˜ˆ: MySQL, MongoDB, HDFS, Elasticsearch)

์‹ฑํฌ ์ปค๋„ฅํ„ฐ์˜ ๋™์ž‘ ์›๋ฆฌ

์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋Š” Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์ด๋ฅผ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  1. ์ปค๋„ฅํ„ฐ ์ดˆ๊ธฐํ™”:

    • Kafka ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด, Kafka ํ† ํ”ฝ๊ณผ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ฑํฌ ์ปค๋„ฅํ„ฐ์˜ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •๊ณผ Kafka ํ† ํ”ฝ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ:

    • ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋Š” Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค. Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ์†Œ๋น„์ž(consumer) ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

  3. ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก:

    • ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋ฉด SQL ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ์˜คํ”„์…‹ ๊ด€๋ฆฌ:

    • ์†Œ์Šค ์ปค๋„ฅํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋„ ์˜คํ”„์…‹์„ ๊ด€๋ฆฌํ•˜์—ฌ ์ค‘๋ณต ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”„์…‹์€ Kafka์˜ __consumer_offsets ํ† ํ”ฝ์— ์ €์žฅ๋˜์–ด, ์ปค๋„ฅํ„ฐ๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์‹ฑํฌ ์ปค๋„ฅํ„ฐ์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ

  • ์ปค๋„ฅํ„ฐ(Connector): Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • ํƒœ์Šคํฌ(Task): ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋Š” ์—ฌ๋Ÿฌ ํƒœ์Šคํฌ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ณ‘๋ ฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ์˜คํ”„์…‹(Offset): ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๊ฐ€ Kafka ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋А ์‹œ์ ๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ค‘๋‹จ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ€ํ™˜(Transformation): ์‹ฑํฌ ์ปค๋„ฅํ„ฐ๋Š” Kafka์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•œ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Last updated