Optimizing Lambda Performance with SnapStart & Provisioned Concurrency

Optimizing Lambda Performance with SnapStart & Provisioned Concurrency

avatar

TrungTin Tran

2026.02.14

Bài viết này sẽ giải thích cold start là gì, tại sao nó xảy ra, và hai giải pháp Provisioned Concurrency với SnapStart. Bạn sẽ hiểu rõ cơ chế, cách hoạt động và khi nào nên áp dụng từng giải pháp để tối ưu cả performance lẫn cost.

1. Cold start and latency

Cold Start xảy ra khi Lambda function được invoke lần đầu tiên hoặc sau một khoảng thời gian không hoạt động. AWS phải thực hiện đầy đủ các bước: download code, khởi tạo runtime, chạy initialization code, và cuối cùng mới execute handler. Toàn bộ quá trình này gây ra latency từ vài trăm milliseconds đến vài giây, ảnh hưởng trực tiếp đến user experience.

2. Lambda Provisioned Concurrency

Provisioned Concurrency cho phép bạn giữ một số lượng Lambda execution environments luôn ở trạng thái initialized và warm, sẵn sàng xử lý request ngay lập tức mà không có cold start.

Cách hoạt động:

  • AWS khởi tạo và duy trì số lượng execution environments theo cấu hình của bạn
  • Các environments này đã hoàn thành tất cả các bước initialization
  • Khi có request đến, Lambda sử dụng ngay environments đã sẵn sàng

Key Features:

  • Hỗ trợ tất cả Lambda runtimes (Python, Node.js, Java, .NET, Go, Ruby)
  • Có thể configure cho Lambda versions hoặc aliases
  • Hỗ trợ Application Auto Scaling để tự động scale theo schedule hoặc metrics

3. Lambda SnapStart

Lambda SnapStart là feature cho phép cải thiện performance của Lambda functions bằng cách tạo snapshot của initialized execution environment. Hiện tại hỗ trợ Java 11+, Python 3.12+, và .NET 8+.

Cách hoạt động:

  1. Initialization Phase: AWS khởi tạo function và chạy code initialization một lần
  2. Snapshot Creation: AWS tạo snapshot của memory và disk state sau khi initialization
  3. Snapshot Caching: Snapshot được cache và tái sử dụng cho các invocations sau
  4. Restore from Snapshot: Khi có request, AWS restore từ snapshot thay vì khởi tạo lại từ đầu

Key Features:

  • Giảm cold start time từ ~3000ms xuống ~300-500ms (giảm 70-90%)
  • Không cần pre-warm instances như Provisioned Concurrency
  • Free (chỉ trả tiền cho invocations như bình thường)

4. So sánh Provisioned Concurrency và SnapStart

Tiêu chíProvisioned ConcurrencySnapStart
Runtime SupportTất cả runtimesJava 11+, Python 3.12+, .NET 8+
Cold Start Reduction100% (Không có cold start)70-90% (Giảm từ ~3s xuống ~500ms)
Typical LatencyDouble-digit milliseconds (~10-50ms)Sub-second (~300-500ms khi cold start)
CostCao (trả tiền liên tục cho pre-warmed instances)free (no extra cost)
Traffic PatternPredictable, steadyUnpredictable, bursty
ScalingManual hoặc auto scalingTự động
Version RequirementBắt buộc (version/alias)Bắt buộc (published versions)
Best ForLatency-critical appsCost-sensitive apps

Tài liệu tham khảo