System Design Roadmap

๋„ค๊ฐ€ ์ค€ ์‹œ์Šคํ…œ๋””์ž์ธ ์›๋ณธ

์ด ํŽ˜์ด์ง€๊ฐ€ ๊ธฐ์ค€์ด๋‹ค. ์‹œ์Šคํ…œ๋””์ž์ธ์€ ๋ชฉ๋ก ์•”๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์งˆ๋ฌธ 5๊ฐœ๋กœ ๋ฌธ์ œ๋ฅผ ์ฐŒ๋ฅด๊ณ , ์‹œ์Šคํ…œ 15์ˆ˜๋กœ ํ•ด๋ฒ•์„ ๋ถ„ํ•ดํ•˜๊ณ , ๋žฉ์—์„œ ์‹คํŒจ๋ฅผ ์ง์ ‘ ๋ชฉ๊ฒฉํ•œ ๋’ค ์˜์–ด๋กœ ๋ฐฉ์–ดํ•˜๋Š” ๋ฃจํ”„๋‹ค.

70
roadmap items
Operating rule

์ƒˆ ํŒจํ„ด์ด๋‚˜ ๊ธฐ์ˆ ์„ ๋งŒ๋‚˜๋ฉด ์ด๋ ‡๊ฒŒ๋งŒ ๋ถ„ํ•ดํ•œ๋‹ค: ์–ด๋А ์งˆ๋ฌธ์˜ ๋‹ต์ธ๊ฐ€ โ†’ ์–ด๋А ์ˆ˜์˜ ์กฐํ•ฉ์ธ๊ฐ€ โ†’ ๋Œ€๊ฐ€๋กœ ๋ฌด์—‡์„ ๋ƒˆ๋‚˜ โ†’ ์–ด๋–ค ์ˆซ์ž๋กœ ๋งž์•˜์Œ์„ ์•„๋‚˜.

์ด 4๋ฌธ์žฅ์œผ๋กœ ์•ˆ ํ’€๋ฆฌ๋ฉด ์•„์ง ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด๋‹ค. ๋ถ„ํ•ด๊ฐ€ ์•ˆ ๋˜๋Š” ํŒจํ„ด์€ ์ƒˆ ์ˆ˜ ํ›„๋ณด๋กœ ๊ฒฉ์ƒํ•œ๋‹ค.

Question 5 โ€” ๋ฌธ์ œ๋ฅผ ์ฐŒ๋ฅด๋Š” ์ถ•

๋ชจ๋“  ์‹œ์Šคํ…œ๋””์ž์ธ ๋‹ต๋ณ€์€ ์ด ๋‹ค์„ฏ ์งˆ๋ฌธ์„ ํ†ต๊ณผํ•ด์•ผ ํ•œ๋‹ค.

Service checks
1

Truth

์ง„์‹ค์€ ์–ด๋””์— ์žˆ๊ณ  ๋ˆ„๊ฐ€ ์ง€ํ‚ค๋‚˜?

Where is the source of truth, and what is the last line of defense?

2

Crash

์ค‘๊ฐ„์— ๋ป—์œผ๋ฉด ๋ฌด์—‡์ด ๋‚จ๊ณ  ๋ˆ„๊ฐ€ ์ด์–ด๋ฐ›๋‚˜?

If the process dies halfway, what durable record survives and who resumes it?

3

Concurrency

๋™์‹œ์— ์˜ค๋ฉด ์–ด๋–ค ๋ถˆ๋ณ€์‹์ด ๊นจ์ง€๋‚˜?

When requests race, which invariant can break and how do I preserve it?

4

Scale

10๋ฐฐ๊ฐ€ ๋˜๋ฉด ๋ฌด์—‡์ด ๋จผ์ € ๋ถ€๋Ÿฌ์ง€๋‚˜?

At ten times the load, which part breaks first and what fixed cost did I accept?

5

Detection

ํ‹€๋ ธ์Œ์„ ์–ด๋–ป๊ฒŒ ์•„๋‚˜?

What metric, trace, audit row, or reconciliation loop tells me the system is wrong?

System 15 โ€” ํ•ด๋ฒ•์„ ๋ถ„ํ•ดํ•˜๋Š” ์ˆ˜

๊ฐ ์ˆ˜๋Š” ๋„๊ตฌ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ ์‚ฌ๊ณ  ๋™์ž‘์ด๋‹ค. ๋ฐ˜๋“œ์‹œ ๊ณ ์ • ๋Œ€๊ฐ€๋ฅผ ๊ฐ™์ด ๋งํ•œ๋‹ค.

Full move deck

Correctness 5

truth, atomicity, idempotency, durable intent, reconciliation

Efficiency 6

do less, copy, split, precompute, queue, approximate

Structure 1

add a layer only when the hop earns its cost

Survival 2

bounded everything, loud visible failure

Distributed 1

consensus and quorum when truth spans nodes

Algorithm 10 โ€” ๋ณ„๋„ ์˜ํ† 

์‹œ์Šคํ…œ์€ ์‹คํŒจ์™€ ๋™์‹œ์„ฑ์ด ์ ์ด๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ณต์žก๋„๊ฐ€ ์ ์ด๋‹ค. ์„ž์ง€ ๋ง๊ณ  ๋”ฐ๋กœ ํ›ˆ๋ จํ•œ๋‹ค.

์•Œ๊ณ  1

์ „์ˆ˜์กฐ์‚ฌ ๋จผ์ €

I start with brute force to define correctness.

์•Œ๊ณ  2

์ •๋ ฌํ•˜๊ณ  ์‹œ์ž‘ํ•œ๋‹ค

Sorting gives me order, and order gives me leverage.

์•Œ๊ณ  3

๋ฐ˜์”ฉ ๋ฒ„๋ฆฐ๋‹ค

If the answer space is monotonic, I can discard half.

์•Œ๊ณ  4

๋‚˜๋ˆ  ํ’€๊ณ  ํ•ฉ์นœ๋‹ค

I split the problem, solve the pieces, then combine the result.

์•Œ๊ณ  5

ํ‘ผ ๊ฒƒ์€ ๊ธฐ์–ตํ•œ๋‹ค

If I solve the same state again, I should remember it.

์•Œ๊ณ  6

๋งค ์ˆœ๊ฐ„ ์ตœ์„ ๋งŒ

Greedy only works when the local choice is safe.

์•Œ๊ณ  7

์ฐฝ๋ฌธ์„ ๋ฏผ๋‹ค

A sliding window turns repeated scanning into one pass.

์•Œ๊ณ  8

ํ•ด์‹œ๋กœ O(1)์— ์ฐพ๋Š”๋‹ค

A hash map buys constant-time lookup with extra memory.

์•Œ๊ณ  9

ํผ์ ธ๋‚˜๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•œ๋‹ค

BFS explores by distance; DFS explores by path.

์•Œ๊ณ  10

์‹œ๋„ํ•˜๊ณ  ๋˜๋Œ๋ฆฐ๋‹ค

Backtracking is a controlled try-and-undo search.

Experience protocol โ€” ํšŒ์‚ฌ ์—†์ด ๊ฒฝํ—˜ ๋งŒ๋“œ๋Š” ๋ฒ•

๊ฐœ๋… ์•ˆ๋‹ค = ์ง€์‹. ํ„ฐ์ง„ ํ–‰์„ ๋ณธ ์  ์žˆ๋‹ค = ๊ฒฝํ—˜.

1

Build naive

ํŒจํ„ด ์—†์ด ์ˆœ์ง„ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ž˜์•ผ ์™œ ํŒจํ„ด์ด ํ•„์š”ํ•œ์ง€ ๋ชธ์œผ๋กœ ์•ˆ๋‹ค.

First I build the naive version so the failure has somewhere to show up.

2

Attack it

์ค‘๋ณต์š”์ฒญ, ๋™์‹œ 100๊ฐœ, TTL ๋งŒ๋ฃŒ, consumer kill, ๋А๋ฆฐ ์˜์กด์„ฑ ๊ฐ™์€ ๊ณต๊ฒฉ์„ ์ง์ ‘ ๋„ฃ๋Š”๋‹ค.

Then I attack it with the exact failure mode I expect in production.

3

Witness the failure

๊นจ์ง„ ํ–‰, p99 ํญ๋“ฑ, lag, DLQ, deadlock ์›๋ฌธ์„ ๋ˆˆ์œผ๋กœ ๋ณธ๋‹ค. ๋ชฉ๊ฒฉ ์—†์ด ์™„๋ฃŒ ๊ธˆ์ง€.

I need to witness the broken row, the latency spike, or the error log myself.

4

Apply the pattern

๋ฉฑ๋“ฑํ‚ค, outbox, CAS, index, cache, timeout, circuit breaker ๋“ฑ ํ•„์š”ํ•œ ์ˆ˜๋ฅผ ๋ฐ•๋Š”๋‹ค.

Only after the failure is visible do I apply the pattern.

5

Re-attack

๊ฐ™์€ ๊ณต๊ฒฉ์„ ๋‹ค์‹œ ๋„ฃ์–ด์„œ ๋ฒ„ํ‹ฐ๋Š” ๊ฒƒ์„ ๋ณธ๋‹ค. ์ˆ˜์„ ์ด ์ง„์งœ์ธ์ง€ ์ˆซ์ž๋กœ ํ™•์ธํ•œ๋‹ค.

I run the same attack again and prove the fix with a number.

6

Log the evidence

Symptom / Cause / Fix / Metric / English interview line์„ mdx ๋กœ๊ทธ๋กœ ๋‚จ๊ธด๋‹ค.

I close the loop with evidence: symptom, cause, fix, metric, and the interview sentence.

Execution roadmap โ€” 70 items

Tier R/1/2/3/4/Foundation์„ ํ•œ ํ™”๋ฉด์—์„œ ๋ณธ๋‹ค. ์™„๋ฃŒ ๊ธฐ์ค€์€ ์ดํ•ด๊ฐ€ ์•„๋‹ˆ๋ผ ์ฆ๊ฑฐ๋‹ค.

Reclaim

Tier R โ€” Reclaim existing code

๋จผ์ € ์ฝ๊ณ , ๋‹ซ๊ณ , ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๊ณ , ์™œ ๊ทธ๋Ÿฐ์ง€ ๋งํ•œ๋‹ค.

repo์— ์žˆ๋Š” AI ์ฃผ๋„ ์ฝ”๋“œ๋„ ๋„ค ์†์œผ๋กœ ์žฌ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์—๋Š” ๋„ค ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

12
items
Idempotency

webhook event_id UNIQUE, replay-safe result.

์ˆ˜3

Evidence: duplicate webhook์„ ๋‘ ๋ฒˆ ๋„ฃ์–ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ๋ฐ”๋€Œ๋Š” ๋กœ๊ทธ.

CAS / Conditional Update

version ๋˜๋Š” ์กฐ๊ฑด๋ถ€ UPDATE๋กœ lost update ๋ฐฉ์ง€.

์ˆ˜2

Evidence: ๋™์‹œ ์š”์ฒญ ์ „ํ›„ ์ž”์•ก/์ƒํƒœ ๋ถˆ๋ณ€์‹ ๋น„๊ต.

Optimistic vs Pessimistic Locking

์ถฉ๋Œ๋ฅ ์— ๋”ฐ๋ผ retry์™€ wait ์ค‘ ์„ ํƒ.

์ˆ˜2

Evidence: lock wait time, conflict rate, retry count.

DB Constraints

UNIQUE/CHECK/NOT NULL์„ ๋งˆ์ง€๋ง‰ ๋ฐฉ์–ด์„ ์œผ๋กœ ๋‘”๋‹ค.

์ˆ˜1

Evidence: ์ฝ”๋“œ๊ฐ€ ์ƒˆ๋„ DB๊ฐ€ ๊ฑฐ๋ถ€ํ•˜๋Š” ์‹คํŒจ ํ…Œ์ŠคํŠธ.

Transaction Boundary

์ƒํƒœ ๋ณ€๊ฒฝ๊ณผ ๊ฐ์‚ฌ/๋ถ€์ˆ˜ ๊ธฐ๋ก์„ ์–ด๋””๊นŒ์ง€ ํ•œ ์ปค๋ฐ‹์œผ๋กœ ๋ฌถ์„์ง€ ์ •ํ•œ๋‹ค.

์ˆ˜2

Evidence: ์ค‘๊ฐ„ crash ์‹œ ๋ฐ˜์ชฝ ์ƒํƒœ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ.

Audit Trail

์—…๋ฐ์ดํŠธ๋กœ ๋ฎ์ง€ ์•Š๊ณ  append-only๋กœ ์‚ฌ๊ฑด์„ ๋‚จ๊ธด๋‹ค.

์ˆ˜4

Evidence: ์ „์ด๋งˆ๋‹ค audit row๊ฐ€ ๋‚จ๋Š” ์ฟผ๋ฆฌ.

Tracing / Correlation ID

์š”์ฒญ ํ•˜๋‚˜๋ฅผ ๋กœ๊ทธ์™€ trace์—์„œ ์ด์–ด์„œ ๋ณธ๋‹ค.

์ˆ˜14

Evidence: ํ•œ trace id๋กœ gateway -> DB๊นŒ์ง€ ๋”ฐ๋ผ๊ฐ€๋Š” ์บก์ฒ˜.

Secure Credential Storage

hashing, dummy hash, secret handling.

security

Evidence: ์›๋ฌธ ๋น„๋ฐ€๋ฒˆํ˜ธ/ํ† ํฐ์ด ์ €์žฅ๋˜์ง€ ์•Š๋Š” ์ฆ๊ฑฐ.

Token Rotation

refresh token ์žฌ์‚ฌ์šฉ ๊ฐ์ง€์™€ ํ๊ธฐ.

์ˆ˜1ยท3

Evidence: reuse ์‹œ ์ „์ฒด ์„ธ์…˜ ํ๊ธฐ ํ…Œ์ŠคํŠธ.

Data Modeling

entity ownership๊ณผ ์ ‘๊ทผ ํŒจํ„ด์— ๋งž์ถฐ ํ…Œ์ด๋ธ”์„ ๋‚˜๋ˆˆ๋‹ค.

์ˆ˜1

Evidence: ERD + ํ•ต์‹ฌ ์ฟผ๋ฆฌ 3๊ฐœ.

Indexing Basics

๋“ฑํ˜ธ ๋จผ์ €, ๋ฒ”์œ„ ๋‹ค์Œ, partial index.

์ˆ˜6ยท9

Evidence: EXPLAIN ANALYZE ์ „ํ›„.

Schema Migration

์ ์šฉ๋œ V ์ˆ˜์ • ๊ธˆ์ง€, expand-contract.

์ˆ˜4ยท12

Evidence: ๋ฌด์ค‘๋‹จ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ˆ์ฐจ.

Production

Tier 1 โ€” Production money path

Paddle/webhook/entitlement ๊ฐ™์€ ๋ˆ ํ๋ฆ„์— ๋ฐ•๋Š”๋‹ค.

๋ฉ”์‹œ์ง€๋ฅผ ์žƒ์ง€๋„, ๋‘ ๋ฒˆ ์ฒ˜๋ฆฌํ•˜์ง€๋„, ์ฃฝ์€ ์˜์กด์„ฑ์— ๋Œ๋ ค๊ฐ€์ง€๋„ ์•Š๊ฒŒ ๋งŒ๋“ ๋‹ค.

12
items
Transactional Outbox

entitlement ๋ณ€๊ฒฝ๊ณผ outbox row๋ฅผ ํ•œ ํŠธ๋žœ์žญ์…˜์— ๊ธฐ๋ก.

์ˆ˜2ยท4

Evidence: DB commit ํ›„ worker๊ฐ€ ๋ฐœํ–‰ํ•˜๋Š” trace.

Idempotent Consumer

event_id UNIQUE๋กœ at-least-once ์ค‘๋ณต ์ƒ์กด.

์ˆ˜3

Evidence: ๊ฐ™์€ event 2ํšŒ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ.

Retry + Backoff + Jitter

์™ธ๋ถ€ ์‹คํŒจ ์‹œ ๋ฌดํ•œ ์žฌ์‹œ๋„ ๊ธˆ์ง€.

์ˆ˜13

Evidence: retry schedule๊ณผ max attempt ๋กœ๊ทธ.

DLQ

์†Œ์ง„๋œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  ๋ณด๊ด€+์•Œ๋žŒ.

์ˆ˜14

Evidence: poison message๊ฐ€ DLQ๋กœ ๋น ์ง€๋Š” ์บก์ฒ˜.

Timeout Budget

๋ชจ๋“  ์™ธ๋ถ€ ํ˜ธ์ถœ์— hard timeout.

์ˆ˜13

Evidence: ๋А๋ฆฐ dependency๊ฐ€ thread pool์„ ์žก์•„๋จน์ง€ ์•Š๋Š” ์ง€ํ‘œ.

Circuit Breaker + Bulkhead

์—ฐ์† ์‹คํŒจ ์‹œ fast-fail, pool ๊ฒฉ๋ฆฌ.

์ˆ˜8ยท13ยท14

Evidence: open circuit count, protected endpoint latency.

Kill Switch / Feature Flag

๋ฐฐํฌ์™€ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ๋ถ„๋ฆฌ.

์ˆ˜12ยท14

Evidence: ์ƒˆ ๋กœ์ง off ์ „ํ›„ ๋™์ž‘.

Expand-Contract Migration

์ถ”๊ฐ€ -> ์–‘์ชฝ์“ฐ๊ธฐ -> ์ „ํ™˜ -> ์ œ๊ฑฐ.

์ˆ˜12

Evidence: ๊ตฌ๋ฒ„์ „/์‹ ๋ฒ„์ „ ๋™์‹œ serving ํ™•์ธ.

Rate Limiting

token bucket์œผ๋กœ ํ•œ ์‚ฌ์šฉ์ž์˜ ์šฉ๋Ÿ‰ ๋…์‹ ๋ฐฉ์ง€.

์ˆ˜13

Evidence: 429 rate, Retry-After, abuse case.

API Design

pagination, versioning, Idempotency-Key, error format.

์ˆ˜1ยท3ยท12

Evidence: API contract + failure examples.

Webhook Signature + Ordering

์„œ๋ช… ๊ฒ€์ฆ, out-of-order event ์ฒ˜๋ฆฌ.

์ˆ˜1ยท3ยท5

Evidence: ์ทจ์†Œ๊ฐ€ ๊ฒฐ์ œ๋ณด๋‹ค ๋จผ์ € ์˜ค๋Š” ํ…Œ์ŠคํŠธ.

Reconciliation Job

provider์™€ ๋‚ด๋ถ€ entitlement๋ฅผ ์ฃผ๊ธฐ ๋Œ€์กฐ.

์ˆ˜5

Evidence: mismatch report and repair policy.

Playground

Tier 2 โ€” Playground evolution

opendoor-mini/point-shop์ด ์„ฑ์žฅํ•˜๋ฉด์„œ ๊ฐ•์ œ๋กœ ์ง„ํ™”ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

๊ฐ ์ˆ˜์„ ์˜ ๊ณ ์ • ๋Œ€๊ฐ€๊ฐ€ ๋‹ค์Œ ์Šคํ…Œ์ด์ง€์˜ ์ฆ์ƒ์ด ๋œ๋‹ค.

22
items
Phase 0 โ€” boot flow

๊ฒฌ์  -> PASS -> ์ˆ˜๋ฝ -> ๋Œ€์‹œ๋ณด๋“œ -> ๋งค๋„ ์ „์ฒด ํ”Œ๋กœ์šฐ ๊ฒ€์ฆ.

์ˆ˜1ยท5

Evidence: happy-path trace and row counts.

Redis cache-aside

๋™๋„ค๋ณ„ median ๊ฐ™์€ ๋А๋ฆฐ read๋ฅผ Redis๋กœ ์บ์‹œ.

์ˆ˜7

Evidence: cache hit rate, DB QPS, p95 before/after.

Cache stampede

TTL ๋งŒ๋ฃŒ ์ˆœ๊ฐ„ ๋™์‹œ ์š”์ฒญ 1๊ฐœ๋งŒ DB๋กœ ๋ณด๋‚ด๊ธฐ.

์ˆ˜7ยท10ยท13

Evidence: same TTL attack before/after DB query count.

TTL as risk parameter

staleness bound ์„ค๊ณ„์™€ as-of ํ‘œ์‹œ.

์ˆ˜7ยท13

Evidence: stale response count and TTL policy.

Contention deep lab

CAS vs SELECT FOR UPDATE vs no defense, ๋™์‹œ 100์š”์ฒญ ์‹ค์ธก.

์ˆ˜2ยท3

Evidence: incorrect balance count, conflict rate, lock wait.

Kafka / Redpanda stream

์‹ ๊ทœ ๊ฑฐ๋ž˜ ์ŠคํŠธ๋ฆผ -> consumer๊ฐ€ sold_homes ์ ์žฌ.

์ˆ˜4ยท10

Evidence: producer/consumer trace and lag.

Idempotent consumer again

Kafka ์ค‘๋ณต ๋ฐฐ๋‹ฌ์—์„œ UNIQUE/dedup marker๋กœ ์ค‘๋ณต ๋ฐฉ์ง€.

์ˆ˜3ยท4

Evidence: same message delivered twice, one side effect.

Realtime updates with SSE

์ƒˆ ๊ฑฐ๋ž˜ ์œ ์ž… ์‹œ ops dashboard์— push.

์ˆ˜10ยท12

Evidence: event-to-screen delay p95.

Stream aggregation

๋™๋„ค๋ณ„ rolling median์„ consumer๋กœ ๋ฏธ๋‹ˆ ๊ตฌํ˜„.

์ˆ˜9ยท10ยท11

Evidence: lag, aggregate drift, recompute check.

Saga compensation

๊ฒ€์‚ฌ -> ํƒ€์ดํ‹€ -> ์†ก๊ธˆ ์ค‘๊ฐ„ ์‹คํŒจ ์‹œ ์—ญ์ˆœ ๋ณด์ƒ.

์ˆ˜2ยท4ยท5

Evidence: failed step and compensation log.

Multi-step state machine

๋‹จ๊ณ„๋ณ„ ์ƒํƒœ ์ „์ด์™€ ์žฌ๊ฐœ ๊ฐ€๋Šฅ์„ฑ.

์ˆ˜1ยท2ยท4

Evidence: illegal transition rejected, resume after crash.

Long-running tasks

์•ผ๊ฐ„ ์ „์ฒด ์žฌํ‰๊ฐ€: jobs table + worker + idempotent retry.

์ˆ˜3ยท4ยท10

Evidence: job restart without duplicate side effects.

Fencing token

๋ฝ ์žก์€ ์ข€๋น„ ์›Œ์ปค๊ฐ€ ๋’ค๋Šฆ๊ฒŒ ์“ฐ๋Š” ๋ฌธ์ œ ์žฌํ˜„.

์ˆ˜1ยท2ยท15

Evidence: stale worker write rejected.

Backpressure / load shedding

์žก ํ ๊นŠ์ด ์ƒํ•œ๊ณผ ์ดˆ๊ณผ ์‹œ ๊ฑฐ๋ถ€.

์ˆ˜10ยท13ยท14

Evidence: queue depth, 503/429 rate, p99 protected.

Sharding / partitioning

sold_homes๋ฅผ market/city๋ณ„ LIST partitioning.

์ˆ˜8

Evidence: partition scan count and cross-partition cost.

Scaling writes

COPY/batch INSERT ์‹ค์ธก.

์ˆ˜6ยท9ยท10

Evidence: single insert vs batch throughput.

CQRS-lite

write Postgres -> read model Redis/aggregate table ๋ถ„๋ฆฌ.

์ˆ˜7ยท9

Evidence: read p95, projection lag.

BFF

web/mobile๋ณ„ ์‘๋‹ต ์กฐ๋ฆฝ ๋ ˆ์ด์–ด.

์ˆ˜12

Evidence: client calls reduced, hop latency measured.

Large blobs

์ง‘ ์‚ฌ์ง„: MinIO/S3 compatible + presigned URL.

์ˆ˜7ยท12

Evidence: upload/download path and permission check.

Search

Postgres FTS ๋จผ์ €, ์–ธ์ œ Elasticsearch๋กœ ๊ฐˆ์ง€ ๊ธฐ์ค€.

์ˆ˜6ยท7ยท9

Evidence: LIKE vs FTS vs ES p95 and index lag.

Vector DB / pgvector

comps = kNN, ํŠน์ง• ๋ฒกํ„ฐ ์œ ์‚ฌ๋„.

์ˆ˜7ยท9ยท11

Evidence: nearest-neighbor quality examples.

Time series

๋™๋„ค ๊ฐ€๊ฒฉ์ง€์ˆ˜ ์‹œ๊ณ„์—ด ๋ชจ๋ธ๋ง.

์ˆ˜8ยท9ยท11

Evidence: query shape, retention, rollup policy.

Lab

Tier 3 โ€” Half-day labs

์ž‘๊ณ  ๋น ๋ฅด๊ฒŒ ์‹คํŒจ๋ฅผ ๋ชฉ๊ฒฉํ•œ๋‹ค.

๋ฐ˜๋‚˜์ ˆ ์•ˆ์— ์‹คํŒจ ์›๋ฌธ์ด๋‚˜ ์ˆซ์ž๊ฐ€ ๋‚˜์™€์•ผ ํ•œ๋‹ค.

8
items
EXPLAIN ANALYZE

index ์ „ํ›„, rows scanned, buffers.

์ˆ˜6ยท9

Evidence: query plan screenshot.

Consistent Hashing

node add/remove ์‹œ key movement ์ธก์ •.

์ˆ˜8

Evidence: movement percentage.

Bloom Filter

์˜คํƒ๋ฅ ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฐ๋‹ค.

์ˆ˜11

Evidence: false positive rate.

HyperLogLog

์ •ํ™•๋„๋ฅผ ํŒ”์•„ unique count ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค„์ธ๋‹ค.

์ˆ˜11

Evidence: exact vs estimated count.

Leader Election

advisory lock์œผ๋กœ ๋ฐฐ์น˜ ๋ฆฌ๋” 1๋ช….

์ˆ˜15

Evidence: two workers, one leader.

Replica Lag

๋ฐฉ๊ธˆ ์“ด ๊ฒŒ replica์—์„œ ์•ˆ ๋ณด์ด๋Š” ์‚ฌ๊ณ .

์ˆ˜7ยท15

Evidence: read-your-writes failure.

Numbers to Know

๋‚ด HTTP/DB/cache latency ํ‘œ.

์ˆ˜5ยท14

Evidence: personal latency table.

Graceful Shutdown

SIGTERM ์ค‘ ์š”์ฒญ/์žก์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ •๋ฆฌ.

์ˆ˜13ยท14

Evidence: in-flight request survives.

Talk

Tier 4 โ€” Talk only

๋งŒ๋“ค๋ฉด ์†ํ•ด์ธ ๊ฒƒ๋“ค์€ ๋…ผ์˜๋กœ ์ถฉ๋ถ„ํžˆ ์žก๋Š”๋‹ค.

์ง์ ‘ ๊ฒฝํ—˜ ๋žฉ ๋’ค์— ๋ง๋กœ ์ •๋ฆฌํ•ด์•ผ ์ง„์งœ ์ดํ•ด๋œ๋‹ค.

7
items
CAP Theorem

replica lag ๊ฒฝํ—˜ ๋’ค ์ผ๊ด€์„ฑ/๊ฐ€์šฉ์„ฑ ์„ ํƒ์„ ๋งํ•œ๋‹ค.

์ˆ˜7ยท15

Evidence: partition scenario explanation.

Cassandra / DynamoDB

์–ธ์ œ RDB๊ฐ€ ์•„๋‹ˆ๋ผ wide-column/key-value๊ฐ€ ํ•„์š”ํ•œ์ง€.

์ˆ˜8ยท15

Evidence: access pattern comparison.

ZooKeeper internals

advisory lock ๋žฉ ํ›„ ์ง„์งœ coordination์„ ๋งํ•œ๋‹ค.

์ˆ˜15

Evidence: leader/quorum explanation.

Event Sourcing

append-only audit์™€ full event sourcing์˜ ์ฐจ์ด.

์ˆ˜4ยท5

Evidence: where not to use it.

Sidecar / Service Mesh

์กฐ์ง/์šด์˜ ๊ทœ๋ชจ๊ฐ€ ๋งŒ๋“  ๋ ˆ์ด์–ด.

์ˆ˜12

Evidence: when the hop earns its cost.

Strangler Fig

๋ ˆ๊ฑฐ์‹œ ์ ์ง„ ๊ต์ฒด ์ „๋žต.

์ˆ˜12

Evidence: migration cutover sketch.

API Gateway

์ง์ ‘ ๋งŒ๋“  limiter์™€ Kong/ALB์˜ ์ฐจ์ด.

์ˆ˜12ยท13

Evidence: build vs buy boundary.

Foundations

Foundations โ€” parallel basics

๋งค์ผ ์กฐ๊ธˆ์”ฉ. ๋ชจ๋ฅด๋ฉด ์„ค๊ณ„๊ฐ€ ์ „๋ถ€ ํ”๋“ค๋ฆฐ๋‹ค.

๊ธฐ์ดˆ๋Š” ๊ฒ€์ƒ‰์šฉ ์ง€์‹์ด ์•„๋‹ˆ๋ผ ์ฆ‰์‹œ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด์—ฌ์•ผ ํ•œ๋‹ค.

9
items
CORS / preflight

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์™œ ์‚ฌ์ „ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š”์ง€.

security

Evidence: OPTIONS flow explanation.

DNS / A / CNAME

๋„๋ฉ”์ธ์ด ์‹ค์ œ IP๋กœ ๊ฐ€๋Š” ํ๋ฆ„.

์ˆ˜1ยท12

Evidence: domain setup explanation.

HTTPS / TLS

์ธ์ฆ์„œ๊ฐ€ ๋ฌด์—‡์„ ๋ณด์ฆํ•˜๋Š”์ง€.

security

Evidence: handshake in plain English.

JVM basics

heap, stack, GC, allocation.

์ˆ˜13ยท14

Evidence: GC pause and heap graph.

Networking

TCP/UDP, keep-alive, connection pool.

์ˆ˜13

Evidence: pool exhaustion scenario.

Concurrency terms

race, deadlock, thread pool, visibility.

์ˆ˜2ยท13

Evidence: two-session reproduction.

HTTP / REST / status

method semantics and error contract.

์ˆ˜1ยท3ยท12

Evidence: idempotent method examples.

Transaction / Isolation / Lock

isolation anomalies and lock behavior.

์ˆ˜2

Evidence: READ COMMITTED vs REPEATABLE READ demo.

Auth / Authorization / Hashing

identity, permission, secret storage.

security

Evidence: threat scenario explanation.