Deployment At Scale: Dream11's In-House Blue-Green Deployment Platform "OneClick"

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

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

Phần tiếp theo về nền tảng của Dream11 2021 (Scaler, mô hình dự đoán concurrency).

Bối cảnh

  • Traffic của Dream11 rất biến động (theo trận đấu) và deploy cả trong giờ cao điểm. Cần deploy thường xuyên mà ít lỗi và rollback được.
  • Chọn "seamless blue-green": stack mới (green) nhận traffic dần dần thay vì chuyển một lần.
  • Chuyển traffic ở tầng DNS (Route53 weighted record trỏ tới nhiều load balancer), không ở tầng load balancer. Lý do: quota AWS 1.000 EC2 mỗi load balancer; giờ cao điểm nhiều service vượt mức này nên phải "shard" qua nhiều load balancer từ trước.

Thay đổi chính: các bước của OneClick

  1. Chọn shard đủ điều kiện: phân loại load balancer thành Active (blue), Passive, Eligible (green) cùng tài nguyên gắn kèm; lưu JSON metadata lên S3 để dùng khi rollback.
  2. Dọn trước khi deploy: gỡ EC2, launch template, ASG cũ còn dính vào green.
  3. Làm ấm load balancer: tính LCU = max(LCU benchmark tối thiểu, LCU đang cấp ở blue, LCU đang dùng ở blue) để green chịu được traffic dồn ngay.
  4. Ước lượng tài nguyên bằng dự đoán concurrency (mô hình ML của Scaler) rồi gọi Terraform dựng green.
  5. Kiểm tra trước khi chuyển: health check; green không được nhỏ hơn blue; lấy khoá hạ tầng giữa các automation.
  6. Chuyển traffic từng bước: đẩy một phần nhỏ sang green, theo dõi lỗi phần cứng load balancer, lỗi ứng dụng, latency; trong ngưỡng thì tăng tiếp tới 100%. Có bất thường thì dừng và hỏi người dùng rollback tự động hay tay.
  7. Hạ blue về 0 sau khi xong để không tốn tiền nuôi stack song song.
  8. Rollback muộn (vài giờ, vài ngày sau): đọc metadata trên S3, dựng lại blue, kiểm tra sức khoẻ, xin xác nhận rồi chuyển 100% trong một bước.

Vì sao

  • Khoá giữa các automation: hạ tầng càng lớn càng có nhiều automation cùng sửa nó (Scaler tăng giảm máy, OneClick deploy). Không có khoá thì chúng giẫm lên nhau; OneClick giữ khoá trên hạ tầng của service trong lúc chuyển traffic rồi báo cho các bên khác.
  • Hạ blue về 0 và dựng lại khi cần là cách Dream11 bỏ nhược điểm chi phí lớn nhất của blue-green.

Bài học cho SWE

Liên quan