AWS Lambda là gì? #
Khái niệm #
AWS Lambda (tạm gọi tắt là Lambda) là một dịch vụ điện toán phi máy chủ (serverless), dựa trên mô hình FaaS (Function-as-a-service). Khi sử dụng dịch vụ này, người dùng sẽ không cần quan tâm đến hạ tầng hệ thống bên dưới. Lambda sẽ thực thi các đoạn code do người dùng quy định khi được yêu cầu. Điều này giúp người dùng, đặc biệt là các lập trình viên (developer) sẽ có nhiều thời gian hơn để tập trung vào phát triển ứng dụng của mình.
Ngôn ngữ hỗ trợ #
Các ngôn ngữ lập trình đang được hỗ trợ bao gồm:
- Java
- Python
- C#
- Node.js
- Go
- PowerShell
- Ruby
Cách tính phí #
Người dùng sử dụng các ngôn ngữ lập trình được hỗ trợ phía trên để tạo ra các Lambda function. Các function này sẽ tính phí dựa vào thời gian xử lý (duration time) ứng với dung lượng memory của function. Và mỗi khu vực mà function được tạo ra sẽ có mức phí khác nhau.
Để có thể dễ hình dung hơn, bạn có có thể tham khảo ảnh mức phí sẽ phải trả cho Lambda đối với từng dung lượng memory tại khu vực Singapore (ảnh chụp ở thời điểm tháng 9 năm 2022):
Như bạn có thể thấy ở trên, hiện tại AWS đang cung cấp 2 loại CPU khác nhau: x86 và Arm (AWS Graviton2). Mức phí của CPU Arm ở thời điểm hiện tại rẻ hơn so với x86. Theo AWS cho biết, Lambda function sử dụng CPU Arm giúp tối ưu hơn 34% về chi phí khi sử dụng dịch vụ. Trong đó, thời gian xử lý nhanh hơn 19% và rẻ hơn 20% so với function sử dụng CPU x86.
Lưu ý: nếu code của bạn sử dụng một số thư viện cần phải cài thêm thì hãy kiểm tra thư viện đó có hỗ trợ CPU Arm hay không trước khi quyết định sử dụng CPU Arm. Vì có một số thư viện chỉ hỗ trợ CPU x86, chưa hỗ trợ CPU Arm hoặc là nhà cung cấp chưa phát hành. Đừng chỉ vì vài phần trăm nhưng đánh đổi là hàng giờ ngồi dò lỗi rồi cuối cùng nhận ra là thư viện không hỗ trợ hay tương thích nhé.
Tính năng nổi bật #
- Có khả năng scale up/down linh hoạt dựa vào số lượng request mà không cần phải thêm bất kỳ cấu hình
- Hỗ trợ tích hợp với nhiều dịch vụ khác trên AWS (Amazon S3, Amazon CloudWatch, Amazon DynamoDB, Amazon API Gateway, …)
- Không yêu cầu trả trước phí sử dụng
- Cung cấp khả năng chịu lỗi (fault tolerance) cho các services run code và function
- Sử dụng AWS IAM để xác định tất cả các vai trò và chính sách bảo mật do đảm bảo tính bảo mật cho ứng dụng của người dùng
Một số ứng dụng nổi bật #
Xử lý tập tin #
Một ví dụ giúp bạn dễ dàng hình dung đó là việc xử lý hình ảnh tự động khi người dùng upload ảnh lên S3 bucket. Trong đó, khi hình ảnh được upload bucket được chỉ định, người dùng sẽ tạo một task tự động trigger AWS Lambda để chúng thực việc thay đổi độ phân giải của ảnh và lưu vào 1 bucket khác.
Xử lý streaming data #
Với những ứng dụng có traffic “khủng”, hệ thống thường sử dụng dịch vụ AWS Lambda và Amazon Kinesis Stream để xử lý các dữ liệu streaming real-time để ứng dụng theo dõi các hoạt động (application activity tracking), hay các nghiên cứu các dữ liệu real-time khác nhau từ các nguồn data khác nhau như như Website clickstream, Payment transactions, Social media timeline, IT logs hay Location based tracking.
Web Backend #
AWS Lambda cũng có thể đóng vai trò là một backend dùng để xử lý các request từ phía frontend và có khả năng scale linh hoạt tùy theo số lượng request.
IoT Backend #
Tương tự như việc xử lý streaming data, Lambda có thể được tích hợp với Amazon Kinesis để xử lý các thông tin được gửi từ các thiết bị IoT và thực hiện các công việc cần thiết.
Mobile Backend #
Người dùng có thể tích hợp AWS Lambda với Amazon API Gateway để làm backend xử lý các request từ các thiết bị di động một cách dễ dàng
Cron job #
Thay vì phải cài đặt và thiết lập cron job trên server, người dùng hoàn toàn có thể thực hiện điều này theo dạng serverless. Bạn có thể kết hợp AWS Lambda và Amazon EventBridge để tạo các cron job trên AWS
Cách thức hoạt động #
Cách thức hoạt động cũng đã được mô tả sơ qua ở phần giới thiệu “AWS Lambda là gì?” Dịch vụ này sẽ xử lý theo dạng “event-driven”, các event sẽ trigger AWS Lambda thực thi các công việc cần thiết. Người dùng có thể trigger Lambda thông qua hơn 200 service trên AWS hoặc invoke trực tiếp đến Lambda. Người dùng chỉ phải trả phí khi Lambda được trigger.
Ưu và nhược điểm #
Ưu điểm #
- Khả năng scale dựa theo số lượng request/invoke
- Không cần phải quản lý hạ tầng bên dưới vì nó đã được quản lý bởi AWS
- Chỉ phải trả phí dựa trên thời gian Lambda xử lý
Nhược điểm #
- Thời gian xử lý tối đa là 300 giây (5 phút)
- Dung lượng ổ cứng tối đa có thể sử dụng là 512 MB
- Dung lượng memory giới hạn trong mức 128-10240 MB
- Không xử lý các request có dung lượng “body” lớn hơn 128 KB
- Log chỉ được ghi vào CloudWatch của AWS
- Đối với API, thời gian phản hồi sẽ chậm hơn đôi chút đối với những request đầu tiên vì “cold start” – thời điểm function trigger lần đầu tiên.
Nguồn tham khảo: AWS, VTI Cloud
Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở. 🌐Website: https://tel4vn.edu.vn/ |