ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿ›๏ธ The System Design Playbook ๐Ÿ“–
Dev.toDev.to
Infrastructure

Trade-off ๊ธฐ๋ฐ˜์˜ ๊ณ ๋ฐ€๋„ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ฒฐ์ • ์ฒด๊ณ„ ์ •๋ฆฝ

๐Ÿ›๏ธ The System Design Playbook ๐Ÿ“–

Truong Phung2026๋…„ 5์›” 5์ผ66๋ถ„advanced

Context

๋‹จ์ˆœํ•œ ์ปดํฌ๋„ŒํŠธ ์„ ํƒ์ด ์•„๋‹Œ, ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฐ์ •(Hard-to-reverse decisions)์„ ๋ช…์‹œํ™”ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก ์˜ ํ•„์š”์„ฑ ๋Œ€๋‘. ๋ฌด๋ถ„๋ณ„ํ•œ ์ถ”์ƒํ™”์™€ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ ์ธํ•œ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ ์ฆ๊ฐ€ ๋ฐ ์‹œ์Šคํ…œ ๋ณต์žก๋„ ์‹ฌํ™” ๋ฌธ์ œ ๋ถ„์„.

Technical Solution

  • CAP์™€ PACELC ์ด๋ก ์„ ์ ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํŒŒํ‹ฐ์…˜ ๋ฐœ์ƒ ์‹œ Consistency์™€ Availability ์ค‘ ๋น„์ฆˆ๋‹ˆ์Šค ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ฅธ ์ €์žฅ์†Œ ์„ ํƒ
  • Linearizability๊ฐ€ ํ•„์š”ํ•œ ํŠน์ • ์ž‘์—…์—๋งŒ Sequencer๋ฅผ ์ ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” Eventual Consistency๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํšจ์œจ์  ์ผ๊ด€์„ฑ ๋ชจ๋ธ ์„ค๊ณ„
  • QPS, Latency Budget, Storage Size ๋“ฑ ์ •๋Ÿ‰์  ์ง€ํ‘œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” 'Quantify before you draw' ์›์น™ ์ ์šฉ
  • Postgres, Redis, Kafka ๋“ฑ ๊ฒ€์ฆ๋œ Boring Tool์„ ์šฐ์„  ์ฑ„ํƒํ•˜์—ฌ ๊ธฐ์ˆ ์  ๋ฆฌ์Šคํฌ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ณด์ˆ˜์  ์Šคํƒ ๊ตฌ์„ฑ
  • ์‹คํŒจ ๋ชจ๋“œ(Failure Modes)๋ฅผ ์‚ฌ์ „์— ์ •์˜ํ•˜์—ฌ ๋ถ€๋ถ„์  ์†์‹ค์„ ํ—ˆ์šฉํ•˜๋Š” Graceful Degradation ๊ตฌ์กฐ ์„ค๊ณ„
  • ๋ฐ์ดํ„ฐ ํŠน์„ฑ์— ๋”ฐ๋ผ ACID(๊ธˆ์œต, ์žฌ๊ณ )์™€ BASE(ํ”ผ๋“œ, ๋ถ„์„) ๋ชจ๋ธ์„ ๋ถ„๋ฆฌ ์ ์šฉํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐ์ดํ„ฐ ์ „๋žต ์ˆ˜๋ฆฝ

1. ๋ชจ๋“  ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ • ์‹œ ํฌ๊ธฐํ•œ ๊ฐ€์น˜(Trade-off)๋ฅผ ๋ฌธ์„œ์— ๋ช…์‹œํ–ˆ๋Š”๊ฐ€?

2. ๋‹ค์ด์–ด๊ทธ๋žจ์˜ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ์˜ˆ์ƒ QPS์™€ Latency ์ˆ˜์น˜๊ฐ€ ํ• ๋‹น๋˜์—ˆ๋Š”๊ฐ€?

3. ํŠน์ • ์ปดํฌ๋„ŒํŠธ ์žฅ์•  ์‹œ ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ๋ถ€๋ถ„์  ๊ธฐ๋Šฅ ์ €ํ•˜๋กœ ๋Œ€์‘ ๊ฐ€๋Šฅํ•œ๊ฐ€?

4. ๋ถˆํ•„์š”ํ•œ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด๊ฐ€ ๋ฏธ๋ž˜์˜ ๋ถˆํ™•์‹คํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์œ„ํ•ด ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜๋Š”๊ฐ€?

์›๋ฌธ ์ฝ๊ธฐ