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
- 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.
- Dọn trước khi deploy: gỡ EC2, launch template, ASG cũ còn dính vào green.
- 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.
- Ướ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.
- 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.
- 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.
- Hạ blue về 0 sau khi xong để không tốn tiền nuôi stack song song.
- 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
- Blue-green không phải chỉ "đổi con trỏ": còn làm ấm load balancer, kích thước green theo traffic sắp tới, và lưu đủ metadata để rollback muộn (Deploy và release an toàn).
- Khi nhiều automation cùng thao tác một hạ tầng, cần khoá hoặc cơ chế phối hợp giữa chúng (Tự động hoá vận hành và auto-remediation).
- Rollback chậm (phải dựng lại blue) là cái giá của việc tiết kiệm stack song song (Chi phí hạ tầng và build vs buy).
Liên quan
- Dream11 2021
- Monzo 2022 · Twitter 2023 (các bên cùng thao tác va nhau)
- Deploy và release an toàn · Tự động hoá vận hành và auto-remediation · Chi phí hạ tầng và build vs buy
Được nhắc tới trong
Chủ đề (3)
Công ty (1)
Bài tóm tắt (2)