Cấu hình AWS Lambda cho môi trường production

Triển khai Ứng dụng trên AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Chạy tốt khi test

  • Hàm vượt qua mọi bài kiểm thử
  • Lên production thì bị timeout và throttling
  • Mã ổn; cấu hình thì không

Hàm serverless vượt qua kiểm thử nhưng gặp khó ở production, với các nút chỉnh bộ nhớ và timeout

Triển khai Ứng dụng trên AWS

Cấu hình Lambda quan trọng trong production

Logo Lambda ở giữa với bốn hộp cấu hình production tỏa ra: Memory với nút chỉnh CPU, Timeout với đồng hồ, Ephemeral Storage, và Concurrency hiển thị các phiên bản chạy song song

  • Memory: đồng thời tăng CPU và mạng
  • Timeout: số giây tối đa trước khi bị dừng
  • Ephemeral storage: không gian tạm tại /tmp
  • Concurrency: số phiên bản chạy đồng thời
Triển khai Ứng dụng trên AWS

Chọn bộ nhớ và mối liên hệ với CPU

  • Thêm bộ nhớ = tăng CPU theo tỷ lệ
  • Hàm bị giới hạn CPU chạy nhanh hơn khi tăng bộ nhớ
  • Thời gian ngắn hơn có thể giảm chi phí
  • Chọn kích cỡ bằng thử nghiệm, không phỏng đoán

Đồ thị bộ nhớ-so với chi phí: thời lượng giảm mạnh khi tăng bộ nhớ rồi phẳng dần, tổng chi phí tạo hình chữ U với điểm tối ưu rẻ nhất ở giữa

Triển khai Ứng dụng trên AWS

Concurrency: reserved vs provisioned


Reserved concurrency

  • Giới hạn số lượt thực thi đồng thời tối đa
  • Bảo vệ hệ thống phía sau và các hàm khác

Provisioned concurrency

  • Làm ấm sẵn phiên bản, loại bỏ cold start
  • Dành cho hàm nhạy độ trễ, hướng người dùng
Triển khai Ứng dụng trên AWS

Đóng gói cấu hình và mã dùng chung

  • Environment variables: cấu hình theo môi trường
  • Layers: chia sẻ mã và phụ thuộc giữa các hàm
  • Extensions: chạy kèm hàm để hỗ trợ công cụ
  • Tách cấu hình khỏi gói triển khai

Tùy chọn đóng gói Lambda: biến môi trường giữ cấu hình ngoài, layers chia sẻ thư viện chung giữa các hàm, và extensions chạy cạnh handler để giám sát hoặc quản lý secrets

Triển khai Ứng dụng trên AWS

Kết nối Lambda với VPC

Lambda nối vào VPC riêng qua ENI trong các subnet riêng, security group kiểm soát truy cập ra ngoài, và NAT gateway cung cấp kết nối internet

  • Gắn Lambda vào private subnets để truy cập nội bộ
  • Lambda tạo ENIs trong VPC của bạn
  • Security groups kiểm soát phạm vi truy cập
  • Cần NAT hoặc VPC endpoint để ra ngoài
Triển khai Ứng dụng trên AWS

Xử lý lỗi với destinations và DLQ

  • Gọi bất đồng bộ sẽ tự động retry khi lỗi
  • Lambda Destinations: định tuyến onSuccess và onFailure
  • Dead-letter queue: giữ sự kiện không bao giờ thành công
  • Không bao giờ âm thầm bỏ sự kiện lỗi

Xử lý lỗi async của Lambda: vòng lặp retry dẫn đến Lambda Destinations với nhánh onSuccess và onFailure, và dead-letter queue giữ các sự kiện hết lượt retry

Triển khai Ứng dụng trên AWS

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

Triển khai Ứng dụng trên AWS

Preparing Video For Download...