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
- Traffic dồn theo sự kiện biết trước thì scale theo dự báo và lịch, không đợi autoscaler phản ứng (Tự động hoá vận hành và auto-remediation).
- Kiểm chứng năng lực bằng game day trước sự kiện, kể cả giới hạn của chính cloud provider.
- Scale theo bậc gắn với sự kiện vừa an toàn vừa rẻ (Chi phí hạ tầng và build vs buy).
Liên quan
Chi phí hạ tầng và build vs buyTự động hoá vận hành và auto-remediationKiểm thử độ tin cậy (chaos, fault injection, mô phỏng tất định)Load test và kiểm chứng capacity
Được nhắc tới trong
Chủ đề (4)
Công ty (1)
Bài tóm tắt (4)