Streaming 101 - ์ž„์ •ํƒ๋‹˜

์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์˜ ์ •์˜

  • Static Data : ์œ ํ•œํ•œ ๋ฐ์ดํ„ฐ (1~9)
  • Streaming Data : ๋์ด ์—†๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„ (~ 5,6,7,8 ~)
    • ์—ฐ์‚ฐ์ด ๋๋‚˜์ง€ ์•Š๊ณ  ๊ณ„์† ํ•ด์„œ ์ง„ํ–‰๋˜๋Š” ํŠน์ง•
    • ์ •๋ ฌ ์—ฐ์‚ฐ์€ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. ๋Š์ž„์—†์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์—.

์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ์˜ ํŠน์„ฑ - ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ์™€์˜ ์ฐจ์ด์ 

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

์‹œ์Šคํ…œ / ํ”„๋ ˆ์ž„์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด?

  • ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฒ˜๋ฆฌํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • Batch ์ฟผ๋ฆฌ๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ..
    • ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ๋Š” ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ฒ˜๋ฆฌ ์ค‘์ด๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
    • ๊ฒฐ๊ณผ ์ •ํ™•๋„๊ฐ€ Fault-tolerance guaratee์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง.
  • Fault-tolerance guarantee๋ž€?
    • At most once(0~1)
      • ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋Š” ์ตœ๋Œ€ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋œ๋‹ค(0, 1ํšŒ)
    • At least once(1~N)
      • ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋Š” ์ตœ์†Œํ•œ ๋ฒˆ์€ ์ฒ˜๋ฆฌ๋œ๋‹ค(1ํšŒ ์ด์ƒ)
      • ๋ฐ์ดํ„ฐ ์›๋ณธ ์ €์žฅ์†Œ๊ฐ€ ํŠน์ • ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ œ๊ณตํ•ด์ค„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
      • ๋งŽ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์ฆ
    • Exactly once(1)
      • ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋Š” ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋œ๋‹ค.
      • ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ณด์ฆ
  • Data Guarantees and Fault Tolerance in Streaming Systems

์•„ํ‚คํ…์ณ

Lambda Architecture

  • Batch Layer
    • Master Dataset์„ ๊ด€๋ฆฌํ•˜๊ณ 
    • Batch view๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• 
    • ๋ฐ์ดํ„ฐ ์ •ํ™•๋„๋Š” Batch Layer์—์„œ ๋‹ด๋‹น
  • Serving Layer
    • Batch view๋ฅผ Indexingํ•˜๊ณ  ๋น ๋ฅธ ์†๋„๋กœ ์‘๋‹ตํ•˜๋Š” ์—ญํ• 
    • low-latency, ad-hoc way
  • Speed Layer
    • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—ญํ• 

Kappa Architecture

  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ๋ฐ ์žฌ์ฒ˜๋ฆฌ ๋ชจ๋‘ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰

    • Kafka์—๋Š” ์žฌ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€
    • ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์ด ์ถฉ๋ถ„ํžˆ ๋นจ๋ผ์„œ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ๋ณด์กด ๋ฐ์ดํ„ฐ๋“ค๋„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Œ.
  • Kafka Cluster

  • Stream Processing System

  • Serving DB

์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์—์„œ ์ตœ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋นจ๋ฆฌ ์–ป์œผ๋ ค๋ฉด..?

Low Latency์˜ ์ค‘์š”์„ฑ.

  • Low Latency : ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ๊ณผ Batch ์ฒ˜๋ฆฌ์™€ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ .
  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ์˜ ๋ชฉํ‘œ
    • ๊ฒฐ๊ณผ๋ฅผ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ
  • Low Latency(1์ดˆ ์ดํ•˜)๊ฐ€ ํ•„์š”ํ•œ use case
    • ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด‘๊ณ , ์ด์ƒ๊ฑฐ๋ž˜ ํƒ์ง€, ํƒ์‹œ ์˜ˆ์•ฝ
  • Record ๋‹จ์œ„์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋ณดํŽธํ™”
    • ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์žฌ์ฒ˜๋ฆฌ๋„ record ๋‹จ์œ„๋ฅผ ์ง€์›

๊ทธ๋Ÿผ ๋ฌด์กฐ๊ฑด Low Latency๊ฐ€ ์ข‹์„๊นŒ?

  • Trade-off
    • ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) vs Latency
  • ๋ฐ์ดํ„ฐ ๋ฐ”๋กœ ์ „์†ก vs Batch ์ „์†ก
    • Throughput์€ Batch๊ฐ€ ์ข‹์ง€๋งŒ..
    • Low Latency๋ฅผ ํฌ๊ธฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ.

์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ์—์„œ ์ง‘๊ณ„(Aggregation)์€ ํ•  ์ˆ˜ ์—†์„๊นŒ?

  • Aggregation์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๊ฐ€๋Šฅ
    • ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ์ ์šฉํ•  ์ˆ˜ ์—†์Œ

Micro batch

  • ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ ์‹œ์ ์˜ ์‹œ๊ฐ„ ํ˜น์€ ๋ฐ์ดํ„ฐ ์ˆ˜ ๋‹จ์œ„๋กœ ๊ทธ๋ฃนํ™”
    • Low Latency์— ๋ณ„๋กœ ์ข‹์ง€ ์•Š๋‹ค.
    • batch ํฌ๊ธฐ์— ๋”ฐ๋ผ Latency์— ์˜ํ–ฅ์ด ๋ฐœ์ƒ.

์ง‘๊ณ„(Aggregation)๋ฅผ ๊ณ„์† ๋ˆ„์ ์‹œ์ผœ์„œ ๋ณผ ์ˆ˜๋Š” ์—†์„๊นŒ?

  • ์ƒํƒœ๋ฅผ ๋ณด์กด(Stateful)ํ•˜๋Š” ์ฒ˜๋ฆฌ
    • ์ง‘๊ณ„ ๊ฒฐ๊ณผ๊ฐ’์„ ์ƒํƒœ(state) ๊ฐ’์œผ๋กœ ์ €์žฅ, ๋งค ์ฒ˜๋ฆฌ ์‹œ์— ์ฝ์–ด์„œ ๋ˆ„์  ์ฒ˜๋ฆฌ
    • ์ƒํƒœ๊ฐ’์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋น ๋ฅธ ๋กœ์ปฌ ์ €์žฅ์†Œ(in-memory)์— ์ €์žฅํ•˜์—ฌ ๊ณ„์‚ฐ์— ํ™œ์šฉ
    • ๋ณต์›์„ ์œ„ํ•ด ์•ˆ์ •์ ์ธ ์ €์žฅ์†Œ์— 2์ฐจ๋กœ ์ €์žฅ

๊ตณ์ด.. Mircro batch์ผ ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ?

  • ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ์ง‘๊ณ„ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด?
    • ์—ฐ์‚ฐ ์ž์ฒด๋Š” ๋ฐฐ์น˜์ผ ํ•„์š”๊ฐ€ ์—†์Œ.
    • ์ƒํƒœ๊ฐ’์€ ์—ฌ์ „ํžˆ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.
      • ์•ˆ์ •์ ์ธ ์ €์žฅ์†Œ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ์™ธ๋ถ€, ๋กœ์ปฌ/์ธ๋ฉ”๋ชจ๋ฆฌ X
  • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์ด๋ก 

์ „์ฒด ๋ˆ„์ ๋ง๊ณ .. ์‹œ๊ฐ„๋Œ€๋ณ„ ๋ˆ„์ ์„ ๋ณผ ์ˆ˜ ์žˆ์„๊นŒ?

  • Windowing : ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ทธ๋ฃนํ™”
    • Fixed
    • Sliding
    • Session

์ด๋ฒคํŠธ๊ฐ€ ์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š๊ฒŒ ๋“ค์–ด์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š”?

  • Event Time Processing
  • ์ด๋ฒคํŠธ ํƒ€์ž„์„ ์“ฐ๋”๋ผ๋„ ๋ฐ์ดํ„ฐ ์œ ์ž… ์ˆœ์„œ๋Š” ์—ฌ์ „ํžˆ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.
    • ๋Šฆ๊ฒŒ ์œ ์ž…๋œ ๋ฐ์ดํ„ฐ๋„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค
  • ๊ทธ๋ ‡๋‹ค๊ณ  ๋ฌด์ž‘์ • ๊ธฐ๋‹ค๋ฆด ์ˆ˜๋Š” ์—†๋‹ค.
    • ์œˆ๋„์šฐ๊ฐ€ ๋๋‚˜์ง€ ์•Š๋Š”๋‹ค
    • ์ƒํƒœ(state)์˜ ํฌ๊ธฐ๋„ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์–ผ๋งˆ๋‚˜ ๋Šฆ์€ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ—ˆ์šฉํ•  ๊ฒƒ์ธ๊ฐ€?

  • WaterMark๋ฅผ ์‚ฌ์šฉํ•˜์ž.
    • ๋ฐ์ดํ„ฐ์˜ Event Time์„ ์ด์šฉํ•ด์„œ ์œ ํšจํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ Drop

์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ž‘ ์กฐํ•ฉํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?

  • Streaming - JOIN์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Streaming - Static
    • ์ฒ˜๋ฆฌ ํ๋ฆ„์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ์— ๋งž์ถ”๊ฒŒ ๋œ๋‹ค.
  • Streaming - Streaming
    • Record ๋‹จ์œ„ ๋น„๊ต join์€ ๋ถˆ๊ฐ€๋Šฅ
    • ์ƒํƒœ(State)์— ์˜์กด

SQL์ด ๋” ์นœ์ˆ™ํ•œ๋Œ€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ํ•˜๋ ค๋ฉด ๊ผญ ์ฝ”๋”ฉํ•ด์•ผ ํ•˜๋Š”๊ฑธ๊นŒ?

  • ๋งŽ์€ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ์ง€์›
  • SQL semantic ๋‚ด์˜ ๊ธฐ๋Šฅ๋งŒ ์ง€์›ํ•˜๋ฏ€๋กœ flexibility๋Š” ๋ถ€์กฑํ•จ

๋” ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด..?

  • Queryable State
  • Custom window
  • Side input / side output

๋„ทํ”Œ๋ฆญ์Šค์˜ ํ”Œ๋žซํผ ์—”์ง€๋‹ˆ์–ด๋ง - ์ •์œค์ง„๋‹˜

  • Netflix
    • ๊ธฐ๋Šฅ์ด ์‹ค์ œ Real๊นŒ์ง€ ๋ฐฐํฌ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ชฉํ‘œ.
      • Faster Update
      • ๋ถ„๋ฆฌ๋œ ํ™•์žฅ์„ฑ
      • ์žฅ์•  ํ™•์‚ฐ ๋ฐฉ์ง€.

Monolith Architecture์˜ ํ•œ๊ณ„์ 

  • D Module์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๋ฉด A, B, C ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • D Module์ด ์ž‘์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์™€๋„ rebuildํ•ด์•ผํ•˜๋Š” ๋‹จ์ .
  • A ๋ชจ๋“ˆ์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ „์ฒด App์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

Mircoservice์˜ ์žฅ์ ์€?

  • Faster Updates
    • ๊ฐ๊ฐ์˜ ํŒ€๋ณ„๋กœ Release๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ Feedback์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • Independent Scalability
    • Module ๋‹จ์œ„๋กœ ํ™•์žฅ(Scale Out / Scale In)
  • Prevent Failure Cascading
    • Fault isolations
  • Performance UX
    • Monolith๋ณด๋‹ค ๋น ๋ฅธ ๋ฐ˜์‘์„ฑ.

๋„ทํ”Œ๋ฆญ์Šค ๋ฌธํ™”

You Build It, You Run It, You Support It.

  • Full Cycle Developers
    • Cloud Based System์ธ ๊ฒฝ์šฐ ํ•ด๋‹น Concept์ด๋ž‘ ์ž˜ ๋งž๋Š”๋‹ค.
    • ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž์˜ ์—…๋ฌด๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๊ฒŒ ๋‹จ์ ์ž…๋‹ˆ๋‹ค.

๋„ทํ”Œ๋ฆญ์Šค Opensource

๋Œ€์šฉ๋Ÿ‰ ์„œ๋น„์Šค ์„ค๊ณ„ ๋ฐฉ๋ฒ• - ๊ฐ•๋Œ€๋ช…๋‹˜

SPOF(Single Point Of Failure) ์ œ๊ฑฐ

  • API Server ์ด์ค‘ํ™”
  • Database ์ด์ค‘ํ™”
  • ๋ฌผ๋ฆฌ ์„œ๋ฒ„ ์ด์ค‘ํ™”

Object Storage

  • NAS๋‚˜ ์„œ๋ฒ„ ํ•œ๋Œ€์—์„œ ์ž์ฒด๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ Content๊ฐ€ ์–ด๋””์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์ฐพ์•„์•ผ ํ• ๊นŒ?
    • ๋””์Šคํฌ ๋“ฑ์˜ ์ฆ์„ค ์‹œ๊ธฐ๋ฅผ ๋งž์ถ”๊ธฐ ์–ด๋ ค์›€
    • ๋ฐ์ดํ„ฐ ์œ ์‹ค ํ™•๋ฅ ์ด ๋†’๋‹ค.
    • Object Store ํ˜•ํƒœ๋กœ ๊ฐˆ๋ ค๋ฉด, ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›€.
  • Data๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ์ง€ ์•Š์„ ํ™•๋ฅ ์€?
    • 2 Replication : 99.99%
    • 3 Replication : 99.999%
  • Object Storage์˜ ์—ญํ• 
    • ์ด๋ฏธ์ง€ ๋“ฑ์˜ ํŒŒ์ผ์„ ์ €์žฅํ•จ.
    • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ณต์ œ๋ณธ์ด ์ƒ๊ฒจ ์œ ์‹ค์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Œ.
    • Storage์˜ Sizing, ์žฅ์• ๋“ฑ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ์ ์–ด์ง

๋ฐ์ดํ„ฐ์ƒค๋”ฉ

  • ๋ชจ๋“ˆ๋Ÿฌ๋Š” 2^N ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
  • 2^N์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉด ์ด๋™ํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค.
    • ํ•ญ์ƒ 2^N์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋˜๋ฉด ๋น„์šฉ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ.
  • ํ™•์žฅ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ ๊ฒŒ ์›€์ง์ด๋Š” ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋น„์šฉ, ์‹œ๊ฐ„ ๋” ๋งŽ์€ ์š”์†Œ๋“ค์„ ๊ฐ™์ด ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ.
    • ์ ์ ˆํ•œ Trade-off๋ฅผ ํ•˜์ž.

์ฝ”๋””๋„ค์ดํ„ฐ

  • ์ถ”๊ฐ€๋˜๊ณ  ์‚ญ์ œ๋˜๋Š” ์„œ๋ฒ„ ๋ชฉ๋ก์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€?
    • ์„œ๋ฒ„์˜ ์ถ”๊ฐ€ ์‚ญ์ œ์‹œ, ์ด๋ฅผ ์ด์šฉํ•˜๋Š” ์„œ๋น„์Šค์— ์•Œ๋ ค์ค€๋‹ค.

Circuit Breaker

์ฐจ๋ผ๋ฆฌ ๋นจ๋ฆฌ ์‹คํŒจํ•˜๊ณ , ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ฐ’์„ ๋‚ด๋ ค์ฃผ์ž.

  • ์„œ๋น„์Šค๊ฐ€ ๋‹ค์ˆ˜์˜ ๋งŽ์€ ์™ธ๋ถ€์„œ๋น„์Šค์˜ API๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์žฅ์• ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ Timeout์„ ์„ค์ •ํ•˜๊ฒŒ ๋˜์ง€๋งŒ
    • ํ•ด๋‹น ์Šค๋ ˆ๋“œ/ํ”„๋กœ์„ธ์Šค๊ฐ€ Timeout ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ๋ชปํ•˜๊ฒŒ ๋˜๊ณ 
    • ์ „์ฒด์ ์ธ ์„œ๋น„์Šค๊ฐ€ ๊ณ„์† ๋Š๋ ค์ง€๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • Timeout์ด 3์ดˆ๋ฉด..?
    • ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์€ API๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค๊ณ  3์ดˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๊ณ ,
    • ์š”์ฒญ์ด ์Œ“์ด๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค๋„ ์‘๋‹ต์ด ๋Š๋ ค์ง€๊ธฐ ์‹œ์ž‘ํ•จ.

๋ธ”๋ฃจ/๊ทธ๋ฆฐ ๋ฐฐํฌ, ์นด๋‚˜๋ฆฌ ๋ฐฐํฌ

๊ธฐ์กด์˜ ๋ฐฐํฌ๊ฐ€ ํž˜๋“  ์ด์œ 

  • ๋ฒ„๊ทธ์˜ ์กด์žฌ
    • ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ๋ฒ”์œ„๊ฐ€ ํด์ˆ˜์žˆ๋‹ค.
  • ๋ฐฐํฌ์— ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๊ฑธ๋ฆฐ๋‹ค.
    • ํ•˜๋‚˜์”ฉ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด..
    • ๋กค๋ฐฑ๋„ ๊ทธ๋งŒํผ ์˜ค๋žœ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • Cloud ํ™˜๊ฒฝ์ด๋ฉด ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ..?
    • IDC์ธ ๊ฒฝ์šฐ ๋ฌผ๋ฆฌ ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ๊ตฌ์ถ•ํ•ด์•ผํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • IDC๋Š” ๋น„์šฉ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ..

Feature Flag(Switch)

  • ํŠน์ • ๊ธฐ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„๋•Œ,ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊บผ๋ฒ„๋ฆฌ๋ฉด ๋œ๋‹ค.
    • ๋กค๋ฐฑ ๋ฐฐํฌ๋„ ํ•„์š” ์—†๋Š” ์žฅ์ .
    • ๋ณ„๋„์˜ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์ด ํ•„์š”ํ•œ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ ํŠน์ • ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด?
    • API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ชฝ์—์„œ ์–ด๋–ป๊ฒŒ ํ• ์ง€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Reference