Automated Infrastructure Cost Optimization at Scale with AWS EC2 Reserved Instances
Bài tóm tắt Quora 2018 3. Quy mô lớn Độ khó: Trung bình
Quora · 2018 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Quora chạy cả service online và tác vụ offline trên EC2; web server dùng autoscaling kết hợp on-demand và spot.
- Để giảm giá on-demand, Quora mua nhiều Reserved Instance (RI), chủ yếu loại convertible (giảm ít hơn standard nhưng đổi được sang loại máy khác), vì họ liên tục chuyển sang instance type tốt hơn.
- Phải đổi RI thường xuyên cho khớp mức dùng thật, nếu không thì hoặc trả giá on-demand, hoặc trả tiền RI không dùng. Trước làm tay; khi số loại instance tăng thì quá phức tạp để người làm.
Thay đổi chính
- Tính phân bổ tối ưu: không lấy mức dùng tức thời (nhiều nhóm máy lên xuống trong ngày) mà dùng mức dùng hiện tại và gần đây theo instance family (AWS tính RI theo normalization factor). Định nghĩa ECD (effective convertible discount) = mức giảm thực khi gán RI cho một family, có tính tỉ lệ sử dụng; gán RI theo ECD giảm dần cho tới hết giá trị RI. Ví dụ mức giảm khác nhau: x1 khoảng 66%, g2 khoảng 45% (RI convertible 3 năm trả trước).
- Giới hạn của API exchange: không đổi nhiều-nhiều; hầu hết lần đổi phải trả thêm tiền; gộp RI khác hạn thì lấy hạn xa nhất nên có thể làm giảm độ phủ; giá trị còn lại của RI do AWS cập nhật định kỳ nên không mô phỏng offline được; có độ trễ và không idempotent.
- t2.nano làm "tiền trung gian": đổi RI thừa sang t2.nano trước, rồi từ t2.nano sang loại đích; chi phí mỗi lần đổi không quá giá một RI t2.nano. Tìm số t2.nano tối ưu bằng binary search gọi API báo giá; tách RI thành các phần 1, 2, 4, 8… (giống subset sum, O(log n) phần) để chọn được mọi số lượng.
- Thiết kế: cron đọc mức dùng EC2 vào Graphite; tiến trình optimizer đọc Graphite, chạy thuật toán, gọi AWS; trạng thái lưu Redis. Nhóm RI theo ngày hết hạn và đổi trong từng nhóm. Idempotency: lưu trước danh sách ID RI sẽ bị ảnh hưởng, mỗi bước kiểm tra chúng đã biến mất chưa rồi mới chạy, tức at-most-once; ghi log mọi lời gọi API để người dừng và xem lại khi có lỗi.
Vì sao
- Theo Quora: số loại instance tăng làm việc đổi tay không còn khả thi; tự động hoá thì vừa tiết kiệm tiền vừa trả thời gian cho kỹ sư.
Kết quả (theo Quora, 2018)
- Optimizer chạy hằng ngày; chênh trung bình dưới 0,6% so với phân bổ lý tưởng.
- Báo thêm nên mua bao nhiêu RI để lập kế hoạch dài hạn.
- Bỏ được khoảng 6 giờ/tuần việc vận hành của team hạ tầng.
Bài học cho SWE
- Chiết khấu cam kết chỉ có giá trị khi khớp mức dùng; giữ khớp là việc lặp lại, đáng tự động hoá (Chi phí hạ tầng và build vs buy).
- Tự động hoá thao tác tốn tiền và không idempotent: ghi trước ý định, kiểm điều kiện trước mỗi bước, log đủ để người can thiệp (Tự động hoá vận hành và auto-remediation).
- Bình luận dưới bài (một độc giả): mô hình giá RI phức tạp chính là gánh nặng cloud đẩy sang khách.
Liên quan
- Disney Hotstar 2018 (cùng năm: giảm chi phí EC2 bằng spot) · Quora 2016 · Quora 2013
- Chi phí hạ tầng và build vs buy · Tự động hoá vận hành và auto-remediation
Được nhắc tới trong
Công ty (1)