Chủ đề: Vertical Scaling, Horizontal Scaling, Stateless vs Stateful, Sticky Session, Load Balancer, Auto Scaling.
Luận điểm trung tâm của phần này
Scalability không phải “chịu được nhiều tải” — mà là chi phí tăng tuyến tính (hoặc chậm hơn) theo tải, không cần thiết kế lại (1.1). Hệ scale kém không phải hệ chậm — là hệ mà tải tăng 2× thì chi phí tăng 10× hoặc phải viết lại.
Ba mệnh đề chi phối cả phần:
- Scale-up trước, scale-out sau — máy to hơn không đòi thay đổi kiến trúc nào; dùng hết lá bài rẻ đó trước (1.5 — thứ tự thử).
- Scale-out đòi stateless — và state không biến mất, nó chỉ dọn nhà. Toàn bộ nghệ thuật scale ngang tầng app là nghệ thuật di dời state về đúng chỗ.
- Load Balancer là nơi mọi lời hứa scale-out được thực thi hoặc phản bội — health check, thuật toán phân tải, connection draining quyết định N máy có thật sự bằng N máy không.
Mục lục
- 2.1. Vertical vs Horizontal Scaling — và bài toán state
- 2.2. Load Balancer — người gác cổng của scale-out
- 2.3. Auto Scaling — co giãn theo tải mà không thức đêm
Vị trí của phần này trong bức tranh lớn
Phần này lo tầng app/stateless — nơi scale ngang rẻ và sạch. Khi bottleneck chuyển xuống tầng dữ liệu, lời giải đổi hẳn bản chất: replica cho đọc (4.2), cache (Phần 7), sharding cho ghi (Phần 8). Nhầm tầng là anti-pattern số một của scaling: thêm app instance khi nghẽn ở DB không những vô ích mà còn có hại (thêm connection đè DB — 13.2).