Template: Tradeoff Matrix
Lesson 4 → AdBid
Use this template to document your architecture decisions for AdBid.
Instructions
- For each important architecture decision, complete one section of this matrix
- You don't need to fill in EVERY cell — fill in what applies to your decision
- The goal is to demonstrate you thought about alternatives, not that you memorized options
- Minimum 3 decisions, maximum however many you actually need
Decision 1: [Decision name]
Example: "Database for auction records"
Context
What problem are you solving? What constraints do you have?
Options considered
| Option | Brief description | Main strength | Main weakness |
|---|---|---|---|
| Option A: | |||
| Option B: | |||
| Option C: |
Chosen decision
We chose: ______________________
Justification for AdBid
Why this option given the specific context (team, budget, scale):
Accepted tradeoffs
| We gain | We sacrifice |
|---|---|
Additional notes
Are there conditions under which this decision would change? When to revisit?
Decision 2: [Decision name]
Context
Options considered
| Option | Brief description | Main strength | Main weakness |
|---|---|---|---|
| Option A: | |||
| Option B: | |||
| Option C: |
Chosen decision
We chose: ______________________
Justification for AdBid
Accepted tradeoffs
| We gain | We sacrifice |
|---|---|
Additional notes
Decision 3: [Decision name]
Context
Options considered
| Option | Brief description | Main strength | Main weakness |
|---|---|---|---|
| Option A: | |||
| Option B: |
Chosen decision
We chose: ______________________
Justification for AdBid
Accepted tradeoffs
| We gain | We sacrifice |
|---|---|
Decision 4 (optional): [Decision name]
Context
Options considered
| Option | Brief description | Main strength | Main weakness |
|---|---|---|---|
| Option A: | |||
| Option B: |
Chosen decision
We chose: ______________________
Justification for AdBid
Accepted tradeoffs
| We gain | We sacrifice |
|---|---|
Tradeoffs Summary
A single-view table of your main decisions:
| Decision | We chose | Instead of | We gain | We sacrifice |
|---|---|---|---|---|
Anti-Golden-Hammer Reflection
What technology or pattern was tempting to use but you decided not to?
Why was it not appropriate for AdBid's context?
How did you validate that your decisions are appropriate for this specific context?
Common Decision Examples for AdBid
(These are inspiration — you're not required to make exactly these decisions)
Storage decisions:
- "PostgreSQL or Redis for active auction state?"
- "How do we guarantee billing records aren't lost?"
- "One DB or multiple for different data types?"
Communication decisions:
- "How do we notify advertisers in < 80ms?"
- "Synchronous or asynchronous for auction registration?"
- "How do we handle the 100ms timeout from the client's perspective?"
Scalability decisions:
- "Do we design for 10M or 200M auctions/month from the start?"
- "Stateless from the beginning or can we simplify?"
- "Read replicas from the MVP or when we need them?"
Availability decisions:
- "What level of redundancy do we need with a 99.5% SLA?"
- "What do we do if the DB is down?"