๐Ÿ“’ ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

Kimdongkiยท2024๋…„ 6์›” 24์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
32/33

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ์ผ๋ฐ˜์ ์ธ ๋‹จ๊ณ„

  • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (Data Collection)
  • ๋ฐ์ดํ„ฐ ์ €์žฅ (Data Storage)
  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ(Data Processing)
    -> ์ด ๊ณผ์ •์—์„œ ์„œ๋น„์Šค ํšจ์œจ์„ ๋†’์ด๊ฑฐ๋‚˜ ์˜์‚ฌ๊ฒฐ์ •์„ ๋” ๊ณผํ•™์ ์œผ๋กœ ํ•˜๊ฒŒ ๋œ๋‹ค.

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์˜ ๊ณ ๋„ํ™”

  • ์ฒ˜์Œ์—๋Š” ๋ฐฐ์น˜๋กœ ์‹œ์ž‘
    -> ์ด ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ค‘์š”ํ•˜๋‹ค.

  • ์„œ๋น„์Šค๊ฐ€ ๊ณ ๋„ํ™”๋˜๋ฉด ์ ์ ๋” ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ์š”๊ตฌ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

    • Realtime ์ฒ˜๋ฆฌ vs. Semi Realtime ์ฒ˜๋ฆฌ
    • ๋™์ผ ๋ฐ์ดํ„ฐ ์†Œ๋น„๊ฐ€ ํ•„์š”ํ•œ ์ผ€์ด์Šค ์ฆ๊ฐ€ : ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ์†Œ๋น„์ž๊ฐ€ ๋“ฑ์žฅ

์ฒ˜๋ฆฌ๋Ÿ‰ vs. ์ง€์—ฐ์‹œ๊ฐ„

  • ์ฒ˜๋ฆฌ๋Ÿ‰ : Throughput, ์ฃผ์–ด์ง„ ๋‹จ์œ„ ์‹œ๊ฐ„ ๋™์•ˆ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘
  • ์ง€์—ฐ์‹œ๊ฐ„ : Latency, ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
    -> ์ž‘์„์ˆ˜๋ก ์‘๋‹ต์ด ๋น ๋ฆ„์„ ์˜๋ฏธํ•œ๋‹ค. ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ ๋” ์ค‘์š”ํ•˜๋‹ค ex) Production DB
  • ๋Œ€์—ญํญ (Bandwidth) = ์ฒ˜๋ฆฌ๋Ÿ‰ X ์ง€์—ฐ์‹œ๊ฐ„

SLA : Service Level Agreement

  • ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด์™€ ๊ณ ๊ฐ ๊ฐ„์˜ ๊ณ„์•ฝ ๋˜๋Š” ํ•ฉ์˜
    • ์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค ํ’ˆ์งˆ, ์„ฑ๋Šฅ ๋ฐ ๊ฐ€์šฉ์„ฑ์˜ ํ•ฉ์˜๋œ ์ˆ˜์ค€์„ ๊ฐœ๊ด„์ ์œผ๋กœ ๊ธฐ์ˆ 
    • SLA๋Š” ํ†ต์‹ , ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ๋“ฑ ๋‹ค์–‘ํ•œ ์‚ฐ์—…์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์‚ฌ๋‚ด ์‹œ์Šคํ…œ๋“ค๊ฐ„์—๋„ SLA๋ฅผ ์ •์˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
    • ์ด ๊ฒฝ์šฐ Latency๋‚˜ Uptime๋“ฑ์ด ๋ณดํ†ต SLA๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
      • ex) Uptime 99.9% = 8์‹œ๊ฐ„ 45.6๋ถ„
      • API๋ผ๋ฉด ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„ ํ˜น์€ 99%์ด์ƒ 0.5์ดˆ ์ „์— ์‘๋‹ต์ด ๋˜์–ด์•ผํ•จ
    • ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ๋ฐ์ดํ„ฐ์˜ ์‹œ์˜์„ฑ (Freshness)๋„ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๊ฐ€ ๋œ๋‹ค.

๋ฐฐ์น˜ ์ฒ˜๋ฆฌ

  • ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์—์„œ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์ฒ˜๋ฆฌ๋Ÿ‰ (Throughput)์ด ์ค‘์š”ํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ

  • ์ฒ˜๋ฆฌ ์ฃผ๊ธฐ๋Š” ๋ณดํ†ต ๋ถ„์—์„œ ์‹œ๊ฐ„, ์ผ ๋‹จ์œ„์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌ์กฐ
    • ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ (HDFS, S3)
    • ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ (MapReduce, Hive/Presto, Spark DataFrame, Spark SQL)
    • ์ฒ˜๋ฆฌ ์ž‘์—… ์Šค์ผ€์ค„๋ง์— ๋ณดํ†ต Airflow๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ

  • ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    -> realtime vs. semi-realtime (micro batch)
  • ์ด ๊ฒฝ์šฐ ์ง€์—ฐ์‹œ๊ฐ„(์ฒ˜๋ฆฌ์†๋„, Latency)์ด ์ค‘์š”ํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ

  • ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๋‹ค์Œ์˜ ๊ณ ๋„ํ™” ๋‹จ๊ณ„
    -> ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋“ฑ์˜ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€
  • ์ดˆ๋‹จ์œ„์˜ ๊ณ„์†์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    • ์ด๋Ÿฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ†ต Event๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ Event์˜ ํŠน์ง•์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ผ๋Š” ์ ์ด๋‹ค.(Immutable)
    • ๊ณ„์†ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” Event๋“ค์„ Event Stream์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ์„œ๋น„์Šค๋“ค์ด ํ•„์š”ํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
    • Event๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„ธ์ง€ ํ : Kafka, Kinesis, Pub/Sub, ...
    • Event ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ : Spark Streaming, Samza, Flink, ..
    • ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ์• ๋„๋ฆฌํ‹ฑ์Šค/๋Œ€์‹œ๋ณด๋“œ : Druid

  • ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌ์กฐ
    • Producer(Publisher)๊ฐ€ ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
    • ์ƒ์„ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์„ธ์ง€ ํ์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์— ์ €์žฅ
      • Kafka, Kinesis, PubSub ๋“ฑ์˜ ์‹œ์Šคํ…œ์ด ์กด์žฌํ•œ๋‹ค.
      • ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ (Kafka์—์„œ๋Š” Topic์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค)๋งˆ๋‹ค ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๊ธฐํ•œ์„ ์„ค์ •
    • Consumer (Subscriber)๊ฐ€ ์žˆ์–ด์„œ ํ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
      • Consumer๋งˆ๋‹ค ๋ณ„๋„ ํฌ์ธํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
      • ๋‹ค์ˆ˜์˜ Consumer๊ฐ€ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ๋ฅผ ๊ณต๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๊ฒ€์ƒ‰์—”์ง„์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ - ๊ณ„์†์ ์ธ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ

  • ์ „์ฒด ์‹œ์Šคํ…œ์ด ๊ณ„์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ
  • ๊ตฌ๊ธ€ Page Rank ๊ณ„์‚ฐ๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„์ด ์ฆ๋ถ„
    -> ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•ด์ง -> ๋žŒ๋‹ค ์•„ํ‚คํ…์ฒ˜
  1. ์›นํŽ˜์ด์ง€ ์ ‘์†
  2. ์›นํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ  ์ฝ๊ธฐ
  3. ๋ฐ์ดํ„ฐ ์ €์žฅ -> ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€(๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ)
  4. ์—ฐ์†์ ์ธ Page Rank ๊ณ„์‚ฐ๊ณผ ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ(๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ) -> ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค
  5. ๊ฒ€์ƒ‰์ฒ˜๋ฆฌ

Lambda Architecture

  • Batch Layer์™€ ์‹ค์‹œ๊ฐ„ Layer ๋‘ ๊ฐœ๋ฅผ ๋ณ„๋„๋กœ ์šด์˜
  • ์—ฌ๊ธฐ์—๋„ ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ : Realtime vs. Semi-Realtime

  • Realtime
    • ์งง์€ Latency
    • ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ
    • Event ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜ : ์ˆ˜์‹  ๋ฐ์ดํ„ฐ ์ด๋ฒคํŠธ์— ์˜ํ•ด ์ž‘์—…์ด๋‚˜ ๊ณ„์‚ฐ์ด ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.
    • ๋™์  ๋ฐ ๋ฐ˜์‘ํ˜• : ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์˜ ๋ณ€ํ™”์— ๋™์ ์œผ๋กœ ๋Œ€์‘ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„
    • ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์˜์‚ฌ๊ฒฐ์ •์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ์‹ค์‹์‚ฐ ์ฒ˜๋ฆฌ์˜ ์žฅ์ 

  • ์ฆ‰๊ฐ์ ์ธ ์ธ์‚ฌ์ดํŠธ ๋ฐœ๊ฒฌ
  • ์šด์˜ ํšจ์œจ์„ฑ ํ–ฅ์ƒ
  • ์‚ฌ๊ณ ์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์‹ ์† ๋Œ€์‘
  • ๋” ํšจ์œจ์ ์ธ ๊ฐœ์ธํ™”๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜
  • IoT ๋ฐ ์„ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉ
  • ์‚ฌ๊ธฐ ํƒ์ง€ ๋ฐ ๋ณด์•ˆ
  • ์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๋ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์˜ ๋‹จ์ 

  • ์ „์ฒด์ ์œผ๋กœ ์‹œ์Šคํ…œ์ด ๋ณต์žกํ•ด์ง„๋‹ค.

    • ๋ฐฐ์น˜ ์‹œ์Šคํ…œ์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ ๋ณดํ†ต์€ ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ”๋กœ ๋…ธ์ถœ๋˜๋Š” ์ผ์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

    • ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ์‹ค์ œ ์‚ฌ์šฉ์ž์™€ ๊ด€๋ จ๋œ ์ผ์— ์‚ฌ์šฉ๋  ํ™•๋ฅ ์ด ๋” ๋†’๊ธฐ์— ์‹œ์Šคํ…œ ์žฅ์•  ๋Œ€์‘์ด ์ค‘์š”ํ•ด์ง„๋‹ค.

      • ๋ฐฐ์น˜ ์ถ”์ฒœ vs. ์‹ค์‹œ๊ฐ„ ์ถ”์ฒœ
      • Dev Ops์˜ ์˜์—ญ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์šด์˜ ๋น„์šฉ ์ฆ๊ฐ€
    -> ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋Š” ์ž˜๋ชป ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ ์œ ์‹ค ์ด์Šˆ๊ฐ€ ์ ์ง€๋งŒ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์œ ์‹ค์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง€๊ธฐ์— ํ•ญ์ƒ ๋ฐ์ดํ„ฐ ๋ฐฑ์—…์— ์‹ ๊ฒฝ์„ ์จ์•ผํ•œ๋‹ค.

๐Ÿ“Œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„

  • Event ๋ชจ๋ธ ๊ฒฐ์ •
  • Event ์ „์†ก/์ €์žฅ
  • Evnet ์ฒ˜๋ฆฌ
  • Event ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์ด์Šˆ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ํ•ด๊ฒฐ

1. Event ๋ชจ๋ธ ๊ฒฐ์ •

  • ์ตœ์†Œ Primart key์™€ Timestamp๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    • ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
    • Event ์ž์ฒด์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

2. Event ์ „์†ก/์ €์žฅ

  • Point to Point
    -> Many to Many ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•˜๋‹ค.

  • Messaging Queue
    -> ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๋‘๊ณ  ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ decouple๋œ ์ƒํƒœ๋กœ ์ž‘์—…ํ•œ๋‹ค.

Point to Point

  • Throughput์€ ์ค‘์š”ํ•˜์ง€๋งŒ Latency๊ฐ€ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋งŽ์€ API ๋ ˆ์ด์–ด๋“ค์ด ์ด๋Ÿฐ ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.
  • ๋‹ค์ˆ˜์˜ Consumer๋“ค์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณตํ•ด์„œ ๋ณด๋‚ด์•ผํ•œ๋‹ค.

Messaging Queue

  • Producer๋ณ„๋กœ Topic์ด ์ƒ์„ฑ๋œ๋‹ค.

3. Event ์ฒ˜๋ฆฌ

  • ์•ž์„œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ชจ๋ธ๊ณผ ํ™œ์šฉ ์‚ฌ๋ก€์— ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ชจ๋ธ๋„ ๊ฒฐ์ •๋œ๋‹ค.

  • Point to Point

    • Consumer์ชฝ์˜ ๋ถ€๋‹ด์ด ์ปค์ง€๋ฉฐ ์ •๋ง ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.(Backpressure)
      -> ๋ฐ์ดํ„ฐ ์œ ์‹ค์˜ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.
    • Low Throughput Low Latency๊ฐ€ ์ผ๋ฐ˜์ ์ด๋‹ค.
  • Messaging Queue

    • ๋ณดํ†ต micro-batch๋ผ๋Š” ํ˜•ํƒœ๋กœ ์•„์ฃผ ์งง์€ ์ฃผ๊ธฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.
      -> Spark Streaming์ด ๋Œ€ํ‘œ์ ์ด๋‹ค.

    • ๋‹ค์ˆ˜์˜ Consumer๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์กด์žฌํ•œ๋‹ค.

    • Point to Point ๋ณด๋‹ค๋Š” ์šด์˜์ด ์šฉ์ดํ•˜๋‹ค.

Backpressure(๋ฐฐ์••)

  • ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ์ •ํ•œ ์†๋„๋กœ ์ƒ์„ฑํ•œ๋‹ค.(Producer)
    -> ๊ฐ€๋”์€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์ด ํญ๋ฐœ์ ์œผ๋กœ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹ค์šด ์ŠคํŠธ๋ฆผ ๋‹จ๊ณ„(Consumer)์—์„œ ์ ์‹œ์— ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.
    -> ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ ์†๋„๋ฅผ ๋”ฐ๋ผ์žก์ง€ ๋ชปํ•˜๋ฉด ์‹œ์Šคํ…œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์—ฌ ์ง€์—ฐ๋˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€ ๋“ฑ์œผ๋กœ ์ž ์žฌ์ ์ธ ์‹œ์Šคํ…œ ์žฅ์• ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
    -> ์ด๋ฅผ Backpressure Issue๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • Backpressure๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ• ์ค‘์˜ ํ•˜๋‚˜๋Š” ์ค‘๊ฐ„์— ๋ฉ”์„ธ์ง€ ํ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    -> Backpressure๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์™„์ „ํžˆ ํ•ด๊ฒฐ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  • Point to Point ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ์—๋„ Comsumer/Subscriber์ชฝ์— ์ž‘์€ ๋ฒ„ํผ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
    -> ํ•˜์ง€๋งŒ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๊ฐ€ ๊ณง ๋ถ€์กฑํ•ด์ง„๋‹ค -> Overflow

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