+1

AWS Lambda - một dịch vụ của AWS

Mayfest2023

AWS Lambda

AWS Lambda là một dịch vụ tính toán nơi mà bạn có thể upload code của mình lên, và dịch vụ AWS Lambda sẽ giúp bạn chạy đoạn code đó bằng việc sử dụng các tài nguyên sẵn có của AWS. Sau khi bạn upload code, và bạn tạo ra một Lambda function, AWS sẽ cung cấp và quản lý các server mà bạn sử dụng để chạy code.

image.png

Theo đó người dùng có thể thực thi các đoạn mã code ứng dụng mà không cần quan tâm đến việc quản lý và vận hành hạ tầng máy chủ. Lambda chỉ tính phí người dùng trên số lần thực thi code, và có thể mở rộng từ vài request/ngày đến hàng ngàn request/ngày. Đối với tài khoản sử dụng gói Free Tier, Lambda không tính phí cho 1 triệu Requests mỗi tháng và 400.000 GB-seconds thời gian tính toán mỗi tháng.

Code bạn chạy trên Lambda được gọi là Lambda Function. Hiện tại, Lambda hỗ trợ những ngôn ngữ lập trình sau:

  • Java
  • Python
  • C#
  • NodeJS
  • Go
  • PowerShell
  • Ruby

Lambda có thể gọi là Function-as-a-Service FaaS.

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.

Khi nào chúng ta nên dùng AWS Lambda?

AWS Lambda là nền tảng tính toán lý tưởng cho nhiều kịch bản ứng dụng, cung cấp cho bạn môi trường ở những ngôn ngữ đang được hỗ trợ từ AWS ( Java, Node.js, Python ).

Khi sử dụng AWS Lambda, bạn cần chắc chắn về phần code của mình, phần việc còn lại bao gồm quản lý cân bằng bộ nhớ, CPU, mạng và các tài nguyên khác sẽ do AWS Lambda đảm nhiệm. Nó khá linh hoạt, có thể thực hiện và hoạt động các công việc với quyền cao nhất của mình, bao gồm lập dự phòng và hiệu năng, theo dõi các tài nguyên, bảo mật, deploy code. Tuy nhiên, điều đó đồng nghĩa với việc, bạn không thể can thiệp vào các tiến trình và tài nguyên khi AWS Lambda đang chạy.

Nếu bạn muốn can thiệp vào những phần này. Đừng lo lắng, AWS Lambda cung cấp một dịch vụ cho phép bạn có thể tự mình quản lý các tài nguyên này, đó là EC2 ( Amazon Elastic Compute Cloud ) - dịch vụ này cho phép bạn có thể tùy ý thay đổi từ các tùy chọn trên EC2, như là: tùy biến bộ nhớ, mạng và bảo mật, các software stack. Tuy nhiên, vấn đề về hiệu năng sẽ là công việc của bạn, cộng với theo dõi các tài nguyên và sử dụng khu vực có thể phát sinh lỗi.

AWS cũng cung cấp cho bạn Elastic Beanstalk cung cấp các dịch vụ dễ dàng sử dụng cho deploy và khả năng mở rộng ứng dụng trên Amazon EC2.

Lambda là một dịch vụ điện toán lý tưởng cho các tình huống ứng dụng cần tăng quy mô nhanh chóng và giảm quy mô về 0 khi không có nhu cầu. Ví dụ: bạn có thể sử dụng Lambda cho:

  • Xử lý tệp: Sử dụng Amazon Simple Storage Service (Amazon S3) để kích hoạt quá trình xử lý dữ liệu Lambda trong thời gian thực sau khi tải lên.
  • Xử lý luồng: Sử dụng Lambda và Amazon Kinesis để xử lý dữ liệu truyền trực tuyến theo thời gian thực nhằm theo dõi hoạt động của ứng dụng, xử lý đơn đặt hàng giao dịch, phân tích luồng nhấp chuột, làm sạch dữ liệu, lọc nhật ký, lập chỉ mục, phân tích mạng xã hội, đo từ xa dữ liệu thiết bị Internet of Things (IoT) và đo sáng.
  • Ứng dụng web: Kết hợp Lambda với các dịch vụ AWS khác để xây dựng các ứng dụng web mạnh mẽ tự động tăng giảm quy mô và chạy ở cấu hình có tính sẵn sàng cao trên nhiều trung tâm dữ liệu.
  • Phần phụ trợ IoT: Xây dựng phần phụ trợ serverless bằng Lambda để xử lý các yêu cầu API trên web, thiết bị di động, IoT và bên thứ ba.
  • Phần phụ trợ dành cho thiết bị di động: Xây dựng phần phụ trợ bằng cách sử dụng Lambda và Amazon API Gateway để xác thực và xử lý các yêu cầu API. Sử dụng AWS Amplify để dễ dàng tích hợp với giao diện người dùng iOS, Android, Web và React Native của bạn.

Lambda hoạt động ra sao?

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.

Các thành phần chính: Lambda Function và Event Source, là những thành phần chính trong khi bạn làm việc với AWS Lambda.

  • Event Source đưa ra các sự kiện, và một Lambda function tùy biến code theo những gì bạn viết và xử lý các sự kiện một cách tự động, mỗi thay đổi của Event sẽ kích hoạt Lambda function tương ứng của bạn, bạn có thể gọi Lambda function điều hướng đến HTPS hoặc sử dụng AWS SDKs.
  • Lambda function: bạn upload code hoàn chỉnh của mình lên Lambda, khi đó chúng ta gọi nó là function của Lambda, và Lambda function có quan hệ phụ thuộc với cấu hình mà bạn đã cài đặt, nói cách khác, bạn phải cài đặt trước tài nguyên cho function đó, và tất nhiên, cài đặt này có thể chỉnh sửa được.

Ư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.

Một số ứng dụng

Xử lý tập tin

image.png

AWS Lambda có thể được kích hoạt để xử lý các tập tin được upload do người dùng quy định. Nguồn ảnh: AWS 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

image.png

AWS Lambda có thể được dùng để xử lý streaming data. Nguồn ảnh: AWS 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

image.png

AWS Lambda có thể được dùng để làm web backend. Nguồn ảnh: AWS 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

image.png

AWS Lambda có thể tích hợp với Amazon Kinesis để xử lý các thông tin được gửi về từ các thiết bị IoT. Nguồn ảnh: AWS 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

image.png

AWS Lambda kết hợp với Amazon API Gateway để làm mobile backend. Nguồn ảnh: AWS 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 - chạy theo lịch

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.

Tham khảo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí