🟢 Horizontal Scaling (Scale Out)
Thêm nhiều server cùng loại. Load balancer chia tải. Unlimited scaling.
🔵 Vertical Scaling (Scale Up)
Nâng cấp server hiện tại (thêm CPU, RAM, SSD). Đơn giản nhưng có giới hạn.
1. Vertical Scaling (Scale Up)
Vertical Scaling:
Trước: Sau:
┌──────────┐ ┌──────────────┐
│ 2 CPU │ │ 16 CPU │
│ 4GB RAM │ →→→ │ 64GB RAM │
│ 100GB HDD│ │ 1TB SSD │
└──────────┘ └──────────────┘
$50/tháng $500/tháng
→ Cùng 1 server, nâng cấp hardware
→ Đơn giản, không cần thay đổi code
Ưu/nhược điểm:
- ✅ Đơn giản — không thay đổi architecture
- ✅ Không lo data consistency
- ✅ Latency thấp (mọi thứ cùng máy)
- ❌ Giới hạn hardware (max CPU/RAM có hạn)
- ❌ Single point of failure
- ❌ Downtime khi nâng cấp
- ❌ Đắt tiền ở high-end
2. Horizontal Scaling (Scale Out)
Horizontal Scaling:
Load Balancer
│
┌─────────┼─────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Server 1 │ │ Server 2 │ │ Server 3 │
│ 2CPU/4GB │ │ 2CPU/4GB │ │ 2CPU/4GB │
└──────────┘ └──────────┘ └──────────┘
$50/th $50/th $50/th
→ Thêm machines, chia tải
→ Cần load balancer, stateless app
→ Tổng: $150/th nhưng 3x capacity + redundancy
Ưu/nhược điểm:
- ✅ Unlimited scaling (thêm bao nhiêu cũng được)
- ✅ High availability (1 server die → vẫn OK)
- ✅ Cost-effective ở scale lớn
- ✅ No downtime khi thêm/bớt server
- ❌ Phức tạp hơn (load balancer, session management)
- ❌ Data consistency challenges
- ❌ Cần stateless design
3. Bảng So Sánh
| Tiêu chí | 🟢 Horizontal | 🔵 Vertical |
|---|---|---|
| Cách thức | Thêm machines | Nâng cấp machine |
| Giới hạn | Gần như unlimited | Giới hạn bởi hardware |
| Availability | Cao (redundancy) | Thấp (SPOF) |
| Complexity | Cao | Thấp |
| Cost | Tuyến tính (commodity HW) | Lũy thừa (high-end = đắt) |
| Downtime | Zero downtime | Cần restart |
| Data | Distributed, eventual consistency | Single source, strong consistency |
| Ví dụ | Netflix, Google, AWS | Database server, legacy apps |
4. Khi Nào Chọn?
Vertical trước: Giai đoạn đầu, app nhỏ, database server. Đơn giản,
nhanh.
Horizontal khi: Traffic lớn, cần HA, cloud-native, stateless apps.
Thực tế: Hầu hết hệ thống dùng cả hai. VD: Horizontal cho web
servers + Vertical cho database.
💡 Cloud Auto-Scaling: AWS Auto Scaling Group, K8s HPA — tự động thêm/bớt instances (horizontal) dựa trên CPU/memory usage. Kết hợp với vertical: chọn instance type phù hợp (t3.micro → c5.2xlarge).