"매 system throughput 매 single bottleneck 의 결정". Goldratt 의 1984 The Goal 에서 정립. 매 system 의 weakest link (constraint) 가 전체 throughput 의 제한 → 매 다른 모든 부분의 optimization 매 wasted. 매 manufacturing 에서 시작, 매 software (DevOps, ML pipeline, LLM agent throughput) 까지 broad applicable.
매 핵심
매 5-step focusing process
Identify the constraint.
Exploit it (maximize utilization without extra investment).
Subordinate everything else to the constraint.
Elevate the constraint (invest to expand capacity).
Repeat — 매 constraint 매 moves elsewhere.
매 핵심 metrics (Throughput Accounting)
Throughput (T) — 매 sales rate of new revenue.
Inventory / Investment (I) — 매 money tied in the system.
Operating Expense (OE) — 매 money spent to convert I → T.
매 priority: maximize T, minimize I, control OE.
매 modern applications (2026)
DevOps — 매 The Phoenix Project (Kim 2013) 매 TOC + Lean 매 IT ops 에 적용.
ML pipeline — 매 GPU bottleneck (training), tokenizer (inference batch), vector store (RAG retrieval).
LLM agent — 매 sequential tool call 의 dominant latency contributor 의 identify → parallel.
Org / Team — 매 single approval bottleneck → workflow change.
importtimedefprofile_pipeline(stages,inp):timings={}out=inpforname,fninstages:t0=time.perf_counter()out=fn(out)timings[name]=time.perf_counter()-t0bottleneck=max(timings,key=timings.get)returnout,timings,bottleneck# 매 result: {"tokenize": 0.001, "embed": 0.04, "vector_search": 0.32, "rerank": 0.18}# 매 bottleneck: vector_search → 매 elevate (HNSW tune, GPU index, shard).
매 LLM agent: serialize → parallelize
# 매 BEFORE (serial — bottleneck = sum)ctx=awaitfetch_user(uid)weather=awaitget_weather(ctx.city)calendar=awaitfetch_calendar(uid)# 매 AFTER (parallel — bottleneck = max)ctx,weather,calendar=awaitasyncio.gather(fetch_user(uid),get_weather_for_user(uid),fetch_calendar(uid),)
매 DBR (Drum-Buffer-Rope) for queue
# 매 Drum: bottleneck stage paces the system# 매 Buffer: small queue before bottleneck (의 starvation 방지)# 매 Rope: feedback to release new work only when buffer drainsimportasynciobuffer=asyncio.Queue(maxsize=8)# 매 Bufferasyncdefproducer():whileTrue:item=next_work()awaitbuffer.put(item)# 매 Rope (blocks when full)asyncdefbottleneck_consumer():# 매 DrumwhileTrue:item=awaitbuffer.get()awaitexpensive_step(item)
언제: 매 multi-stage pipeline 의 latency / cost 의 분석, ML / agent system optimization, team workflow bottleneck.
언제 X: 매 single-step task — 매 TOC framing 매 overhead.
❌ 안티패턴
Local optimization: 매 non-bottleneck 의 optimize 매 system throughput 의 0% 변화.
Multiple "bottlenecks": 매 일반적으로 single dominant — 매 measure 안 하고 guess 매 wrong.
Ignoring the shift: 매 bottleneck fix 후 다른 stage 가 새 constraint — 매 repeat 안 하면 stuck.
Capacity addition without exploit: 매 step 4 (elevate) 의 step 2 (exploit) 전에 — 매 expensive 하게 hardware buy 후 underutilized.
🧪 검증 / 중복
Verified (Goldratt 1984 The Goal, Kim Phoenix Project 2013, Beyond the Phoenix Project 2018).
신뢰도 A.
🕓 Changelog
날짜
변경
2026-05-08
Phase 1
2026-05-10
Manual cleanup — TOC + DevOps/ML pipeline modern application