Scalability (Khả năng mở rộng)
Khả năng hệ thống “lớn lên” cùng số lượng người dùng/dữ liệu tăng mà không suy giảm hiệu năng. Có hai hướng mở rộng.
Vertical vs Horizontal Scaling
Ví dụ quán phở đông khách:
| Vertical Scaling (chiều dọc) | Horizontal Scaling (chiều ngang) | |
|---|---|---|
| Quán phở | Thuê đầu bếp giỏi hơn, nồi to hơn | Mở thêm chi nhánh, thêm đầu bếp song song |
| Hệ thống | Nâng cấp máy chủ hiện có (thêm CPU/RAM) | Thêm nhiều máy chủ vào hệ thống |
| Giới hạn | Có trần cứng (một máy chỉ mạnh đến mức nào đó) | Linh hoạt hơn, gần như không trần |
| Chịu lỗi | Máy hỏng = sập | Một máy hỏng, máy khác vẫn phục vụ |
Vì sao ưu tiên mở rộng ngang
Thực tế thường ưu tiên Horizontal Scaling vì tăng khả năng chịu tải và dự phòng lỗi tốt hơn. Tuy nhiên cần cơ chế Load Balancer để phân phối công việc giữa các máy. Scalability tốt cho phép hệ thống phình to khi cần và thu nhỏ khi nhu cầu giảm một cách trơn tru.
Liên quan
- Load Balancer - điều kiện để mở rộng ngang
- Throughput - thêm máy để tăng sức tải
- Sharding - mở rộng ngang cho tầng dữ liệu
- Availability - nhiều máy → dự phòng cao hơn