Scalability Roadmap — Từ Vertical Scaling đến Microservices
Nguồn tham khảo: Udemy — Developer to Architect Series
Mục tiêu bài viết
- Hiểu Scalability là gì và tại sao cần thiết.
- Nắm roadmap toàn bộ module từ khái niệm cơ bản đến Microservices.
- Biết các kỹ thuật chính: Replication, Caching, Async Processing, Partitioning, Load Balancing, SAGA, NoSQL.
1) Scalability là gì?
“Làm sao để hệ thống vẫn hoạt động tốt khi số lượng người dùng và lưu lượng tăng gấp nhiều lần?”
Increasing Traffic
│
▼
System Still Performs Well
│
▼
Scalability
Ví dụ thực tế:
100 Users
│
▼
1,000 Users
│
▼
10,000 Users
│
▼
1,000,000 Users
↓
System still works
2) Roadmap của Module
Scalability
│
┌──────────────┬──────────────┬──────────────┬──────────────┐
▼ ▼ ▼ ▼
Vertical Horizontal Load Balancing Microservices
Scaling Scaling
│
┌──────────┼──────────┬──────────┬──────────┐
▼ ▼ ▼ ▼
Replication Caching Async Processing Partitioning
3) Vertical Scaling (Scale Up)
Ý tưởng: Nâng cấp phần cứng của một server.
Before After
┌────────────┐ ┌────────────┐
│ 1 CPU │ Upgrade │ 16 CPU │
│ 4 GB RAM │ ─────────► │ 64 GB RAM │
└────────────┘ └────────────┘
| Ưu điểm | Nhược điểm |
|---|---|
| Đơn giản, không đổi kiến trúc | Có giới hạn phần cứng |
| Dễ triển khai | Chi phí cao |
| Một server hỏng → toàn hệ thống ảnh hưởng |
4) Horizontal Scaling (Scale Out)
Ý tưởng: Thêm nhiều server thay vì nâng cấp một server.
Load Balancer
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Server 1 Server 2 Server 3
Thay vì 1 Very Big Server → dùng N Small Servers.
| Ưu điểm |
|---|
| Mở rộng gần như không giới hạn |
| High Availability |
| Fault Tolerance |
Đây là trọng tâm của module.
5) Các kỹ thuật Horizontal Scaling
5.1 Replication
Tạo nhiều bản sao của service hoặc database.
Load Balancer
│
┌──────────┼──────────┐
▼ ▼ ▼
API #1 API #2 API #3
Lợi ích: chia tải, tăng khả năng chịu lỗi.
5.2 Caching
Giảm truy cập trực tiếp vào Database.
Client
│
▼
Cache ──Hit──► Return Data
│
Miss
│
▼
Database
Lợi ích: giảm latency, giảm tải DB, tăng throughput.
5.3 Asynchronous Processing
Không xử lý mọi việc ngay lập tức — đưa vào Queue để xử lý nền.
User → API → Message Queue → Worker → Database
Ví dụ use case: gửi email, xử lý ảnh, sinh báo cáo.
5.4 Partitioning (Sharding)
Chia dữ liệu thành nhiều phần theo key.
Customers A–F → Database 1
Customers G–M → Database 2
Customers N–Z → Database 3
Lợi ích: không còn một Database quá tải, dễ mở rộng theo dữ liệu.
6) Load Balancing
Khi đã có nhiều server, cần phân phối request hợp lý.
Users
│
▼
Load Balancer
/ | \
▼ ▼ ▼
App1 App2 App3
Nếu không có Load Balancer, toàn bộ request dồn vào một server trong khi các server khác idle.
7) Discovery Service
Trong Microservices, số lượng service thay đổi liên tục — IP không cố định.
Service A
│
▼
Discovery Service
│
▼
Find & Connect to Service B
Lợi ích: service tự tìm nhau, hỗ trợ Auto Scaling, không cần cấu hình IP tĩnh.
8) DNS trong Global Load Balancing
Ở mức toàn cầu, DNS điều hướng người dùng đến Data Center gần nhất.
User (Asia) ──► DNS ──► Asia Data Center
User (Europe) ──► DNS ──► Europe Data Center
Lợi ích: giảm độ trễ, phân phối lưu lượng theo khu vực.
9) Microservices
Kiến trúc cho phép từng thành phần scale độc lập.
System
┌────────┬────────┬────────┐
▼ ▼ ▼
User Product Payment
Service Service Service
Mỗi service: deploy độc lập, scale độc lập, phát triển độc lập.
Payment Service cần thêm capacity
↓
Scale only Payment Service
(không cần scale toàn hệ thống)
10) Thách thức: Distributed Transaction
Một giao dịch có thể span nhiều service.
Create Order
│
▼
Order Service → Payment Service → Inventory Service
Nếu Payment Success nhưng Inventory Failed → dữ liệu không nhất quán.
11) SAGA Pattern
Giải quyết giao dịch phân tán bằng Compensating Transactions.
Step 1: Create Order
│
▼
Step 2: Charge Payment
│
▼
Step 3: Reserve Inventory ── Failure
│
▼
Rollback Payment
Cancel Order
Mỗi bước có một hành động bù (compensation) để đưa hệ thống về trạng thái hợp lệ thay vì rollback toàn bộ như ACID.
12) NoSQL Database
NoSQL được thiết kế để mở rộng theo chiều ngang dễ dàng.
Data
│
▼
NoSQL Cluster
┌────────┬────────┬────────┐
▼ ▼ ▼
Node1 Node2 Node3
Ưu điểm: Horizontal Scaling, Partitioning tự nhiên, High Availability, hiệu quả với dữ liệu lớn.
13) Bức tranh tổng thể
Scalability
│
┌───────────────────────┼────────────────────────┐
▼ ▼ ▼
Vertical Scaling Horizontal Scaling Load Balancing
│
┌─────────────┬─────────────┬─────────────┬─────────────┐
▼ ▼ ▼ ▼
Replication Caching Async Queue Partitioning
│
▼
Microservices
│
┌───────────────────┼────────────────────┐
▼ ▼ ▼
Service Discovery SAGA Pattern NoSQL Database
Tóm tắt
| Kỹ thuật | Mục tiêu |
|---|---|
| Vertical Scaling | Nâng cấp tài nguyên của một máy chủ |
| Horizontal Scaling | Thêm nhiều máy chủ để tăng năng lực |
| Replication | Nhân bản để chia tải và chịu lỗi |
| Caching | Giảm truy cập DB, giảm độ trễ |
| Async Processing | Dùng queue xử lý tác vụ nền |
| Partitioning (Sharding) | Chia dữ liệu thành nhiều phần |
| Load Balancing | Phân phối request đến nhiều server |
| Service Discovery | Microservice tự tìm và kết nối nhau |
| Microservices | Deploy và scale từng thành phần độc lập |
| SAGA Pattern | Quản lý giao dịch phân tán bằng compensating transactions |
| NoSQL | Horizontal scaling và xử lý dữ liệu lớn |
Một Software Architect không chỉ biết cách thêm server. Họ cần kết hợp nhiều kỹ thuật như Replication, Caching, Partitioning, Load Balancing, Microservices, SAGA và NoSQL để xây dựng một hệ thống có thể phục vụ hàng triệu người dùng mà vẫn ổn định, nhất quán và dễ mở rộng.