Triển khai canary và tuyến tính
Tự động hóa triển khai trên AWS
Dunieski Otano
Amazon Web Services Solutions Architect
Một bản phát hành lỗi, mọi người dùng đều ảnh hưởng
Thay đổi logic thanh toán triển khai ngay cho 100% lưu lượng
Lỗi xuất hiện dưới tải thật; mọi thanh toán đều thất bại
Canary 10% đã bắt được trong 5 phút
Bỏ qua canary = mất tiền thật
Triển khai canary là gì
Gửi một phần nhỏ
lưu lượng đến phiên bản mới trước
Theo dõi chỉ số trong
khoảng chờ cố định
Nếu ổn,
chuyển phần còn lại
ngay
Mẫu thường dùng:
10% trong 5 phút
, rồi 100%
Triển khai tuyến tính là gì
Chuyển lưu lượng theo
bước tăng bằng nhau
Chờ giữa mỗi bước
Ví dụ:
10% mỗi 1 phút
trong 10 phút
Mượt hơn canary; tổng thời gian lâu hơn
Canary vs. tuyến tính, so sánh trực quan
Canary:
một phần, rồi tất cả
Tuyến tính:
nhiều bước nhỏ
Canary phát hiện sự cố nhanh; tuyến tính tăng dần từ tốn
Cả hai sẽ tạm dừng nếu
kích hoạt rollback
Cấu hình CodeDeploy cho Lambda
CodeDeployDefault.LambdaCanary10Percent5Minutes
: 10% trong 5 phút, rồi 100%
CodeDeployDefault.LambdaLinear10PercentEvery1Minute
: +10% mỗi phút
CodeDeployDefault.LambdaAllAtOnce
: toàn bộ lưu lượng ngay lập tức
ECS có cấu hình tương ứng với tiền tố ECS
Rollback tự động với CloudWatch alarm
Gắn
CloudWatch alarm
vào nhóm triển khai
Alarm phổ biến:
errors, duration, 5xx
Nếu alarm chuyển sang trạng thái
ALARM
, triển khai dừng lại
CodeDeploy sẽ
rollback
về phiên bản trước
Chọn cấu hình phù hợp
Bản vá định kỳ rủi ro thấp →
AllAtOnce
Thay đổi production rủi ro cao →
Canary
Muốn tăng đều, mượt →
Linear
Luôn kết hợp với
alarm
để auto-rollback
Cùng luyện tập nào!
Tự động hóa triển khai trên AWS
Preparing Video For Download...