System Design
This skill assists in designing systems and evaluating architectural decisions.
Details
What This Skill Does
This skill assists in designing systems and evaluating architectural decisions. It guides users through requirements gathering, high-level design, deep dives into specific components, and considerations for scale and reliability. It's useful for software architects and senior engineers.
When to Use
Design a new software system. Evaluate architectural trade-offs. Create system design documents. Plan for scaling and reliability. Model data flow and API contracts. Choose appropriate storage solutions.
Key Features
Provides a structured system design framework. Covers requirements gathering and analysis. Helps design data models and API endpoints. Addresses caching and queue design. Analyzes trade-offs between design choices. Generates design documents with diagrams.
Manual Installation
System Design
Help design systems and evaluate architectural decisions.
Framework
1.
Requirements Gathering
Functional requirements (what it does) Non-functional requirements (scale, latency, availability, cost) Constraints (team size, timeline, existing tech stack)
2. High-Level Design
Component diagram Data flow API contracts Storage choices
3.
Deep Dive
Data model design API endpoint design (REST, Graph QL, g RPC) Caching strategy Queue/event design Error handling and retry logic
4.
Scale and Reliability
Load estimation Horizontal vs. vertical scaling Failover and redundancy Monitoring and alerting
5. Trade-off Analysis
Every decision has trade-offs. Make them explicit. Consider: complexity, cost, team familiarity, time to market, maintainability
Output
Produce clear, structured design documents with diagrams (ASCII or described), explicit assumptions, and trade-off analysis. Always identify what you'd revisit as the system grows. System Design