Chiến lược triển khai: phiên bản, bí danh và chuyển hướng lưu lượng

Ứng dụng Serverless với AWS Lambda

Claudio Canales

Senior DevOps Engineer

Vì sao chiến lược triển khai quan trọng

  • Phát hiện lỗi nhanh.
  • Giảm phạm vi ảnh hưởng.
  • Khôi phục nhanh.

Triển khai rủi ro vs an toàn

Ứng dụng Serverless với AWS Lambda

$LATEST và các phiên bản đã publish

$LATEST

  • Thay đổi mỗi khi cập nhật mã.

Phiên bản

  • Ảnh chụp bất biến.
  • Dễ ghim để hoàn nguyên và tách lưu lượng.

Latest so với các phiên bản

Ứng dụng Serverless với AWS Lambda

Một phiên bản là ảnh chụp bất biến

  • Xem phiên bản như artefact phát hành.
  • Mỗi phiên bản ghi lại mã và cấu hình.
  • Khi đã publish, không thay đổi.
  • Luôn có thể quay lại trạng thái tốt đã biết.

Ảnh chụp phiên bản bất biến

Ứng dụng Serverless với AWS Lambda

Bí danh là con trỏ ổn định

  • Con trỏ ổn định.
  • Gọi bí danh thay vì phiên bản.
  • Cập nhật đích mà không đổi nơi gọi.

Bí danh trỏ đến một phiên bản

Ứng dụng Serverless với AWS Lambda

Bí danh dev và prod

  • Rất phù hợp cho môi trường.
  • Di chuyển dev thường xuyên.
  • Thăng cấp lên prod bằng cách chuyển bí danh.

Ánh xạ bí danh dev và prod

Ứng dụng Serverless với AWS Lambda

Chuyển lưu lượng với bí danh có trọng số

  • Thử nghiệm an toàn trong production.
  • Phần lớn lưu lượng ở phiên bản hiện tại.
  • Một tỷ lệ nhỏ tới ứng viên.

Khái niệm định tuyến theo trọng số qua bí danh

Ứng dụng Serverless với AWS Lambda

Canary bước 1: 90/10

  • 90% ở phiên bản hiện tại.
  • 10% kiểm thử ứng viên dưới tải thực.
  • Theo dõi lỗi và độ trễ.

Canary tách 90/10

Ứng dụng Serverless với AWS Lambda

Canary bước 2: 50/50

  • Nếu lát 10% ổn, tăng trọng số.
  • 50% hiện tại, 50% ứng viên.
  • Sự cố lộ rõ nhanh ở mức 50/50.
  • Giám sát là then chốt.

Canary tách 50/50

Ứng dụng Serverless với AWS Lambda

Canary bước 3: 100% mới

  • Chuyển toàn bộ lưu lượng sang phiên bản mới.
  • Phiên bản cũ vẫn còn.
  • Hoàn nguyên đơn giản.

Canary 100% mới

Ứng dụng Serverless với AWS Lambda

Mô hình tư duy blue/green

  • Xanh dương = phiên bản ổn định hiện tại.
  • Xanh lục = phiên bản ứng viên mới.
  • Chuyển bằng cách di chuyển bí danh.
  • Định tuyến có trọng số giúp chuyển dần.

Chuyển đổi blue-green

Ứng dụng Serverless với AWS Lambda

Hoàn nguyên = chuyển bí danh về trước

  • Không cần triển khai lại.
  • Di chuyển bí danh về phiên bản tốt gần nhất.
  • Phục hồi trong vài giây, không phải giờ.
  • Phiên bản bất biến và bí danh ổn định bổ trợ nhau.

Hoàn nguyên bằng cách di chuyển bí danh

Ứng dụng Serverless với AWS Lambda

Giám sát trong quá trình chuyển đổi

  • Lỗi và hết thời gian chờ.
  • Thời lượng và tail latency.
  • Giới hạn nếu có đặt ngưỡng.
  • Tạm dừng hoặc hoàn nguyên nhanh.

Chỉ số giám sát khi triển khai

Ứng dụng Serverless với AWS Lambda

Lỗi thường gặp: coi $LATEST là prod

  • Dựa vào $LATEST làm mất tính dự đoán.
  • Phiên bản và bí danh cho thấy rõ cái gì đang chạy.
  • Hoàn nguyên an toàn.

Cảnh báo trôi dạt của latest

Ứng dụng Serverless với AWS Lambda

Bỏ qua

Ứng dụng Serverless với AWS Lambda

Danh sách kiểm triển khai an toàn

  • Publish một phiên bản.
  • Chuyển lưu lượng dần bằng bí danh.
  • Giám sát kết quả.
  • Sẵn sàng hoàn nguyên ở mọi bước.

Sơ đồ danh sách kiểm an toàn triển khai

Ứng dụng Serverless với AWS Lambda

Điểm chính cần nhớ

  • Phiên bản tăng tính dự đoán.
  • Bí danh tăng tính ổn định.
  • Định tuyến theo trọng số tăng độ an toàn.
  • Hoàn nguyên = di chuyển bí danh.

Điểm rút ra chính về triển khai

Ứng dụng Serverless với AWS Lambda

Ayo berlatih!

Ứng dụng Serverless với AWS Lambda

Preparing Video For Download...