Systems Design Canvas
An open-source framework for visualizing and analyzing complex systems design decisions.
Purpose
To help teams collaboratively reason about system design by mapping out assumptions, tradeoffs, and constraints.
Use this canvas during:
- Architecture reviews
- Incident retrospectives
- System migrations or redesigns
Canvas Sections
1. Goals & Guarantees
What does the system exist to do? What guarantees must it uphold (availability, latency, durability)?
2. Users & Interfaces
Who interacts with it? (humans, services) What are the expectations from each interface?
3. Dependencies
What does this system rely on (APIs, infra, external vendors)? What are their failure modes?
4. Data Flow
Where is data created, transformed, stored, or lost? What assumptions are made about consistency and freshness?
5. Failure Handling
How does it degrade under load or failure? What are the fallback or retry paths?
6. Scaling Factors
What breaks first as usage grows? Where are the vertical and horizontal bottlenecks?
7. Security & Trust
Who can do what, and how is it verified? What’s the blast radius of a compromise?
8. Observability
What metrics, logs, and traces exist? Can you explain what’s happening under stress?
9. Tradeoffs Made
What was optimized for? What was intentionally left out? What risks are knowingly accepted?
10. Constraints & Context
Time, team, tech, politics. What shaped this design beyond technical factors?
Usage Tips
- Keep it lightweight, visual, and collaborative.
- Revisit after incidents or major changes.
- Use it to onboard new team members or vendors.
This canvas is not a checklist. It’s a conversation scaffold.