๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“จ Apache Kafka

[์•„ํŒŒ์น˜ ์นดํ”„์นด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ž๋ฐ”] 1์žฅ ๋“ค์–ด๊ฐ€๋ฉฐ

by GroovyArea 2023. 3. 13.

์•„ํŒŒ์น˜ ์นดํ”„์นด

๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉฐ ํ•„์ˆ˜๋กœ MQ, MB ์ •๋„๋Š” ํ•˜๋‚˜ ๊ณต๋ถ€ํ•ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ๊พธ์ค€ํžˆ ํ•ด์™”๋‹ค.

๊ณต๋ถ€ํ• ๋งŒํ•œ ์‹ค๋ ฅ์ด ๋˜๋Š”๊ฒŒ ๋ฒ ์ด์Šค๊ฐ€ ๋  ์‹œ๊ธฐ์™€, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด์•ผ ๋  ์‹œ๊ธฐ๊ฐ€ ๋”ฑ ๋งž์•„ ๋–จ์–ด์ ธ ๋ฐ”๋กœ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ๋งˆ์Œ ๋จน์—ˆ๋‹ค.


์นดํ”„์นด๋ž€?

  • ์นดํ”„์นด ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ํŒŒํ‹ฐ์…˜ ๋™์ž‘์€ FIFO ๋ฐฉ์‹์˜ ํ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์œ ์‚ฌํ•˜๋‹ค.

    ํ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด โ€˜ํ”„๋กœ๋“€์…”' ์ด๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด โ€˜์ปจ์Šˆ๋จธ'.
  • ์นดํ”„์นด๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํฌ๋งท์€ ๊ฑฐ์˜ ์ œํ•œ์ด ์—†๋‹ค. ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”๋ฅผ ํ†ตํ•ด ByteArray ๋กœ ํ†ต์‹ ํ•˜๋ฏ€๋กœ ์ž๋ฐ”์—์„œ ์„ ์–ธํ•œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์ง€์›ํ•œ๋‹ค. (์นดํ”„์นด ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ByteArray, ByteBuffer, Double, Long, String ํƒ€์ž…์— ๋Œ€์‘ํ•œ ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™” ํด๋ž˜์Šค๊ฐ€ ์ œ๊ณต๋œ๋‹ค)

    ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” Class ์ œ์™ธํ•˜๊ณ  ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ปค์Šคํ…€ ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™” ํด๋ž˜์Šค(Serializer, Deserializer) ๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ฐœ๋ฐœํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ƒ์šฉ ํ™˜๊ฒฝ์—์„œ ์นดํ”„์นด๋Š” ์ตœ์†Œ 3๋Œ€ ์ด์ƒ์˜ ์„œ๋ฒ„(๋ธŒ๋กœ์ปค)์—์„œ ๋ถ„์‚ฐ ์šด์˜ํ•˜์—ฌ ํ”„๋กœ๋“€์„œ๋ฅผ ํ†ตํ•ด ์ „์†ก๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ˆ์ „ํ•˜๊ฒŒ ๊ธฐ๋กํ•œ๋‹ค.
    ์ตœ์†Œ 3๋Œ€ ์ด์ƒ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์ค‘ ์ผ๋ถ€ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ณต์ œํ•˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์Œ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฐ์น˜ ์ „์†ก์„ ํ†ตํ•ด ๋‚ฎ์€ ์ง€์—ฐ๊ณผ ๋†’์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์นดํ”„์นด ํŠน์ง•

  • ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰
    • ์นดํ”„์นด๋Š” ํ”„๋กœ๋“€์„œ๊ฐ€ ๋ธŒ๋กœ์ปค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ์™€ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ธŒ๋กœ์ปค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ ๋ชจ๋‘ ๋ฌถ์–ด์„œ ์ „์†กํ•œ๋‹ค.
      • ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์ˆ˜์‹ ํ•  ๋•Œ ๋งบ์–ด์ง€๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ์ตœ์†Œํ™” ํ•˜๊ธฐ ์œ„ํ•จ
    • ํŒŒํ‹ฐ์…˜ ๋‹จ์œ„๋ฅผ ํ†ตํ•ด ๋™์ผ ๋ชฉ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์— ๋ถ„๋ฐฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋งŒํผ ์ปจ์Šˆ๋จธ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ ค์„œ ๋™์ผ ์‹œ๊ฐ„๋‹น ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ํ™•์žฅ์„ฑ
    • ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ธŒ๋กœ์ปค๋ฅผ ๋ฌด์ค‘๋‹จ์ด๋ฉด์„œ๋„ ์‰ฝ๊ฒŒ scale-in, scale-out ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜์†์„ฑ
    • ์˜์†์„ฑ์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์˜ ํŠน์„ฑ์„ ๋œปํ•œ๋‹ค.
    • ์นดํ”„์นด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅํ•˜์—ฌ ์˜์†์„ฑ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํŒŒ์ผ I/O ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด page cahce ์˜์—ญ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ณ ๊ฐ€์šฉ์„ฑ
    • ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ด๋ฃจ์–ด์ง„ ์นดํ”„์นด๋Š” ๋ฐ์ดํ„ฐ์˜ replication ์„ ํ†ตํ•ด ๊ณ ๊ฐ€์šฉ์„ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค.
      • ํ”„๋กœ๋“€์„œ๋กœ ์ „์†ก๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ 1๋Œ€์˜ ๋ธŒ๋กœ์ปค์—๋งŒ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค์—๋„ ์ €์žฅํ•œ๋‹ค.
    • on-premise ํ™˜๊ฒฝ์˜ ์„œ๋ฒ„ ๋ž™ ๋˜๋Š” public cloud ์˜ ๋ฆฌ์ „ ๋‹จ์œ„ ์žฅ์• ์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณต์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋กœ์ปค ์˜ต์…˜๋“ค์ด ์ค€๋น„๋˜์–ด ์žˆ๋‹ค.

์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ 3๋Œ€ ์ด์ƒ์˜ ๋ธŒ๋กœ์ปค๋“ค๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

  • 1๋Œ€ ๊ตฌ์„ฑ : ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ธŒ๋กœ์ปค์— ์žฅ์• ๋Š” ์„œ๋น„์Šค ์žฅ์• ๋กœ ์ด์–ด์ง„๋‹ค.
  • 2๋Œ€ ๊ตฌ์„ฑ : 1๊ฐœ์˜ ๋ธŒ๋กœ์ปค๊ฐ€ ์ฃฝ์„ ์‹œ ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค๊ฐ€ ์‚ด์•„ ์žˆ์œผ๋ฏ€๋กœ ์„œ๋น„์Šค ์žฅ์• ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๋ธŒ๋กœ์ปค ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์ œ๋˜๋Š” ์‹œ๊ฐ„ ์ฐจ์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์‹คํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜์‘ํ˜•