AWS Lambda so với Amazon EC2: Nên chọn giải pháp nào?

Amazon là một trong những đơn vị dẫn đầu trong việc cung cấp các dịch vụ đám mây đa dạng, với hàng chục dịch vụ và con số này vẫn đang tiếp tục tăng lên. Amazon EC2 là một trong những dịch vụ phổ biến nhất của Amazon, đồng thời là thành phần chính của nền tảng điện toán đám mây Amazon được ra mắt vào năm 2006. Amazon EC2 hiện đang được sử dụng rộng rãi, nhưng mức độ phổ biến của một dịch vụ khác của Amazon có tên là Lambda (ra mắt năm 2014) cũng đang ngày càng tăng. Bài viết trên blog hôm nay sẽ so sánh hai nền tảng AWS Lambda và EC2 để giúp bạn đưa ra lựa chọn phù hợp nhất cho môi trường của mình.

NAKIVO cho sao lưu AWS EC2

NAKIVO cho sao lưu AWS EC2

Sao lưu các phiên bản Amazon EC2 lên EC2, AWS S3 và tại chỗ. Các tùy chọn chống phần mềm tống tiền. Khôi phục nhanh các phiên bản và đối tượng ứng dụng.

AWS EC2 là gì?

AWS EC2 (Amazon Web Services Elastic Compute Cloud) là một dịch vụ cho phép sử dụng máy ảo được gọi là phiên bản EC2 trong đám mây và cung cấp tính linh hoạt. Bạn có thể thay đổi dung lượng đĩa, hiệu suất Bộ xử lý, bộ nhớ, v.v. bất cứ khi nào cần. Bạn có thể chọn hình ảnh cơ sở với hệ điều hành cần thiết đã cài đặt sẵn (OS) như Linux hoặc Windows và sau đó cấu hình hầu hết các cài đặt OS cũng như cài đặt các ứng dụng tùy chỉnh. Bạn có quyền truy cập root cho các phiên bản Amazon EC2 của mình và có thể tạo thêm người dùng. Quản lý mọi thứ bạn cần và kiểm soát hoàn toàn các phiên bản EC2 của bạn bao gồm việc khởi động lại và tắt phiên bản. Danh mục của dịch vụ web AWS EC2 được biết đến như là Cơ sở hạ tầng dưới Dạng Dịch vụ. AWS EC2 có thể được sử dụng để lưu trữ đám mây – bạn có thể triển khai máy chủ như là máy ảo (các phiên bản) trong đám mây.

AWS Lambda là gì?

AWS Lambda là một nền tảng tính toán cho phép bạn chạy một đoạn mã được viết bằng một trong những ngôn ngữ lập trình hỗ trợ như Java, JavaScript hoặc Python khi một kích hoạt liên kết với một sự kiện được kích thích. Bạn không cần phải cấu hình một máy chủ ảo và môi trường để chạy một ứng dụng bạn đã viết. Chỉ cần chèn mã chương trình của bạn (gọi là hàm Lambda trong trường hợp này) vào giao diện AWS Lambda, gán hàm Lambda với sự kiện và chạy ứng dụng trong đám mây khi cần thiết, mà không cần lo lắng về quản lý máy chủ và cấu hình môi trường. Theo cách này, bạn có thể tập trung vào ứng dụng của mình, không phải vào quản lý máy chủ—đó là lý do AWS Lambda được gọi là không cần máy chủ.

Một sự kiện sau đó ứng dụng của bạn được thực thi có thể là tải lên một tệp lên thùng Amazon S3, thực hiện thay đổi trong bảng DynamoDB, nhận yêu cầu HTTP đến dịch vụ API Gateway, v.v. Sau khi cấu hình một hàm để chạy khi một sự kiện xảy ra, ứng dụng của bạn sẽ được thực thi tự động sau mỗi sự kiện mới.

Như để phân loại, Lambda là một triển khai của Chức năng dưới Dạng Dịch vụ (FaaS) của Amazon. Trên bảng dưới đây, bạn có thể thấy mức độ quản lý cho mỗi loại dịch vụ bắt đầu từ việc sử dụng máy chủ vật lý và so sánh chúng. Các mức độ thấp nhất (quản lý bởi người dùng yêu cầu) được đánh dấu bằng màu xanh lá cây và các mức độ cao hơn (quản lý được cung cấp bởi nhà cung cấp) được đánh dấu bằng màu xanh dương. Do đó, khi sử dụng máy chủ vật lý, bạn có thể quản lý phần cứng và tất cả các mức độ cao hơn. Khi sử dụng Cơ sở hạ tầng như một dịch vụ (IaaS) như AWS EC2, bạn có thể quản lý hệ điều hành trên các Máy ảo được cung cấp (các phiên bản EC2). Ở cấp độ Nền tảng như một dịch vụ (PaaS), bạn có thể chạy ứng dụng của mình cần phải được biên dịch trước khi chạy. Khi sử dụng Chức năng như một Dịch vụ (FaaS) như AWS Lambda, bạn không cần biên dịch ứng dụng của mình – chỉ cần chèn mã của bạn vào giao diện được cung cấp bởi MSP (nhà cung cấp dịch vụ quản lý). SaaS (Phần mềm như một Dịch vụ), được đề cập để so sánh trong bảng, chỉ cho phép bạn sử dụng các ứng dụng làm sẵn (ứng dụng được tạo bởi nhà cung cấp) trong đám mây bằng cách sử dụng một client mỏng hoặc trình duyệt web.

AWS Lambda vs EC2 - comparing the management level for cloud services

AWS EC2 vs Lambda: Trường hợp sử dụng

AWS EC2 có nhiều trường hợp sử dụng vì gần như mọi thứ đều có thể được cấu hình khi sử dụng dịch vụ này. Các trường hợp sử dụng phổ biến nhất của AWS EC2 là:

  • Lưu trữ trang web
  • Phát triển và thử nghiệm ứng dụng hoặc môi trường phức tạp
  • Tính toán hiệu suất cao
  • Phục hồi sau thảm họa

Các trường hợp sử dụng chung của AWS Lambda:

  • Tự động hóa tác vụ
  • Xử lý các đối tượng được tải lên Amazon S3
  • Phân tích log theo thời gian thực
  • Lọc và chuyển đổi dữ liệu theo thời gian thực

Hãy xem xét một ví dụ cụ thể. Hãy tưởng tượng rằng trang web của bạn sử dụng một bucket Amazon S3 để lưu trữ nội dung trang web bao gồm hình ảnh, video, tệp âm thanh, v.v. Khi một tập tin hình ảnh hoặc video mới được tải lên, bạn cần tạo một hình ảnh xem trước cho trang web của bạn được sử dụng như một liên kết đến hình ảnh hoặc video toàn bộ kích thước. Việc tạo hình ảnh xem trước thủ công có thể là một công việc nhàm chán và tốn nhiều thời gian. Trong trường hợp này, bạn có thể tạo một chức năng Lambda có thể tự động thay đổi kích thước hình ảnh dựa trên hình ảnh đã tải lên, đổi tên hình ảnh đó và lưu trữ hình ảnh mục tiêu vào thư mục thích hợp. Bạn có thể cấu hình chức năng Lambda để được thực thi ngay sau sự kiện tải tệp hình ảnh gốc lên bucket Amazon S3 được trang web của bạn sử dụng.

AWS EC2 vs Lambda: Nguyên tắc làm việc

EC2 . Như bạn có thể nhớ, khi sử dụng AWS EC2, bạn vận hành với các Máy ảo (VM) được gọi là phiên bản EC2. Bạn có thể thêm phần cứng ảo (đĩa ảo, giao diện mạng, bộ xử lý, bộ nhớ) vào một phiên bản EC2, cũng như bắt đầu, dừng và khởi động lại một phiên bản VM. Các phiên bản EC2 có thể hoạt động với hai loại lưu trữ – Lưu trữ Block Elastic (EBS) và các bucket S3. Bạn có thể sử dụng một hình ảnh đã được cấu hình sẵn với hệ điều hành đã cài đặt và tạo hình ảnh máy Amazon (AMI) tùy chỉnh của riêng mình. Dịch vụ đám mây EC2 cung cấp tính năng mở rộng quy mô tự động và cân bằng tải. Các phiên bản EC2 có thể hoạt động kết hợp với hầu hết các dịch vụ web khác của Amazon, chẳng hạn như S3, ECS, Route53, CloudWatch, v.v. .

Lambda . Khi sử dụng AWS Lambda, ứng dụng của bạn (hàm Lambda) sẽ chạy trong một container mà bạn không cần phải can thiệp. Container này chứa mã nguồn và các thư viện. Các tài nguyên được Amazon cung cấp theo nhu cầu của ứng dụng, và việc mở rộng quy mô diễn ra tự động và liền mạch. Bạn không thể kiểm soát cả container đang chạy ứng dụng của mình lẫn instance EC2 mà container đó đang chạy trên đó (bạn không biết gì về chúng vì cơ sở hạ tầng nền tảng không khả dụng cho người dùng Amazon Lambda). Tham khảo bảng trên.

AWS Lambda có thể được xem như một khung làm việc của EC2 Container Service (ECS), sử dụng container để chạy một đoạn mã đại diện cho ứng dụng của bạn. Chu kỳ sống của mỗi container rất ngắn. Hàm Lambda đang chạy không lưu trạng thái của nó. Nếu bạn muốn lưu kết quả, chúng cần được lưu trữ trong một kho dữ liệu, ví dụ như trong một bucket Amazon S3. Bạn có thể cấu hình mạng ảo cho hàm Lambda, ví dụ để kết nối với Amazon RDS (Amazon Relational Database Service). Lambda bao gồm nhiều thành phần: các lớp (layers), môi trường hàm (function environment) và trình xử lý (handler). Các trình kích hoạt (triggers) là yếu tố kích hoạt Lambda. Lambda là một hàm được thực thi bởi các yêu cầu từ các trình kích hoạt.

Danh sách đầy đủ các bộ kích hoạt có sẵn:

  • API Gateway
  • AWS IoT
  • Alexa Skills Kit
  • Alexa Smart Home
  • Application Load Balancer
  • CloudFront
  • CloudWatch Events
  • CloudWatch Logs
  • CodeCommit
  • Cognito Sync Trigger
  • DynamoDB
  • Kinesis
  • S3
  • SNS
  • SQS

API Gateway là một dịch vụ đặc biệt cho phép các nhà phát triển kết nối các ứng dụng không thuộc AWS với các ứng dụng AWS và các tài nguyên khác.

AWS EC2 so với Lambda: Phiên bản/Ảnh chụp nhanh

EC2 . Một hệ thống phức tạp của ảnh chụp nhanh có sẵn cho các khối lưu trữ EBS (Elastic Block Storage) của các phiên bản AWS EC2. Bạn có thể tạo các ảnh chụp nhanh gia tăng và khôi phục về trạng thái cần thiết của một phiên bản EC2. Ảnh chụp nhanh đa khối lưu trữ có thể được sử dụng cho các khối lượng công việc quan trọng, ví dụ như cơ sở dữ liệu sử dụng nhiều khối lưu trữ EBS.

Lambda . Hệ thống quản lý phiên bản tiện lợi được hỗ trợ cho quản lý tốt hơn các hàm Lambda. Bạn có thể gán số phiên bản cho mỗi bản sao mã tải lên và sau đó thêm các bí danh chỉ tới phiên bản mã phù hợp. Mỗi số phiên bản bắt đầu từ 1 và tăng dần lên. Bạn có thể phân loại hàm Lambda thành alpha, beta và sản xuất, chẳng hạn. Tên tài nguyên Amazon được gán cho mỗi phiên bản hàm Lambda khi xuất bản và không thể thay đổi sau này.

AWS EC2 vs Lambda: An toàn

EC2 . Bạn nên lưu ý đến các phiên bản EC2 của mình và tất cả các thành phần bên trong các phiên bản. Bạn có thể tự cấu hình tường lửa cho phiên bản EC2 của mình – Amazon cung cấp VPC (Đám mây riêng ảo) Firewall để kiểm soát lưu lượng và đảm bảo an toàn cho các phiên bản EC2 trong đám mây. Bạn có thể thiết lập và cấu hình phần mềm diệt virus cho các phiên bản EC2 của mình, tạo vai trò IAM, chỉ định quyền, tạo nhóm an toàn, v.v. Patch Manager của AWS Systems Manager cho phép bạn cài đặt cập nhật hệ điều hành và bản vá an toàn tự động. Bạn có thể cấu hình AWS để chụp snapshot trước khi cài đặt một bản vá hoặc cập nhật để tránh các vấn đề có thể xảy ra. Tạo cặp khóa để truy cập phiên bản EC2 nếu cần. Bạn nên chú ý hơn đến an toàn khi sử dụng AWS EC2 so với khi sử dụng AWS Lambda.

Lambda . Có các quyền đến các dịch vụ AWS mà Lambda có quyền truy cập mặc định. Vai trò IAM được sử dụng để xác định các dịch vụ cần phải có sẵn cho một hàm Lambda. Đối với mỗi hàm Lambda, bạn nên cấu hình Vai trò IAM đại diện mà trên đó hàm Lambda sẽ được khởi chạy. Điều này có nghĩa là sau khi cấu hình vai trò IAM, bạn sẽ có thể kết nối hàm Lambda của mình với các dịch vụ Amazon đã được định nghĩa mà không cần sử dụng khóa hoặc các tham số ủy quyền khác.

Có thể cấu hình mã hóa giữa một hàm Lambda và S3 cũng như giữa một cổng API và Lambda với khóa KMS. Khi bạn tạo một hàm Lambda, sẽ có một khóa mã hóa mặc định được tạo. Tuy nhiên, khuyến nghị là tạo khóa KMS của riêng bạn.

So với các phiên bản EC2, hàm Lambda không yêu cầu cập nhật và bản vá an toàn. Các Container và hệ điều hành cơ bản được Amazon cập nhật tự động. Đây là lợi thế của việc sử dụng hàm Lambda xét về mặt an toàn.

AWS EC2 vs Lambda: Hiệu suất và Khả dụng

EC2 . Sau khi bật một phiên bản EC2, phiên bản sẽ chạy cho đến khi bạn tự dừng nó hoặc lên lịch lịch trình tắt máy. Khi một phiên bản EC2 đang chạy, ứng dụng sẽ thực thi gần như ngay lập tức trên phiên bản đó. Bạn có thể chạy bao nhiêu ứng dụng tùy thích đồng thời nếu hiệu suất của phiên bản EC2 cho phép điều đó. Chạy ứng dụng trên các phiên bản EC2 là một giải pháp tốt khi các ứng dụng cần phải chạy thường xuyên suốt cả ngày.

Lambda . Một hàm Lambda luôn sẵn sàng nhưng không chạy liên tục. Theo mặc định, hàm Lambda không hoạt động. Khi một kích hoạt liên kết với một sự kiện được kích hoạt, ứng dụng của bạn (hàm Lambda) được bắt đầu. Thời gian tối đa cho việc chạy hàm Lambda (timeout) giới hạn đến 900 giây (15 phút). Do đó, thực thi các ứng dụng chạy dài trên AWS Lambda không phải là một ý tưởng hay. Nếu bạn cần chạy các ứng dụng yêu cầu hơn 900 giây để hoàn thành thành công hoặc các ứng dụng có thời gian thực thi không cố định, hãy xem xét sử dụng AWS EC2. Một giới hạn khác khi chạy hàm Lambda là lượng bộ nhớ tối đa bằng 3008 MB.

1000 đến 3000 phiên bản Lambda có thể được thực thi đồng thời, tùy thuộc vào khu vực. Hãy liên hệ với hỗ trợ AWS nếu bạn muốn chạy nhiều phiên bản hơn cùng lúc.

Độ trễ giữa việc gửi yêu cầu và thực thi ứng dụng lên tới 100 mili giây đối với AWS Lambda, không giống như các ứng dụng chạy trên các phiên bản EC2 không có độ trễ này. 100ms không phải là khoảng thời gian dài, nhưng đối với một số loại ứng dụng, thời gian này có thể là rất quan trọng. Nếu ứng dụng của bạn cần tải một số dữ liệu từ một bộ chứa Amazon S3, có thể cần thêm 1 đến 3 giây trước khi thực thi ứng dụng. Hãy ghi nhớ thời gian trễ này khi bạn có kế hoạch sử dụng AWS Lambda để chạy ứng dụng.

Thời gian khởi động lạnh là một nhược điểm của các hàm Lambda. Độ trễ xảy ra khi một hàm không được thực thi trong khoảng thời gian dài, và cần có thời gian để khởi động một Container và chạy hàm trong đám mây Amazon. Sử dụng AWS Lambda để chạy ứng dụng có thể là một giải pháp tốt khi bạn có những khối lượng công việc không đồng đều, và ứng dụng cần được chạy vào các thời điểm khác nhau trong ngày với các khoảng cách dài giữa các lần thực thi ứng dụng.

AWS Lambda vs EC2: Mô hình định giá

Cả hai dịch vụ đám mây EC2 và Lambda đều sử dụng nguyên tắc trả tiền khi sử dụng. Tuy nhiên, hãy xem xét các chi tiết và sự khác biệt.

EC2 . Bạn sẽ phải thanh toán cho thời gian khi phiên bản AWS EC2 của bạn đang chạy mặc dù hàm/ứng dụng có được thực thi hay không. Giá theo giờ phụ thuộc vào hiệu suất Bộ xử lý, dung lượng bộ nhớ, hiệu suất của thẻ video và dung lượng lưu trữ được sử dụng bởi trường hợp EC2. Khi bạn cần chức năng/ứng dụng của mình luôn sẵn sàng do số lượng lớn các yêu cầu thường xuyên, việc sử dụng các trường hợp AWS EC2 có thể hợp lý hơn về mặt tài chính.

Lambda . Bạn trả tiền cho số lần thực thi ứng dụng và thời gian cần thiết để hoàn thành thực thi. Giá cho mỗi giây chạy một ứng dụng phụ thuộc vào lượng bộ nhớ được cung cấp cho ứng dụng và là $0,00001667 cho mỗi Gigabyte-giây. Thời gian thực thi ứng dụng được tính từ khi khởi động ứng dụng cho đến khi trả về kết quả hoặc dừng sau thời gian chờ. Thời gian được làm tròn lên số gần nhất mà là bội số của 100ms. Khi bạn cần khả năng sẵn sàng theo yêu cầu, giá sử dụng AWS Lambda để chạy các chức năng/ứng dụng có thể tốt hơn.

Kết luận

AWS EC2 là dịch vụ đại diện cho cơ sở hạ tầng đám mây truyền thống (IaaS) và cho phép bạn chạy các trường hợp EC2 như VMs, cấu hình môi trường và chạy các ứng dụng tùy chỉnh.

AWS Lambda là sự triển khai của Function as a Service bởi Amazon cho phép bạn chạy ứng dụng của mình mà không cần quan tâm đến cơ sở hạ tầng cơ bản. AWS Lambda cung cấp cho bạn kiến trúc serverless và cho phép bạn chạy một đoạn mã trên đám mây sau khi kích hoạt trigger sự kiện. Khi sử dụng AWS Lambda, bạn có chức năng nhỏ, không tốn kém với khả năng mở rộng và quản lý phiên bản. Bạn có thể tập trung vào viết mã, không cần cấu hình cơ sở hạ tầng.

Nếu bạn đã tính toán thấy có nhiều thời gian không tải của ứng dụng của bạn trên trường hợp EC2 luôn chạy, hãy xem xét sử dụng AWS Lambda mà bạn không cần phải trả tiền cho thời gian không tải nếu không có yêu cầu chạy ứng dụng. Nếu có số lượng lớn các yêu cầu thường xuyên chạy ứng dụng của bạn, có thể tốt hơn để triển khai ứng dụng trên trường hợp EC2 luôn chạy.

Sử dụng AWS EC2 rất tốt để chạy các ứng dụng hiệu suất cao, ứng dụng chạy dài hạn, và các ứng dụng không được có sự chậm trễ khi bắt đầu. Nếu bạn sử dụng các trường hợp AWS EC2, đừng quên sao lưu chúng để tránh mất dữ liệu của bạn. NAKIVO Backup & Replication là một giải pháp bảo vệ dữ liệu tất cả trong một có thể bảo vệ các trường hợp EC2 ngoài các VMs VMware vSphere, Hyper-V VMs và máy chủ vật lý.

Dùng thử NAKIVO Backup & Replication

Dùng thử NAKIVO Backup & Replication

Đăng ký dùng thử miễn phí để khám phá toàn bộ các tính năng bảo vệ dữ liệu của giải pháp này. 15 ngày miễn phí. Không có bất kỳ giới hạn nào về tính năng hay dung lượng. Không cần thẻ tín dụng.

Có thể bạn cũng quan tâm