To Scale In Or Scale Out? Here's How We Scale at Dream11

Bài tóm tắt Dream11 2021 3. Quy mô lớn Độ khó: Trung bình

Dream11 · 2021 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Bối cảnh

  • Fantasy sports, hơn 100 triệu user, hơn 5,5 triệu đồng thời, hơn 100 triệu request/phút ở edge, hơn 30.000 tài nguyên compute lúc cao điểm IPL, hơn 100 microservice.
  • Traffic dạng "sóng thần" quanh giờ trận (tung đồng xu, công bố đội hình, sự kiện trong trận), khó dự báo theo tăng trưởng năm.
  • Theo Dream11, autoscaling không kịp: cấp máy chậm, spot khan đúng giờ cao điểm, step scaling có giới hạn, cân lại AZ tốn thời gian; load balancer phải shard theo throughput và pre-warm; API của cloud bị giới hạn tốc độ.

Thay đổi chính

  • Dự báo concurrency theo giờ bằng XGBoost (hơn 200 biến, xếp hạng mức độ "hot" của trận, hàm loss không chấp nhận dự báo thiếu).
  • Game Day hiệu năng (Torque) theo mức dự báo: tìm năng lực từng service, điểm bão hoà, hiệu ứng dây chuyền, giới hạn compute/network/API.
  • Giảm thời gian cấp máy: AMI dựng sẵn, nhiều loại instance qua nhiều AZ, spot theo capacity-optimized, có đường chuyển on-demand, DNS có trọng số cho các shard ELB.
  • Scaler: scale chủ động trước, trong, sau trận theo "bậc" concurrency đã kiểm chứng.
  • Kết quả theo bài: thao tác scale từ hàng giờ xuống vài phút, chi phí hạ tầng hằng tháng giảm 50%.

Bài học cho SWE

Liên quan