TIL-087 | Apache Kafka ๋ž€?

Lee, Chankyuยท2022๋…„ 2์›” 28์ผ
0

Computer Science

๋ชฉ๋ก ๋ณด๊ธฐ
11/12
post-thumbnail

๐ŸŒˆ Apache Kafka์— ๋Œ€ํ•˜์—ฌ

Apache Kafka ๋ž€?

  • Apache Kafka๋Š” ๋น ๋ฅด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํ”ผ๋“œ์˜ ๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ, ํŒŒ์ดํ”„ ๋ผ์ด๋‹ ๋ฐ ์žฌ์ƒ์„ ์œ„ํ•œ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„๋œ ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐํ˜• ๊ฒŒ์‹œ-๊ตฌ๋… ๋ฉ”์‹œ์ง• ํ”Œ๋žซํผ์ด๋‹ค.

  • ์นดํ”„์นด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Publish-Subscribe ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์ด๋‹ค. Publish-Subscribe ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ”„๋กœ๋“€์„œ(Producer, ์ƒ์‚ฐ์ž), ์†Œ๋น„ํ•˜๋Š” ์ปจ์Šˆ๋จธ(Consumer, ์†Œ๋น„์ž) ๊ทธ๋ฆฌ๊ณ  ์ด ๋‘˜ ์‚ฌ์ด์—์„œ ์ค‘์žฌ์ž ์—ญํ• ์„ ํ•˜๋Š” ๋ธŒ๋กœ์ปค(Broker)๋กœ ๊ตฌ์„ฑ๋œ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(Loosely Coupled)์˜ ์‹œ์Šคํ…œ์ด๋‹ค.

๊ตฌ์„ฑ์š”์†Œ

  • Event
    • Producer์™€ Consumer๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋‹จ์œ„์ด๋‹ค.
  • Producer
    • kafka์— ์ด๋ฒคํŠธ๋ฅผ ๊ฒŒ์‹œ(post)ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜๋ฏธํ•œ๋‹ค.
  • Consumer
    • Topic์„ ๊ตฌ๋…ํ•˜๊ณ  ์ด๋กœ๋ถ€ํ„ฐ ์–ป์–ด๋‚ธ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.
  • Topic
    • ์ด๋ฒคํŠธ๊ฐ€ ์“ฐ์ด๋Š” ๊ณณ. Producer๋Š” Topic์— ์ด๋ฒคํŠธ๋ฅผ ๊ฒŒ์‹œํ•œ๋‹ค.
    • Consumer๋Š” Topic์œผ๋กœ๋ถ€ํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • Topic์€ ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ํด๋”์™€ ์œ ์‚ฌํ•˜๊ณ  ์ด๋ฒคํŠธ๋Š” ํด๋”์˜ ํŒŒ์ผ๊ณผ ์œ ์‚ฌํ•˜๋‹ค.
      โœ” Partition
      ๐Ÿ‘‰ Topic์€ ์—ฌ๋Ÿฌ Broker์— ์˜ํ•ด ๋ถ„์‚ฐ ์ €์žฅ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ถ„์‚ฐ๋œ Topic์„ Partition์ด๋ผ ํ•œ๋‹ค. ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ Partition์— ์ €์žฅ๋ ์ง€๋Š” ์ด๋ฒคํŠธ์˜ Key์— ์˜ํ•ด ์ •ํ•ด์ง€๋ฉฐ, ๊ฐ™์€ ํ‚ค๋ฅผ ๊ฐ€์ง€๋Š” ์ด๋ฒคํŠธ๋Š” ํ•ญ์ƒ ๊ฐ™์€ partition์— ์ €์žฅ๋œ๋‹ค.

kafka์˜ ํŠน์ง•

  • ๋‹ค์ค‘ ํ”„๋กœ๋“€์„œ, ๋‹ค์ค‘ ์ปจ์Šˆ๋จธ
    ์นดํ”„์นด์˜ ํ† ํ”ฝ์— ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ๊ฐ€ ๋™์‹œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์นดํ”„์นด ํ† ํ”ฝ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ๋“ค์ด ๋™์‹œ์— ์ฝ์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ํ”„๋กœ๋“€์„œ๊ฐ€ ์—ฌ๋Ÿฌ ํ† ํ”ฝ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ๊ฐ€ ์—ฌ๋Ÿฌ ํ† ํ”ฝ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด ๊ฐˆ ์ˆ˜๋„ ์žˆ๋‹ค.
    ํŠนํžˆ ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ๊ฐ€ ์ฝ์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ธก๋ฉด์ด ์นดํ”„์นด์˜ ํฐ ๊ฐ•์ ์œผ๋กœ ์ž‘์šฉํ•œ๋‹ค.
    ์ด๋Ÿฌํ•œ ๋‹ค์ค‘ ํ”„๋กœ๋“€์„œ, ๋‹ค์ค‘ ์ปจ์Šˆ๋จธ์˜ ์ง€์›์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์นดํ”„์นด ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ƒ์‚ฐ์ž/์†Œ๋น„์ž ๊ด€๊ณ„๋„ ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

  • ํŒŒ์ผ์‹œ์Šคํ…œ์— ์ €์žฅ
    ๊ธฐ์กด์˜ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์€ ํ”„๋กœ๋“€์„œ๊ฐ€ ์ „์†กํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ธŒ๋กœ์ปค์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์กด์žฌํ•˜๋Š” ํ(Queue)์— ์œ ์ง€ํ•˜๊ณ , ์ดํ›„ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด๊ฐ€๋ฉด ํ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
    ์นดํ”„์นด๋Š” ํ”„๋กœ๋“€์„œ๊ฐ€ ์ƒ์„ฑํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ธŒ๋กœ์ปค๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจ์Šˆ๋จธ๋Š” ํ”„๋กœ๋“€์„œ๊ฐ€ ์ƒ์„ฑํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ”๋กœ๋ฐ”๋กœ ์†Œ๋น„ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ ์นดํ”„์นด๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์กดํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ๊ฐ„๋‚ด์—์„œ๋Š” ์–ธ์ œ๋“ ์ง€ ์ฝ์–ด ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    ์ด๋Ÿฐ ๋ฐฉ์‹์€ ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ์˜ ์†๋„ ์ฐจ์ด๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจ์Šˆ๋จธ ์ชฝ์— ์žฅ์• ๊ฐ€ ์ƒ๊ฒผ๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ ์ธ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ํญ์ฃผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋Šฆ์–ด์กŒ์„ ๋•Œ ๋ธŒ๋กœ์ปค์˜ ๋™์ž‘์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋˜ํ•œ ์ปจ์Šˆ๋จธ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•˜๋‹ค๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฐ์น˜(batch) ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ์ปจ์Šˆ๋จธ ์ชฝ์—์„œ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์ด์ „์— ์ฝ์—ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
    ์นดํ”„์นด ๋ธŒ๋กœ์ปค๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅํ•œ ๋ฉ”์‹œ์ง€๋Š” ๊ด€๋ฆฌ์ž์— ์˜ํ•ด ์„ค์ •๋œ ์ผ์ • ๋ณด์กด ๊ธฐ๊ฐ„๋™์•ˆ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ดํ›„ ๋ธŒ๋กœ์ปค๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ญ์ œ๋œ๋‹ค.

  • ํ™•์žฅ์„ฑ(Scalability)
    ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์šด์˜์ค‘์— ํ™•์žฅ์ด ์šฉ์ดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•œ ์ดˆ์ฐฝ๊ธฐ ์ ์€ ์ˆ˜์˜ ๋ธŒ๋กœ์ปค๋“ค๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋‹ค๊ฐ€ ์‹œ์Šคํ…œ ํŠธ๋ž˜ํ”ฝ์ด ๋†’์•„์ง€๋ฉด ๋ธŒ๋กœ์ปค๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ˆ˜ํ‰์ ์ธ ํ™•์žฅ (Horizontally Scale, Scale out) ์ด ์‰ฝ๊ฒŒ ์ด๋ค„์ง„๋‹ค.
    ์นดํ”„์นด ํ† ํ”ฝ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœ๋“€์„œ ์—ญ์‹œ ์šด์˜์ค‘์— ์–ผ๋งˆ๋“ ์ง€ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    ์นดํ”„์นด์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด๊ฐ€๋Š” ์ปจ์Šˆ๋จธ์˜ ๊ฒฝ์šฐ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ด๋ฉฐ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์ปจ์Šˆ๋จธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์ปจ์Šˆ๋จธ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์ปจ์Šˆ๋จธ์˜ ํŒŒํ‹ฐ์…˜ ์†Œ์œ ๊ถŒ(Ownership)์ด ์žฌ๋ถ„๋ฐฐ๋˜๋Š” ๋ฆฌ๋ฐธ๋Ÿฐ์Šค ๊ณผ์ •์„ ๊ฑฐ์ณ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์†ํ•œ ์ปจ์Šˆ๋จธ๋“ค์ด ๊ณ ๋ฅด๊ฒŒ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹น ๋ฐ›๊ฒŒ ๋œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ปจ์Šˆ๋จธ ์—ญ์‹œ ์šด์˜ ์ค‘์— ๋ฌด๋‚œํ•˜๊ฒŒ ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ๋‹ค.
    ์นดํ”„์นด ํ† ํ”ฝ์€ ๋‚ด๋ถ€์—์„œ ํŒŒํ‹ฐ์…˜(Partition)์ด๋ผ๋Š” ์„ธ๋ถ„ํ™”๋œ ๋‹จ์œ„๋กœ ๋‚˜๋‰˜์–ด ์ €์žฅ๋˜๋Š”๋ฐ ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋„ ์šด์˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    ์ด๋Ÿฐ ๋ชจ๋“  ํ™•์žฅ ์ž‘์—…์ด ์นดํ”„์นด ์šด์˜์— ์‹ฌ๊ฐํ•œ ๋ถ€๋‹ด์„ ์ค„ ์ •๋„๋Š” ์•„๋‹ˆ๋ฉฐ ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์ด๋ฃจ์–ด ์งˆ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.

  • ๊ณ ์„ฑ๋Šฅ
    ์นดํ”„์นด๋Š” ๋Œ€์šฉ๋Ÿ‰ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ฒ˜๋ฆฌ์— ํŠนํ™”๋˜์–ด ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฒ”์šฉ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์ด ์ง€์›ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํฌ๊ธฐํ•˜๋ฉด์„œ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)์„ ๊ฐ–๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด IBM Websphere MQ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ณต์ˆ˜์˜ ํ(Queue)์— ๋ฉ”์‹œ์ง€๋“ค์„ ์›์ž์ (Atomically)์œผ๋กœ ์ „๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜(Transaction) ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. JMS์˜ ๊ฒฝ์šฐ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค.
    ์นดํ”„์นด๋Š” ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ๋ฐฐ์ œํ•˜๊ณ  ๋›ฐ์–ด๋‚œ ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)์„ ๊ฐ–๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ์™ธํ•˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์น˜์ฒ˜๋ฆฌ, ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์„ฑ๋Šฅ์„ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€๋กœ ๋Œ์–ด๋ƒˆ๋‹ค.

  • ์ปจ์Šˆ๋จธ์˜ pull ๋ฐฉ์‹
    ๊ธฐ์กด์˜ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ๋ธŒ๋กœ์ปค๊ฐ€ ์ปจ์Šˆ๋จธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” "Push ๋ฐฉ์‹"์„ ์ฑ„ํƒํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ์žˆ๋‹ค.
    ์นดํ”„์นด๋Š” ์ปจ์Šˆ๋จธ๊ฐ€ ๋ธŒ๋กœ์ปค์—๊ฒŒ์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” "Pull ๋ฐฉ์‹"์„ ์ฑ„ํƒํ–ˆ๋‹ค.
    Pull ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปจ์Šˆ๋จธ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ธŒ๋กœ์ปค๊ฐ€ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ปจ์Šˆ๋จธ๋Š” ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ์˜ ๋ฉ”์‹œ์ง€๋งŒ ๋ธŒ๋กœ์ปค์—๊ฒŒ์„œ ๊ฐ€์ ธ๊ฐ€๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ์˜ ๋ฉ”์‹œ์ง€์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฐ–์„ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์ผ ์ปจ์Šˆ๋จธ์˜ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํ”„๋กœ๋“€์„œ์˜ ์ƒ์‚ฐ ์†๋„๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค๋ฉด ์ปจ์Šˆ๋จธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ชจ์•˜๋‹ค๊ฐ€ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์น˜์ฒ˜๋ฆฌ๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ธฐ์กด ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๋‹ค๋ฅธ ์ 

  • ๋””์Šคํฌ์— ๋ฉ”์‹œ์ง€ ์ €์žฅ

    • ๊ธฐ์กด ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ด๋‹ค.
    • ๊ธฐ์กด ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜๋ฉด ํ์—์„œ ๋ฐ”๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    • ํ•˜์ง€๋งŒ, ์นดํ”„์นด๋Š” ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜๋”๋ผ๋„ ๋””์Šคํฌ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ผ์ •๊ธฐ๊ฐ„ ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์‹œ์ง€์˜ ์†์‹ค์ด ์—†๋‹ค.(์˜์†์„ฑ)
  • ๋ฉ€ํ‹ฐ ํ”„๋กœ๋“€์„œ, ๋ฉ€ํ‹ฐ ์ปจ์Šˆ๋จธ

    • ์นดํ”„์นด์˜ ๊ฒฝ์šฐ ๋””์Šคํฌ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ํŠน์ง•์œผ๋กœ ์ธํ•ด,
      ํ”„๋กœ๋“€์„œ์™€ ์ปจ์Šˆ๋จธ ๋ชจ๋‘ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ„์‚ฐํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ

    • ๋‹จ์ผ ์‹œ์Šคํ…œ ๋Œ€๋น„ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค.
    • ์ผ๋ถ€ ๋…ธ๋“œ๊ฐ€ ์ฃฝ๋”๋ผ๋„ ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ํ•ด๋‹น ์ผ์„ ์ง€์†ํ•œ๋‹ค.(๊ณ ๊ฐ€์šฉ์„ฑ)
  • ํŽ˜์ด์ง€ ์บ์‹œ

    • ์นดํ”„์นด๋Š” ์ž”์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๋””์Šคํฌ Read/Write ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ํŽ˜์ด์ง€ ์บ์‹œ๋ฅผ ํ†ตํ•œ Read/Write์œผ๋กœ ์ธํ•ด ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋‹ค.
  • ๋ฐฐ์น˜ ์ „์†ก ์ฒ˜๋ฆฌ

    • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์—์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”์‹œ์ง€ ํ†ต์‹ ์„ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•  ๊ฒฝ์šฐ ๊ทธ๋งŒํผ ๋„คํŠธ์›Œํฌ ์™•๋ณต์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒ
    • ์ด๋กœ ์ธํ•ด, ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ฌถ์–ด ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•จ์œผ๋กœ์จ ์†๋„ ํ–ฅ์ƒ์— ํฐ ๋„์›€์„ ์คŒ

kafka์˜ ๋น„์ง€๋‹ˆ์Šค ์ด์ 

  • Apache kafka๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„ ๋˜์—ˆ๋‹ค.

    • ๋ฐ์ดํ„ฐ ๋ถ„๋ฐฐ ๋ฐ ์ด์šฉ์„ ์œ„ํ•œ ๊ฒŒ์‹œ/๊ตฌ๋… ๋ฉ”์‹œ์ง• ๋ชจ๋ธ ์ œ๊ณต
    • ์˜ค๋žœ ์‹œ๊ฐ„์— ๊ฑธ์ณ ์•ก์„ธ์Šคํ•˜๊ณ  ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์žฅ๊ธฐ ์ €์žฅ ํ—ˆ์šฉ
    • ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ธฐ๋Šฅ ์ง€์›
  • ์ผ๋ถ€ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๋‹ฌ๋ฆฌ ํŠธ๋žœ์žญ์…˜ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐฐํฌ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋งค๋ ฅ์ ์ธ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒŒ์‹œ/๊ตฌ๋… ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ๋ถ„๋ฐฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘”๋‹ค.

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

  • Apache Kafka๋Š” ์›๋ž˜ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ†ต์‹  ๊ณ„์ธต ์—ญํ• ์„ ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์–ด์šธ๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ Apache Kafka๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜์žˆ๋Š” ํ†ต์‹  ์ธํ”„๋ผ๋ฅผ ํ™œ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด์ƒ์ ์œผ๋กœ ์ ํ•ฉํ•˜๋‹ค.


๐Ÿ“ Reference

  1. https://kafka.apache.org/documentation/
  2. https://www.tibco.com/ko/reference-center/what-is-apache-kafka
  3. https://galid1.tistory.com/793
  4. https://needjarvis.tistory.com/607
  5. https://velog.io/@jaehyeong/Apache-Kafka%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
profile
Backend Developer - "Growth itself contains the germ of happiness"

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด