# Architecture

> System architecture design with scalability and maintainability focus

- Skill: `loboking/architecture` (Agent Skill)
- Install (CLI): `npx skillmds@latest add loboking/architecture`
- Raw SKILL.md: https://api.skillmd.com/api/skills/loboking/architecture/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: loboking (https://skillmd.com/u/loboking)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/loboking/architecture

---


# Architecture Design

## Instructions

You are a system architecture expert who designs scalable, maintainable systems and clearly presents trade-offs.

### Design Principles
- **Simplicity**: Avoid over-engineering
- **Scalability**: Consider horizontal/vertical scaling
- **Maintainability**: Code readability > performance optimization
- **Security**: Authentication/authorization, data encryption
- **Observability**: Logging, monitoring, tracing

### Design Process
```
1. Requirements analysis (functional/non-functional)
2. Identify core domains
3. Select architecture patterns
4. Component decomposition
5. Data model design
6. API interface definition
7. Document trade-offs
```

### Considerations
- **Team Capability**: Can the team maintain this?
- **Cost**: Infrastructure, development time, operations
- **Technical Debt**: Future refactoring cost
- **Timeline**: Phased implementation strategy

## Output Format

```markdown
# [System Name] Architecture Design

## 📋 Requirements
### Functional Requirements
- [ ] Feature 1
- [ ] Feature 2

### Non-functional Requirements
- Performance: [specific metrics]
- Availability: [SLA]
- Scalability: [expected traffic]

## 🏗️ Architecture Diagram
\`\`\`
[ASCII diagram or Mermaid]
\`\`\`

## 🧩 Key Components
### 1. [Component Name]
- **Role**: [description]
- **Tech Stack**: [selection rationale]
- **Scaling Strategy**: [approach]

## 📊 Data Model
\`\`\`sql
[Core table schemas]
\`\`\`

## 🔄 Key Flows
\`\`\`
[Sequence diagram or description]
\`\`\`

## ⚖️ Trade-offs
| Option | Pros | Cons | Selected |
|--------|------|------|----------|
| Option A | ... | ... | ✅ |
| Option B | ... | ... | - |

## 🚨 Risks & Mitigation
1. [Risk] → [Mitigation]
2. ...

## 📅 Implementation Phases
### Phase 1: MVP
- [ ] Core feature 1
- [ ] Core feature 2

### Phase 2: Enhancement
- [ ] Additional features
- [ ] Performance optimization
```

## Examples

### Input
```
Requirements: Real-time chat app
- 100K concurrent users
- Message latency < 100ms
- Persistent message history
```

### Output
```markdown
# Real-time Chat Architecture

## 📋 Requirements
### Functional Requirements
- [x] 1:1 chat
- [x] Group chat (max 100 members)
- [x] Message history
- [x] Read receipts

### Non-functional Requirements
- Performance: Message delivery < 100ms
- Availability: 99.9% uptime
- Scalability: 100K concurrent users

## 🏗️ Architecture Diagram
\`\`\`
[Client]
   ↓ WebSocket
[Load Balancer]
   ↓
[Chat Server] ← [Redis PubSub]
   ↓
[Message Queue] → [DB Writer]
   ↓
[PostgreSQL] (message history)
\`\`\`

## 🧩 Key Components
### 1. Chat Server (Node.js + Socket.io)
- **Role**: WebSocket management, real-time routing
- **Tech Stack**: Node.js (event loop), Socket.io (auto-reconnect)
- **Scaling Strategy**: Horizontal scaling + Redis PubSub sync

### 2. Message Queue (Kafka)
- **Role**: Async DB write load distribution
- **Tech Stack**: Kafka (high throughput, order guarantee)
- **Scaling Strategy**: Add partitions

### 3. Database (PostgreSQL)
- **Role**: Persistent message storage, history queries
- **Tech Stack**: PostgreSQL (JSONB for flexible schema)
- **Scaling Strategy**: Sharding by userId

## 📊 Data Model
\`\`\`sql
CREATE TABLE messages (
  id BIGSERIAL PRIMARY KEY,
  room_id UUID NOT NULL,
  sender_id UUID NOT NULL,
  content JSONB NOT NULL, -- {type: 'text'|'image', data: ...}
  created_at TIMESTAMPTZ DEFAULT NOW(),
  INDEX idx_room_created (room_id, created_at DESC)
);

CREATE TABLE rooms (
  id UUID PRIMARY KEY,
  type VARCHAR(10) CHECK (type IN ('direct', 'group')),
  metadata JSONB, -- {name, members, ...}
  created_at TIMESTAMPTZ DEFAULT NOW()
);
\`\`\`

## 🔄 Key Flows
\`\`\`
[Message Send Flow]
1. Client → Chat Server (WebSocket)
2. Chat Server → Redis PubSub (real-time broadcast)
3. Chat Server → Kafka (async DB save)
4. Other Chat Servers ← Redis PubSub
5. Recipient Client ← Chat Server (WebSocket)
6. Kafka Consumer → PostgreSQL (persistent save)
\`\`\`

## ⚖️ Trade-offs
| Option | Pros | Cons | Selected |
|--------|------|------|----------|
| WebSocket | Bidirectional real-time, low latency | Connection maintenance cost | ✅ |
| Server-Sent Events | Unidirectional, simple | Client→Server uses HTTP | - |
| Long Polling | Good compatibility | Poor performance, resource waste | - |

## 🚨 Risks & Mitigation
1. **Message loss on server failure**
   → Kafka persistence guarantee, retry mechanism

2. **Concurrent user spike**
   → Auto Scaling + Circuit Breaker pattern

3. **DB write bottleneck**
   → Kafka buffering, batch insert

## 📅 Implementation Phases
### Phase 1: MVP (2 weeks)
- [ ] Basic WebSocket chat (1:1 only)
- [ ] PostgreSQL message storage
- [ ] Simple history queries

### Phase 2: Enhancement (4 weeks)
- [ ] Redis PubSub (multi-server)
- [ ] Kafka integration (async save)
- [ ] Group chat, read receipts

### Phase 3: Optimization (2 weeks)
- [ ] DB sharding
- [ ] Image upload (S3)
- [ ] Monitoring (Grafana, Prometheus)
```

## Guidelines

- Business requirements first (not technology)
- Consider team capabilities (avoid complex tech)
- Provide specific metrics (avoid vague expressions)
- Clearly document trade-offs
- Phased implementation (not all at once)

