# System Design

> Design scalable, reliable, and maintainable software architectures using patterns like Microservices, Event-driven, and Layered Architecture

- Skill: `danhvb/system-design` (Agent Skill)
- Install (CLI): `npx skillmds@latest add danhvb/system-design`
- Raw SKILL.md: https://api.skillmd.com/api/skills/danhvb/system-design/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: danhvb (https://skillmd.com/u/danhvb)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/danhvb/system-design

---


# 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).

