Trong phần trước, chúng ta đã cùng tìm hiểu về Container Service và cách chạy chúng. Tới bài viết này, hãy cùng CodeGym làm rõ các dịch vụ Serverless của AWS.
Nội dung
1. Loại bỏ việc nâng vật nặng không phân biệt
Nếu bạn chạy mã của mình trên Amazon EC2, AWS chịu trách nhiệm về phần cứng vật lý. Bạn vẫn chịu trách nhiệm về các điều khiển logic. Chẳng hạn như: hệ điều hành khách, bảo mật và vá lỗi, mạng, bảo mật và mở rộng quy mô.
Như đã đề cập trong bài viết về Container, bạn chọn kiểm soát nhiều hơn bằng cách chạy và quản lý container của mình trên Amazon ECS và Amazon EKS. Bằng cách đó, AWS vẫn chịu trách nhiệm quản lý container nhiều hơn. Chẳng hạn như triển khai container trên các phiên bản EC2 và quản lý cụm container. Tuy nhiên, bạn vẫn chịu trách nhiệm duy trì các phiên bản EC2 cơ bản.
Mặc dù vậy, vẫn sẽ có cách để loại bỏ một số công việc nặng nhọc không phân biệt này. Nếu muốn triển khai khối lượng công việc và ứng dụng của mình mà không cần phải quản lý bất kỳ phiên bản EC2 nào, bạn có thể thực hiện điều đó trên AWS với Serverless Compute (máy tính không máy chủ).
2. Không cần máy chủ (Serverless)
Với máy tính không máy chủ, bạn có thể dành thời gian cho những thứ tạo nên sự khác biệt cho ứng dụng của mình. Bạn sẽ không cần dành thời gian cho việc đảm bảo tính khả dụng, khả năng mở rộng và quản lý máy chủ. Mọi định nghĩa về không máy chủ đều đề cập đến bốn khía cạnh sau:
- Không có máy chủ nào để cung cấp hoặc quản lý.
- Nó mở rộng theo mức sử dụng.
- Bạn không bao giờ phải trả tiền cho các tài nguyên nhàn rỗi.
- Tính khả dụng và khả năng chịu lỗi được tích hợp sẵn.
AWS đã phát triển các dịch vụ không có máy chủ cho cả ba lớp của ngăn xếp ứng dụng. Chúng ta sẽ đề cập đến hai dịch vụ, AWS Fargate và AWS Lambda.
3. Serverless với AWS Fargate
AWS Fargate mở rộng quy mô và quản lý cơ sở hạ tầng. Điều này nhằm giúp các nhà phát triển tập trung vào việc họ làm tốt nhất, phát triển ứng dụng.
4. Khám phá các Serverless Container với AWS Fargate
Fargate tóm tắt phiên bản EC2 để bạn không cần quản lý cơ sở hạ tầng điện toán cơ bản. Tuy nhiên, bạn có thể sử dụng tất cả các khái niệm, API và tích hợp AWS của Amazon ECS. Nó tích hợp gốc với IAM và Amazon Virtual Private Cloud (Amazon VPC). Với Amazon VPC, bạn có thể khởi chạy các container Fargate bên trong mạng của mình và kiểm soát kết nối với các ứng dụng của mình.
AWS Fargate là một công cụ tính toán không cần máy chủ, được xây dựng cho các container. AWS Fargate mở rộng quy mô và quản lý cơ sở hạ tầng. Do đó các nhà phát triển có thể làm việc trên những gì họ làm tốt nhất, phát triển ứng dụng. Nó đạt được điều này bằng cách phân bổ đúng lượng tính toán. Nhờ vậy, nhu cầu phải lựa chọn và quản lý các phiên bản EC2, dung lượng cụm và khả năng mở rộng được loại bỏ. Fargate hỗ trợ cả kiến trúc Amazon ECS và Amazon EKS. Nó cũng cung cấp khả năng cô lập khối lượng công việc và bảo mật được cải thiện theo thiết kế.
5. Serverless với AWS Lambda
Với AWS Lambda, không cần quản lý máy chủ. Bạn có thể mở rộng liên tục với khả năng đo lường dưới một giây và hiệu suất nhất quán.
6. Chạy code trên AWS Lambda
Nếu bạn muốn triển khai khối lượng công việc và ứng dụng của mình mà không cần phải quản lý bất kỳ phiên bản hoặc vùng chứa EC2 nào, bạn có thể sử dụng Lambda.
Với Lambda, bạn có thể chạy mã mà không cần cung cấp hoặc quản lý máy chủ. Bạn có thể chạy mã cho hầu như mọi loại ứng dụng hoặc dịch vụ phụ trợ. Bao gồm xử lý dữ liệu, xử lý luồng thời gian thực, học máy, WebSockets, phụ trợ IoT, phụ trợ di động và các ứng dụng web của bạn,…
Lambda chạy mã của bạn trên cơ sở hạ tầng tính toán có tính khả dụng cao và không yêu cầu người dùng quản lý. Bạn tải mã nguồn của mình lên bằng một trong các ngôn ngữ mà Lambda hỗ trợ và Lambda sẽ xử lý mọi thứ cần thiết để chạy và mở rộng mã của bạn với tính khả dụng cao. Không cần quản lý máy chủ. Bạn có thể mở rộng liên tục với khả năng đo lường dưới một giây và hiệu suất nhất quán.
7. Cách làm việc của Lambda
Hàm Lambda là nguyên lý nền tảng của AWS Lambda. Có thể tùy chọn cấu hình hàm Lambda của mình bằng bảng điều khiển Lambda, Lambda API, AWS CloudFormation hoặc AWS Serverless Application Model (AWS SAM). Gọi hàm của mình trực tiếp bằng cách sử dụng Lambda API hoặc có thể cấu hình dịch vụ hay tài nguyên AWS để gọi hàm của mình khi phản hồi sự kiện.
Để khám phá về các khái niệm của Lambda, chúng ta sẽ cùng tìm hiểu các khái niệm sau:
7.1. Function
Hàm là một tài nguyên mà bạn có thể gọi để chạy mã của mình trong Lambda. Lambda chạy các phiên bản của hàm của bạn để xử lý các sự kiện. Khi bạn tạo hàm Lambda, nó có thể được tạo theo nhiều cách:
- Bạn có thể tạo chức năng từ đầu.
- Bạn có thể sử dụng bản thiết kế (blueprint) do AWS cung cấp.
- Bạn có thể chọn một container image để triển khai cho chức năng của mình.
- Bạn có thể duyệt AWS Serverless Application Repository.
7.2. Trigger
Trigger mô tả thời điểm một hàm Lambda nên chạy. Trigger tích hợp hàm Lambda của bạn với các dịch vụ AWS khác và ánh xạ nguồn sự kiện. Vì vậy, bạn có thể chạy hàm Lambda của mình để phản hồi một số lệnh gọi API hoặc bằng cách đọc các mục từ stream hoặc queue. Điều này làm tăng khả năng phản hồi các sự kiện trong bảng điều khiển của bạn mà không cần phải thực hiện các hành động thủ công.
7.3. Event
Sự kiện là một tài liệu định dạng JSON chứa dữ liệu để hàm Lambda xử lý. Thời gian chạy chuyển đổi sự kiện thành một đối tượng và truyền nó đến mã hàm của bạn. Khi bạn gọi một hàm, bạn xác định cấu trúc và nội dung của sự kiện.
7.4. Application Environment
Môi trường ứng dụng cung cấp môi trường thời gian chạy an toàn và biệt lập cho hàm Lambda của bạn. Môi trường ứng dụng quản lý các quy trình và tài nguyên cần thiết để chạy hàm.
7.5. Deployment Package
Bạn triển khai mã hàm Lambda của mình bằng một gói triển khai. Lambda hỗ trợ hai loại gói triển khai:
- Một tệp lưu trữ .zip – Tệp này chứa mã hàm và các phần phụ thuộc của hàm. Lambda cung cấp hệ điều hành và thời gian chạy cho hàm của bạn.
- Một container image – Tệp này tương thích với thông số kỹ thuật của Open Container Initiative (OCI). Bạn thêm mã hàm và các phần phụ thuộc của mình vào hình ảnh. Bạn cũng phải bao gồm hệ điều hành và thời gian chạy Lambda.
7.6. Runtime
Runtime cung cấp một môi trường ngôn ngữ cụ thể chạy trong môi trường ứng dụng. Khi bạn tạo hàm Lambda, bạn chỉ định runtime mà bạn muốn mã của mình chạy. Bạn có thể sử dụng runtime tích hợp, chẳng hạn như Python, Node.js, Ruby, Go, Java hoặc .NET Core. Hoặc bạn có thể triển khai các hàm Lambda của mình để chạy trên runtime tùy chỉnh.
7.7. Lambda function handler
Trình xử lý hàm AWS Lambda là phương thức trong mã hàm của bạn xử lý các sự kiện. Khi hàm của bạn được gọi, Lambda sẽ chạy phương thức xử lý. Khi trình xử lý thoát hoặc trả về phản hồi, nó sẽ có sẵn để xử lý sự kiện khác. Bạn có thể sử dụng cú pháp chung sau khi tạo trình xử lý hàm trong Python.
def handler_name (event, context):
…
return some_value
8. Chi tiết thanh toán
Với Lambda, bạn có thể chạy mã mà không cần cung cấp hoặc quản lý máy chủ và bạn chỉ phải trả tiền cho những gì bạn sử dụng. Bạn bị tính phí cho số lần mã của bạn được gọi (yêu cầu) và cho thời gian mã của bạn chạy, làm tròn đến 1 mili giây (ms) gần nhất của thời lượng.
AWS làm tròn thời lượng đến ms gần nhất mà không có thời gian chạy tối thiểu. Với mức giá này, việc chạy các hàm có thời gian thực thi rất thấp, chẳng hạn như các hàm có thời lượng dưới 100 ms hoặc API có độ trễ thấp, có thể tiết kiệm chi phí.
Sự tiện lợi mà bạn có thể có khi chạy các giải pháp không có máy chủ như AWS Fargate và AWS Lambda là rất lớn. Sau khi hiểu về các dịch vụ Serverless, bạn sẽ áp dụng tất cả thông tin mà bạn đã hiểu được về Amazon EC2, Amazon ECS, Amazon EKS và AWS Fargate và sử dụng chúng vào một số trường hợp sử dụng phù hợp.
Các dịch vụ như AWS Lambda, API Gateway và DynamoDB đã mang đến giải pháp mạnh mẽ cho việc phát triển ứng dụng nhanh chóng và hiệu quả. Nếu bạn muốn khám phá sâu hơn về các dịch vụ này và cách ứng dụng chúng trong thực tiễn, đừng bỏ lỡ khóa học AWS tại CodeGym. Hãy đăng ký ngay hôm nay để nắm vững kiến thức và mở ra nhiều cơ hội mới trong lĩnh vực điện toán đám mây!
0 Lời bình