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
- Monolithic
-
Use Case: Small startup, simple domain, fast initial dev.
-
Pros: Simple deployment, easy debugging.
-
Cons: Scalability limits, tight coupling.
- Microservices
-
Use Case: Complex enterprise, distinct domains, independent scaling.
-
Pros: Tech stack agnostic per service, scalable.
-
Cons: Distributed complexity, network latency, data consistency.
- Event-Driven
-
Use Case: Real-time interactions, high decoupling.
-
Components: Producers, Consumers, Event Bus (Kafka, RabbitMQ).
- 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).