🧯 App chịu tải: load balancer, stateless và rate limiting

By Better Wise · Generated by Everwise

Hiểu vì sao app sập khi đông người dùng và biết các bước cơ bản để sản phẩm chịu tải tốt hơn mà không cần tối ưu quá sớm.

Level
Beginner
Goal
Fundamentals
Language
Vietnamese
Focus
scale ngang và stateless load balancer connection pool rate limiting và queue
Prior knowledge
Biết viết API đơn giản, Hiểu khái niệm server và database
Practice
Worked examples
Time
~3h
Voice
một SRE kể lại các đợt traffic tăng vọt, dạy bằng con số và sơ đồ, luôn chỉ ra 'nút thắt tiếp theo' thay vì tối ưu mọi thứ cùng lúc
Not covered
autoscaling nâng cao, thiết kế hệ phân tán chuyên sâu, tuning kernel

Bạn sẽ đạt được gì

Sau khóa này, bạn sẽ có một bộ phản xạ nghề nghiệp để nhìn vào một hệ thống đang có vấn đề và biết hỏi đúng câu: nút thắt đang nằm ở đâu?

Cụ thể, bạn sẽ có thể:

  • Giải thích được vì sao app sập khi đông người dùng, phân biệt được triệu chứng (chậm, lỗi 5xx, timeout) với nguyên nhân gốc (CPU cạn, connection cạn, hàng đợi tràn).
  • Chọn được giữa scale dọc và scale ngang cho một tình huống cụ thể, và nói rõ đánh đổi của từng hướng.
  • Viết lại một server thành stateless và quyết định session nên lưu ở đâu.
  • Đọc được sơ đồ load balancer, hiểu health check làm gì và vì sao một instance "chết mềm" lại nguy hiểm hơn instance tắt hẳn.
  • Nhận ra dấu hiệu cạn connection pool database và biết vì sao thêm app server đôi khi làm mọi thứ tệ hơn.
  • Đặt rate limiting đúng chỗ để chặn tải xấu trước khi nó vào hệ thống.
  • Đẩy tác vụ nặng ra background bằng hàng đợi thay vì bắt người dùng chờ.
  • Đọc các con số tải cơ bản: RPS, latency, p95, error rate, và biết con số nào đang kể câu chuyện gì.

Điểm quan trọng: bạn sẽ không học cách tối ưu mọi thứ cùng lúc. Bạn sẽ học cách tìm đúng một nút thắt tiếp theo.

Khóa này dành cho ai

Khóa ở mức beginner, dành cho người đã chạm vào hệ thống thật nhưng chưa từng phải chịu một đợt traffic tăng vọt.

Bạn cần có sẵn:

  • Biết viết một API đơn giản (nhận request, trả response).
  • Hiểu khái niệm server và database ở mức cơ bản.

Bạn không cần biết Kubernetes, không cần biết Terraform, không cần đã từng dựng load balancer. Nếu bạn là dev vừa viết xong API đầu tiên và bắt đầu tự hỏi "nếu mai có 10.000 người dùng thì sao?", đây là khóa dành cho bạn.

Lộ trình khóa học

Module 1: Vì sao app sập và cách scale

  • 1.1 Nút thắt cổ chai: vì sao app sập khi đông người dùng. Tách triệu chứng khỏi nguyên nhân, và học cách đọc một hệ thống đang đổ vỡ theo từng tầng.
  • 1.2 Scale dọc và scale ngang: chọn hướng nào. Hai hướng scale, chi phí và giới hạn của từng hướng, và lý do vì sao scale ngang không miễn phí.
  • 1.3 Server stateless và session lưu ở đâu. Vì sao server giữ state trong RAM là cái bẫy khi có nhiều instance, và các lựa chọn lưu session.
  • 1.4 Checkpoint: nền tảng scale và session. Kiểm tra lại nền tảng trước khi đi tiếp.

Module 2: Load balancer và connection pool

  • 2.1 Load balancer: chia tải và health check. Cách load balancer phân phối request, cách health check loại instance hỏng, và những chỗ nó không cứu được bạn.
  • 2.2 Connection pool database: vì sao cạn connection. Vì sao database là tầng dễ cạn nhất, và vì sao scale app server mà không scale pool lại phản tác dụng.
  • 2.3 Checkpoint: load balancer và database. Củng cố phần hạ tầng trước khi sang phần phòng thủ.

Module 3: Rate limiting, hàng đợi và đọc số tải

  • 3.1 Rate limiting: chặn tải xấu trước khi vào hệ thống. Đặt giới hạn ở đâu, giới hạn cái gì, và vì sao chặn sớm rẻ hơn chữa muộn.
  • 3.2 Hàng đợi cho tác vụ nặng: đẩy việc dài ra background. Tách việc dài khỏi đường request của người dùng, và cái giá phải trả khi làm vậy.
  • 3.3 Đọc con số tải cơ bản: RPS, latency, p95, error rate. Bốn con số, chúng nói gì, và vì sao trung bình latency thường nói dối.
  • 3.4 Checkpoint: phòng thủ và đọc số tải. Bài kiểm tra cuối, ghép toàn bộ mạch lại với nhau.

Khóa học vận hành thế nào

Tổng thời lượng khoảng 182 phút cho 11 bài, chia đều qua ba module. Mỗi bài ngắn, đọc trong một lần ngồi là xong.

Cách các bài được dựng:

  • Bài lý thuyết kèm ví dụ. Đây là phần lớn nội dung. Mỗi khái niệm đi kèm một tình huống thật: một đợt traffic tăng đột ngột, một dashboard đỏ, một quyết định phải đưa ra trong vài phút. Bạn sẽ thấy con số và sơ đồ, không chỉ định nghĩa.
  • Checkpoint quiz. Ba bài checkpoint ở cuối mỗi module để bạn tự kiểm tra trước khi đi tiếp. Làm sai thì quay lại đọc, không sao cả.
  • Không có lab hay project riêng. Ví dụ đã nằm ngay trong bài lý thuyết, nên bạn học bằng cách đọc và suy luận theo tình huống, không cần dựng hạ tầng.

Cách dùng khóa:

  • Đi tuyến tính nếu bạn mới. Các module xây lên nhau: bạn cần hiểu stateless trước khi hiểu vì sao load balancer cần health check, và cần hiểu connection pool trước khi hiểu vì sao rate limiting cứu database.
  • Nhảy cóc nếu bạn đã có nền. Nếu bạn đã biết scale dọc và scale ngang, đọc lướt 1.2 rồi vào thẳng 1.3. Nếu bạn đang đau đầu với connection pool ở công ty, bài 2.2 là chỗ nên đọc trước.
  • Đừng bỏ checkpoint. Chúng ngắn, nhưng chúng chỉ ra chỗ bạn tưởng đã hiểu mà thực ra chưa.

Một lời hẹn trước: sau khóa này, khi hệ thống chậm, bạn sẽ không còn mở dashboard rồi tắt bớt thứ gì đó cho yên tâm. Bạn sẽ hỏi nút thắt tiếp theo là gì.