Lession 3: Exploring Compute Services

K
Kai··6 min read

Serverless

Sau khi đã làm quen với Amazon EC2, bạn có thể thấy rằng dù cloud đã giúp đơn giản hóa hạ tầng, bạn vẫn phải quản lý khá nhiều thứ như OS, security hay scaling. Đây chính là lúc serverless computing xuất hiện. Với serverless, bạn không cần quan tâm đến server phía dưới. AWS sẽ tự động xử lý việc cấp phát tài nguyên, scaling, và đảm bảo hệ thống luôn sẵn sàng. Bạn chỉ cần tập trung vào việc viết code và triển khai ứng dụng.

Để hiểu rõ hơn, có thể chia compute trên AWS thành ba mức độ kiểm soát. Với các dịch vụ như EC2, bạn có toàn quyền kiểm soát nhưng cũng phải chịu toàn bộ trách nhiệm quản lý hệ thống. Khi chuyển sang các dịch vụ managed, AWS bắt đầu gánh bớt phần vận hành, nhưng bạn vẫn cần cấu hình và quản lý một số thành phần. Và ở mức cao nhất là serverless, nơi AWS gần như xử lý toàn bộ hạ tầng phía sau.

Điểm quan trọng cần hiểu là: dù là serverless, bạn vẫn chịu trách nhiệm với phần ứng dụng của mình — bao gồm code, logic và bảo mật. AWS chỉ đảm nhiệm phần hạ tầng phía dưới.

Serverless không có nghĩa là “không có server”, mà là bạn không cần quản lý server nữa. Và hãy nhớ là vì bạn phó thác cho người khác quản lý - nên cái này rất tốn tiền nếu sử dụng không hợp lý.

AWS Lambda

AWS Lambda là một dịch vụ serverless, nơi bạn chỉ cần đưa code lên và định nghĩa khi nào code đó được chạy. Toàn bộ phần còn lại như server, scaling hay phân bổ tài nguyên đều do AWS xử lý. Điều này giúp bạn tập trung hoàn toàn vào logic ứng dụng thay vì vận hành hệ thống.

Cách Lambda hoạt động khá đơn giản nhưng rất mạnh mẽ. Bạn bắt đầu bằng việc upload code lên dưới dạng một “function”. Sau đó, bạn cấu hình để function này được kích hoạt bởi một sự kiện, có thể là từ các dịch vụ AWS khác, từ HTTP request hoặc từ hành động của người dùng. Khi sự kiện xảy ra, Lambda sẽ tự động thực thi code, xử lý dữ liệu và trả về kết quả. Mọi thứ chỉ diễn ra khi cần thiết, không có chuyện server chạy liên tục trong nền.

Điểm đặc biệt của Lambda nằm ở khả năng tự động scale theo số lượng request. Khi có nhiều sự kiện xảy ra cùng lúc, Lambda sẽ tự động tạo thêm môi trường thực thi để xử lý song song. Khi không còn request, hệ thống cũng không tiêu tốn tài nguyên. Chính vì vậy, bạn chỉ bị tính phí dựa trên thời gian thực thi thực tế, tính theo từng mili giây, thay vì phải trả tiền cho một server chạy 24/7.

Lambda đặc biệt phù hợp với các hệ thống event-driven. Ví dụ, trong một ứng dụng mạng xã hội, mỗi khi người dùng upload ảnh, một Lambda function có thể được kích hoạt để resize, xử lý và lưu ảnh mà không cần một server riêng để làm việc này liên tục. Trong các ứng dụng tin tức, Lambda có thể xử lý dữ liệu và cá nhân hóa nội dung mỗi khi người dùng truy cập. Hoặc trong game online, Lambda có thể xử lý hàng nghìn sự kiện như cập nhật điểm số hay trạng thái người chơi theo thời gian thực.

Tuy nhiên, điều quan trọng cần hiểu là serverless không có nghĩa là bạn không còn trách nhiệm gì. AWS lo phần hạ tầng, nhưng bạn vẫn chịu trách nhiệm với code, logic và bảo mật của ứng dụng.

Containers trên AWS: Nhẹ hơn VM và dễ scale hơn bạn nghĩ

Khi xây dựng ứng dụng hiện đại, một trong những vấn đề lớn nhất là đảm bảo môi trường chạy luôn nhất quán. Code chạy được trên máy dev nhưng lại lỗi khi deploy lên production là chuyện xảy ra như cơm bữa. Đây chính là lý do containers ra đời. Container cho phép bạn đóng gói ứng dụng cùng toàn bộ môi trường cần thiết để chạy. Điều này giúp ứng dụng có thể hoạt động giống nhau ở mọi nơi, từ local đến production. So với máy ảo (VM), container nhẹ hơn và khởi động nhanh hơn vì không cần chạy một hệ điều hành riêng biệt, mà chia sẻ hệ điều hành với máy host.

Chính nhờ sự nhẹ và linh hoạt đó, container trở thành nền tảng cho các hệ thống hiện đại. Tuy nhiên, khi số lượng container tăng lên — từ vài cái lên hàng trăm hoặc hàng nghìn — việc quản lý thủ công gần như là không thể. Đây là lúc orchestration xuất hiện. Orchestration giúp tự động hóa toàn bộ quá trình vận hành container: từ deploy, scale cho đến giám sát. Thay vì phải tự quản lý từng container, bạn chỉ cần định nghĩa trạng thái mong muốn, và hệ thống sẽ tự đảm bảo mọi thứ luôn chạy đúng như vậy.

Trên AWS, hệ sinh thái container được xây dựng khá đầy đủ với nhiều dịch vụ khác nhau nhau:

Tiêu chí

Amazon ECS

Amazon EKS

AWS Fargate

Loại dịch vụ

Container orchestration (AWS native)

Container orchestration (Kubernetes)

Serverless compute cho container

Độ phức tạp

Thấp, dễ dùng

Cao hơn (cần hiểu Kubernetes)

Rất thấp

Quản lý server

Có (EC2) hoặc không (Fargate)

Có (EC2) hoặc không (Fargate)

Không cần quản lý server

Mức độ kiểm soát

Trung bình

Cao

Thấp

Use case

App phổ thông, team nhỏ/medium

Hệ thống lớn, enterprise, multi-cloud

Startup, workload biến động

Scaling

Tự động (kết hợp Auto Scaling)

Kubernetes scaling

Tự động hoàn toàn

Chi phí

Linh hoạt

Có thể cao hơn do complexity

Trả theo usage (serverless)

Learning curve

Thấp

Cao

Rất thấp

Các dịch vụ compute bổ sung trên AWS

Bên cạnh các dịch vụ compute phổ biến như EC2, Lambda hay container services, AWS còn cung cấp nhiều dịch vụ chuyên biệt để giải quyết các nhu cầu cụ thể trong thực tế. Thay vì phải tự thiết kế và vận hành hạ tầng cho từng bài toán riêng, bạn có thể sử dụng các dịch vụ này để rút ngắn thời gian triển khai và giảm đáng kể công sức quản lý.

Từ việc deploy ứng dụng web nhanh chóng, xử lý batch workload quy mô lớn, đến xây dựng hệ thống hybrid cloud — mỗi dịch vụ đều được thiết kế để tối ưu cho một use case nhất định. Việc hiểu rõ các lựa chọn này sẽ giúp bạn chọn đúng công cụ, đúng bài toán và tận dụng tối đa sức mạnh của AWS.

Service

Mô tả

Đặc điểm chính

Use case phù hợp

AWS Elastic Beanstalk

Dịch vụ fully-managed để deploy và quản lý ứng dụng

Tự động provision, scaling, load balancing, monitoring

Web app, API, microservices, backend mobile

AWS Batch

Chạy batch workloads quy mô lớn

Tự động schedule, scale và tối ưu tài nguyên

Big data, ML training, scientific computing

Amazon Lightsail

VPS đơn giản, giá cố định

Dễ dùng, ít cấu hình, all-in-one (compute, storage, network)

Website nhỏ, blog, dev/test

AWS Outposts

Mở rộng AWS xuống on-premises

Hybrid cloud, hạ tầng AWS tại data center nội bộ

Low latency, compliance, legacy system

Hết bài

Sau tất cả, bạn có thể thấy AWS không chỉ cung cấp một cách chạy ứng dụng, mà cung cấp nhiều cách — từ EC2, serverless, containers cho đến các dịch vụ chuyên biệt — mỗi cái phù hợp với một bài toán khác nhau. Điều quan trọng không phải là dùng cái gì “xịn nhất”, mà là chọn đúng công cụ cho đúng nhu cầu của business, của hệ thống.