"매 안 하면 좋은 것". 매 design 의 mistake catalog. 매 timeout misconfig, 매 distributed monolith, 매 big ball of mud. 매 anti-pattern 의 catalog 의 senior 의 첫 weapon.
📖 핵심
매 카테고리
Distributed system
Distributed monolith: 매 microservice 가 sync coupling — 매 worst of both.
Chatty service: 매 N+1 inter-service call.
Wrong timeout: 매 too short = false fail / too long = bad UX.
Shared database: 매 service 가 같은 DB → 매 coupling.
No circuit breaker: 매 cascading failure.
Synchronous chain: 매 5 service hop = 매 latency 합.
Decision-making
Analysis paralysis: 매 fear-driven indecision.
Forgotten decision: 매 email-only / 매 ADR 없음.
Premature optimization: 매 evidence X 의 optimize.
Cargo cult: 매 "Netflix 가 이렇게" 의 무비판 모방.
Code structure
Big ball of mud: 매 boundary X.
God object: 매 single class 의 모든 logic.
Anaemic model: 매 entity 가 data 만 (case-by-case).
Spaghetti: 매 control flow tangled.
Lava flow: 매 dead code + commented-out.
Microservice 특화
Nano-service: 매 너무 작 — 매 communication 의 logic 의 dominate.
Entity service: 매 1 entity = 1 service (vs business capability).
Sync everywhere: 매 async 의 부재.
No bounded context: 매 model 의 leak.
Versioning chaos: 매 breaking change 의 coordination X.
Data
Data in flight: 매 in-memory 의 single source of truth.
Eventual consistency 의 ignore: 매 user 의 see stale.
Cache stampede: 매 expire 시 동시 fetch.
Read-modify-write race: 매 lost update.
Sequence problem
매 anti-pattern 의 fix 가 매 다른 anti-pattern 의 generate.
매 distributed monolith 의 fix → 매 chatty / 매 sync chain.
매 god object 의 split → 매 nano-service.
→ 매 trade-off awareness 의 핵심.
매 detect 방법
Architecture test: dependency-cruiser, ArchUnit.
Dependency graph: 매 cycle / 매 hub.
Latency analysis: 매 hop count.
Code metric: 매 cyclomatic / 매 LOC / 매 fan-out.
Tracing: 매 distributed trace 의 path.
Postmortem catalog: 매 incident pattern.
매 modern catalog
Mark Richards 의 "Software Architecture: The Hard Parts".