Execution Environment trong Lambda
Khi một Lambda function được gọi, AWS sẽ tạo một Execution Environment (môi trường thực thi) để chạy code. Đây là một container nhẹ chứa:
- Runtime (Node.js, Python, Java, Go, v.v.)
- Bộ nhớ (memory) và CPU được phân bổ theo cấu hình
- Thư viện và code của bạn
Cold Start vs Warm Start
- Cold Start: xảy ra khi Lambda cần khởi tạo Execution Environment mới. Bao gồm việc tải code, runtime và khởi động function → thường gây độ trễ cao hơn.
- Warm Start: nếu môi trường thực thi vẫn chưa bị thu hồi (Warm), Lambda sẽ tái sử dụng → response nhanh hơn nhiều.
Best practice:
- Dùng Provisioned Concurrency để giảm thiểu cold start.
- Giữ code nhỏ gọn, hạn chế dependency không cần thiết.
Deployment Options
Có nhiều cách để triển khai Lambda function, tuỳ thuộc vào workflow của bạn:
1. Upload trực tiếp
- Viết code trên AWS Console hoặc upload file
.zip. - Phù hợp với thử nghiệm hoặc function nhỏ.
2. S3 Deployment Package
- Upload code (ZIP) lên S3 rồi tham chiếu trong Lambda.
- Phù hợp khi function lớn hơn 10MB hoặc khi CI/CD.
3. IaC (Infrastructure as Code)
- AWS SAM (Serverless Application Model): template chuyên biệt cho Lambda & Serverless.
- Serverless Framework: Framework open-source, rất phổ biến
- AWS CDK (Cloud Development Kit): code-first IaC, hỗ trợ TypeScript, Python, Java.
- Terraform / Pulumi: công cụ IaC của bên thứ ba.
4. Container Image
- Lambda hỗ trợ container image lên đến 10GB.
- Dùng khi ứng dụng có nhiều dependency phức tạp.
- Triển khai qua Amazon ECR.
Lambda Layers là gì?
- Layers cho phép tách biệt thư viện và dependency ra khỏi function code.
- Giúp giảm kích thước package, tái sử dụng cho nhiều function.
- Layers có thể chứa “shared utils” để có thể tái sử dụng
- Ví dụ: một layer chứa
pandashoặcnumpy, nhiều Lambda có thể dùng chung. - Một function có thể attach tối đa 5 Layers.
- Một Layer có nhiều version khác nhau, bạn có thể attach các version một cách linh hoạt
Versioning và Aliases
- Version: mỗi lần deploy có thể tạo ra một Version Immutable (bất biến) của function.
- Đây là Snapshot của Function ở một thời điểm nhất định
- Giúp có thể rollback nhanh khi deploy lỗi
- Alias: trỏ đến một version cụ thể, giống như là Tag của Function giúp dễ dàng quản lý môi trường (dev, test, prod).
- VD:
Prod -> Version 5,Stag -> Version 4 - Khi đó, nếu muốn gọi đến Prod thì sẽ là ARN:
arn:aws:lambda:region:account-id:function:sampleFunc:Prod
- VD:
- Hỗ trợ Traffic Shifting (triển khai dần dần - canary release). Thay vì tất cả sẽ đề chạy trên version X thì có thể:
- 90% request → version cũ (ổn định).
- 10% request → version mới (đang thử nghiệm).
Tóm tắt
- Lambda chạy trong Execution Environment, có cold start & warm start.
- Nhiều cách triển khai: Console, S3, IaC, Container.
- Lambda Layers giúp quản lý dependency tốt hơn.
- Version & Alias hỗ trợ kiểm soát release an toàn.