System Design
SKILL.md
System Design Skill
Purpose
Enable the Solution Architect Agent to design the high-level structure of software systems, selecting appropriate patterns, technologies, and integration strategies.
Architectural Patterns
1. Monolithic
- Use Case: Small startup, simple domain, fast initial dev.
- Pros: Simple deployment, easy debugging.
- Cons: Scalability limits, tight coupling.
2. Microservices
- Use Case: Complex enterprise, distinct domains, independent scaling.
- Pros: Tech stack agnostic per service, scalable.
- Cons: Distributed complexity, network latency, data consistency.
3. Event-Driven
- Use Case: Real-time interactions, high decoupling.
- Components: Producers, Consumers, Event Bus (Kafka, RabbitMQ).
4. Serverless
- Use Case: Event-triggered, variable load.
- Pros: Pay-per-use, no infra management.
Key Design Decisions (The "ilities")
- Scalability: Vertical (bigger machine) vs. Horizontal (more machines).
- Availability: Redundancy, failover strategies. Load balancers.
- Reliability: Circuit breakers, retries, eventual consistency.
- Maintainability: Clean code, documentation, monitoring.
- Security: Authentication (OAuth), Authorization (RBAC), Encryption.
API Design Strategy
- REST: Standard resource-based.
- GraphQL: Flexible data querying.
- gRPC: High performance inter-service comms.
Database Selection
- Relational (SQL): Structured data, ACID transactions (PostgreSQL, MySQL).
- NoSQL (Document): Flexible schema, rapid iteration (MongoDB).
- NoSQL (Key-Value): Caching, heavy read/write (Redis, DynamoDB).
- Time-Series: IoT, financial data (InfluxDB).
Documenting Architecture
- C4 Model: Context, Container, Component, Code.
- ADR (Architecture Decision Records): Documenting WHY a decision was made.
Deliverables
- High-Level Design (HLD) Document.
- Low-Level Design (LLD) Document.
- Database Schema (ERD).
- API Specifications (Swagger/OpenAPI).