Kiến trúc Serverless là một mô hình điện toán đám mây đã và đang phát triển mạnh mẽ trong vài năm trở lại đây, nó giúp cho các công ty, doanh nghiệp có thể tập trung vào việc phát triển sản phẩm thay vì phải lo lắng đến việc quản lý và vận hành máy chủ. Một trong những giải pháp serverless hàng đầu hiện nay phải kể đến AWS với AWS Lambda. Bài viết hôm nay chúng ta cùng tìm hiểu về AWS Lambda và những ứng dụng phổ biến của Lambda dành cho các doanh nghiệp hiện nay nhé.
Kiến trúc Serverless là gì?
Trước tiên chúng ta cùng nhắc lại về kiến trúc Serverless nhé.
Kiến trúc Serverless là một thiết kế theo hướng sự kiện trong đó các ứng dụng được xây dựng phụ thuộc vào các dịch vụ của bên thứ 3 cho phần backend; trong đó bao gồm:
- Mã chung của ứng dụng như xác thực, thông báo, chức năng email, … được chạy từ Backend as a Service
- Mã dành riêng cho doanh nghiệp chạy trong các container Function as a Service
Serverless Architecture = Backend as a Service (BaaS) + Functions as a Service (FaaS)
Các nền tảng cung cấp dịch vụ cloud nổi tiếng hiện nay đều cung cấp kiến trúc Serverless cho các doanh nghiệp sử dụng, trong đó thị phần nổi bật đến từ 3 ông lớn Amazon, Google và Microsoft:
AWS Lambda là gì?
AWS Lambda là một dịch vụ Serverless hỗ trợ chúng ta upload code của mình lên, chạy đoạn code đó bằng việc sử dụng các tài nguyên có sẵn của AWS (Amazon Web Services). Khi sử dụng Lambda, chúng ta sẽ không cần quan tâm đến việc triển khai hạ tầng server bên dưới; Lambda cũng hỗ trợ việc quản lý cân bằng bộ nhớ, CPU, mạng và các tài nguyên khác. Điều này giúp chúng ta, đặc biệt là các lập trình viên có thể tập trung vào việc phát triển ứng dụng của mình.
Thành phần chính của Lambda bao gồm 2 phần là Lambda funtion và event source, trong đó:
Lambda funtions là những đoạn code hoàn chỉnh chúng ta upload lên theo những quy định, cấu hình mà bạn đã cài đặt từ trước. Event Source là nơi đưa ra các sự kiện và nó sẽ chủ động gọi tới các Lambda functions thiết lập từ trước.
Lambda hỗ trợ hầu hết các ngôn ngữ lập trình phổ biến hiện nay cho chúng ta tạo các functions như Java, Python, C#, NodeJS, Go, PowerShell, Ruby. Amazon cho phép bạn kích hoạt Lambda từ hơn 200 dịch vụ AWS và các ứng dụng phần mềm dưới dạng dịch vụ (SaaS), đồng thời bạn sẽ chỉ phải chi trả theo mức sử dụng.
Tính năng nổi bật của AWS Lambda:
- Có khả năng tự scale linh hoạt dựa vào số lượng request mà không phải thêm bất kỳ cấu hình gì khác
- Hỗ trợ tích hợp nhiều dịch vụ khác trên AWS như S3, CloudWatch, DynamoDB, API Gateway, …
- Cung cấp khả năng chịu lỗi cho các services
- Sử dụng AWS IAM phân quyền và đảm bảo tính bảo mật
Ngược lại thì Lambda cũng có một số nhược điểm khi so với các serverless khác như:
- Log chỉ được ghi vào CloudWatch, không hỗ trợ ghi log ngoài
- Tính năng cold start khiến request đầu tiên sẽ chậm hơn (thời điểm function trigger lần đầu tiên)
- Giới hạn thời gian xử lý tối đa 300s
- Giới hạn dung lượng ổ cứng tối đa có thể sử dụng 512MB
- Giới hạn dung lượng body của request dưới 128KB
- Giới hạn bộ nhớ memory trong mức 128MB đến 1GB
Ứng dụng của Lambda
AWS Lambda là lời giải cho bài toán cần cắt giảm chi phí vận hành và quản lý nhiều máy chủ hoặc thời gian chạy các đoạn code để tập trung nhiều hơn vào việc phát triển sản phẩm. Nhiều công ty, doanh nghiệp lớn đã và đang sử dụng AWS Lambda cho hệ thống của mình, ví dụ:
- Coca-Cola sử dụng Lambda cho việc cung cấp thông tin dinh dưỡng cho các đối tác dịch vụ thực phẩm của họ
- iRobot sử dụng Lambda và AWS IoT để chạy ứng dụng web kết nối đến máy hút bụi Roomba
- Autodesk (phần mềm thiết kế kiến trúc) sử dụng Lambda để tự động hóa các hoạt động công nghệ thông tin
Một số ứng dụng nội bật của Lambda bao gồm:
Xử lý tệp
Lambda hỗ trợ người dùng xử lý file một cách tự động khi người dùng upload file lên S3 (một dịch vụ lưu trữ của Amazon).
Tham khảo việc làm Cloud cao, hấp dẫn trên TopDev!
Xử lý luồng dữ liệu
Lambda kết hợp với Kinesis Stream để xử lý các dữ liệu streaming real-time để ứng dụng theo dõi các hoạt động hoặc nghiên cứu các dữ liệu real-time từ nhiều nguồn data khác nhau.
Ứng dụng Web
Lambda có thể đóng vai trò là một backend dùng để xử lý các request từ phía frontend.
Backend IoT
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 để thực hiện các chức năng tương ứng.
Mobile Backend
Lambda có thể kết hợp 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.
Về mặt chi phí, AWS Lambda sẽ chỉ yêu cầu bạn trả phí khi các đoạn code của bạn được chạy, dựa trên số lượt request và thời gian thực hiện xử lý code của bạn. Ngoài ra Lambda cũng miễn phí 1 triệu lượt request và 400.000 GB-giây thời gian điện toán mỗi tháng. Nhờ những chính sách trên mà Lambda đang là một giải pháp đáng xem xét cho bài toán chi phí.
Kết bài
Như vậy chúng ta đã cùng nhau tìm hiểu về AWS Lambda, một dịch vụ Serverless của Amazone cung cấp cùng với các ứng dụng của nó. Lambda sẽ là một giải pháp phù hợp dành cho các tổ chức, doanh nghiệp cần sự tập trung vào việc phát triển sản phẩm mà không có chi phí, nguồn lực dành cho vấn đề vận hành, quản trị hệ thống. Hy vọng bài viết hữu ích dành cho bạn, hẹn gặp lại trong các bài viết tiếp theo của mình.
Tác giả: Phạm Minh Khoa
- Hướng dẫn tạo Let’s Encrypt Certificates dưới local và import vào AWS Certificate Manage
- Docker to Serverless (Google Cloud Platform)
- Review: phỏng vấn vào vị trí SDE của Amazon