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

chia lưu lượ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
Tự động hóa triển khai trên AWS

Triển khai canary là gì

canary

  • 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%
Tự động hóa triển khai trên AWS

Triển khai tuyến tính là gì

tuyến tính

  • 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
Tự động hóa triển khai trên AWS

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

lưu lượng

Tự động hóa triển khai trên AWS

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

nhãn

Tự động hóa triển khai trên AWS

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

nhãn

Tự động hóa triển khai trên AWS

Chọn cấu hình phù hợp

chọn

  • 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
Tự động hóa triển khai trên AWS

Cùng luyện tập nào!

Tự động hóa triển khai trên AWS

Preparing Video For Download...