Optimizing Lambda Performance with SnapStart & Provisioned Concurrency
TrungTin Tran
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:
- Initialization Phase: AWS khởi tạo function và chạy code initialization một lần
- Snapshot Creation: AWS tạo snapshot của memory và disk state sau khi initialization
- Snapshot Caching: Snapshot được cache và tái sử dụng cho các invocations sau
- 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 Concurrency | SnapStart |
|---|---|---|
| Runtime Support | Tất cả runtimes | Java 11+, Python 3.12+, .NET 8+ |
| Cold Start Reduction | 100% (Không có cold start) | 70-90% (Giảm từ ~3s xuống ~500ms) |
| Typical Latency | Double-digit milliseconds (~10-50ms) | Sub-second (~300-500ms khi cold start) |
| Cost | Cao (trả tiền liên tục cho pre-warmed instances) | free (no extra cost) |
| Traffic Pattern | Predictable, steady | Unpredictable, bursty |
| Scaling | Manual hoặc auto scaling | Tự động |
| Version Requirement | Bắt buộc (version/alias) | Bắt buộc (published versions) |
| Best For | Latency-critical apps | Cost-sensitive apps |