Uncategorized

AWS Sec 2: AWS Compute

aws_compute_huongnq.id.vn

I. Giới thiệu về AWS Compute

Khái niệm

Compute as a Service là một trong những dịch vụ cốt lõi của AWS, cung cấp tài nguyên tính toán linh hoạt trên cloud. Với compute, người dùng có thể:

  • Tạo, triển khai, và vận hành các ứng dụng từ quy mô nhỏ đến lớn mà không cần đầu tư vào phần cứng vật lý.
  • Lựa chọn loại tài nguyên phù hợp (máy chủ ảo, container, serverless) để đáp ứng nhu cầu tính toán khác nhau.

Ex: Thay vì mua máy chủ vật lý tốn kém, phức tạp và phải quan tâm thêm các vấn đề duy trì điện, kết nối mạng, bạn có thể sử dụng một EC2 instance hoặc AWS Lambda để chạy ứng dụng của mình một cách nhanh chóng và linh hoạt.

Tại sao chọn AWS Compute?

AWS Compute mang lại nhiều lợi ích vượt trội cho người dùng, bao gồm:

  1. Scalability:
    • AWS cho phép bạn tăng hoặc giảm tài nguyên theo nhu cầu thực tế, đảm bảo ứng dụng hoạt động tốt ngay cả khi lưu lượng đột biến.
    • Dịch vụ như Auto Scaling giúp tự động điều chỉnh tài nguyên theo các tiêu chí được định nghĩa trước, các tiêu chí này có thể là thông số RAM, CPU, số lượng CCU…
  2. Cost-Effective:
    • Thanh toán chỉ cho tài nguyên bạn sử dụng, theo mô hình “Pay-as-you-go”.
    • Nhiều plan trong tính tiền (On-Demand, Spot Instances, Reserved Instances) giúp người dùng lựa chọn được đúng nhu cầu để có thể tiết kiệm tối đa chi phí.
  3. Wide Integration:
    • Compute trên AWS được thiết kế để tích hợp mượt mà với các dịch vụ khác như S3 (Storage), RDS (Database), và CloudWatch (Monitoring).
    • Điều này giúp xây dựng các hệ thống mạnh mẽ, dễ dàng quản lý và mở rộng.
  4. High Reliability:
    • AWS cam kết cung cấp hạ tầng đám mây với độ ổn định hàng đầu, đảm bảo ứng dụng luôn hoạt động ổn định.
  5. Global Reach:
    • Các dịch vụ compute có mặt tại nhiều khu vực trên toàn thế giới (AWS Regions), cho phép triển khai ứng dụng gần người dùng cuối để giảm độ trễ.

II. Amazon EC2 (Elastic Compute Cloud)

Khái niệm cơ bản về EC2

Amazon EC2 (Elastic Compute Cloud) là một dịch vụ cung cấp máy chủ ảo trên nền tảng đám mây AWS. EC2 cho phép bạn triển khai và quản lý các ứng dụng một cách dễ dàng, nhanh chóng mà không cần đầu tư vào hạ tầng vật lý.

  • Điểm nổi bật của EC2:
    • Tính linh hoạt cao: Tùy chỉnh cấu hình tài nguyên (CPU, RAM, lưu trữ) để đáp ứng nhu cầu cụ thể.
    • Triển khai nhanh chóng: Tạo các máy chủ ảo chỉ trong vài phút.
    • Khả năng tương thích cao: Hỗ trợ nhiều hệ điều hành như Windows, Linux và nhiều công cụ tích hợp khác.

Ex: Bạn có thể triển khai một trang web trên EC2 với Ubuntu, chạy backend bằng Node.js và lưu trữ dữ liệu trên MySQL trên RDS

Các tính năng nổi bật của EC2

1. An toàn và khả năng tăng giảm linh hoạt

  • An toàn:
    • EC2 cung cấp Security GroupsVPC (Virtual Private Cloud) để kiểm soát truy cập, bảo vệ tài nguyên khỏi các mối đe dọa bên ngoài.
    • Hỗ trợ mã hóa dữ liệu và xác thực bằng IAM roles.
  • Khả năng tăng giảm linh hoạt (Scalability):
    • Dễ dàng điều chỉnh tài nguyên dựa trên nhu cầu thực tế.
    • Tích hợp với Auto Scaling để tự động mở rộng hoặc thu nhỏ số lượng instance.

2. Khả năng khởi động nhanh

  • EC2 cho phép khởi chạy một hoặc nhiều instance chỉ trong vài phút.
  • Với tính năng Amazon Machine Images (AMIs), bạn có thể dễ dàng triển khai cấu hình sẵn hoặc clone các máy chủ hiện tại.

3. Thanh toán theo nhu cầu (Pay-as-you-go)

  • EC2 sử dụng mô hình thanh toán linh hoạt, bạn chỉ trả tiền cho thời gian sử dụng thực tế.
  • Các mô hình thanh toán khác nhau (On-Demand, Reserved, Spot Instances) giúp tối ưu hóa chi phí.

Lifecycle của EC2 Instance

Các trạng thái chính trong vòng đời của EC2 Instance:

  1. Pending: Instance đang được khởi tạo.
  2. Running: Instance đã hoạt động và sẵn sàng sử dụng.
  3. Stopping: Instance đang được dừng.
  4. Stopped: Instance đã dừng lại, không bị tính phí CPU nhưng vẫn giữ chi phí lưu trữ.
  5. Terminated: Instance đã bị xóa hoàn toàn.

Lưu ý:

  • Bạn có thể Stop instance để tiết kiệm chi phí khi không sử dụng.
  • Tránh để instance ở trạng thái Running nếu không cần thiết.

EC2 Pricing Models

AWS cung cấp nhiều tùy chọn tính giá linh hoạt:

  1. On-Demand Instances:
    • Trả tiền theo giờ hoặc giây sử dụng, không cam kết dài hạn.
    • Phù hợp cho các dự án ngắn hạn, không đoán trước được lưu lượng.
  2. Reserved Instances:
    • Đặt trước tài nguyên trong 1 hoặc 3 năm để tiết kiệm chi phí (giảm đến 75%).
    • Phù hợp với các ứng dụng ổn định, lâu dài.
  3. Spot Instances:
    • Mua công suất dư thừa của AWS với giá thấp hơn (tiết kiệm đến 90%).
    • Thích hợp cho các công việc không yêu cầu tính liên tục (batch processing, data analysis).
  4. Savings Plans:
    • Cung cấp mức giảm giá linh hoạt dựa trên cam kết sử dụng trong 1 hoặc 3 năm.
    • Tích hợp cho cả EC2, Fargate và Lambda.

III. AWS Container Services

Tổng quan về dịch vụ container trên AWS

Container là một giải pháp nhẹ và hiệu quả để đóng gói ứng dụng cùng với các thư viện và phụ thuộc cần thiết, đảm bảo ứng dụng chạy đồng nhất trên các môi trường khác nhau. AWS cung cấp các dịch vụ mạnh mẽ để quản lý và vận hành container, giúp bạn triển khai và mở rộng ứng dụng nhanh chóng, an toàn.

Các dịch vụ container trên AWS gồm:

  • Amazon Elastic Container Service (ECS): Dịch vụ quản lý container hỗ trợ cả chế độ quản lý truyền thống và serverless.
  • Amazon Elastic Kubernetes Service (EKS): Dịch vụ Kubernetes được AWS quản lý.
  • AWS Fargate: Dịch vụ chạy container serverless, không cần quản lý hạ tầng.

Amazon Elastic Container Service (ECS)

Amazon ECS là dịch vụ quản lý container của AWS, được tích hợp sâu với các dịch vụ khác của AWS, giúp bạn triển khai và vận hành container dễ dàng.

  • Đặc điểm nổi bật:
    • Tích hợp chặt chẽ: ECS hoạt động mượt mà với các dịch vụ như IAM, VPC, CloudWatch, và Auto Scaling.
    • Tùy chọn triển khai: Hỗ trợ chế độ EC2 launch (quản lý cụm máy chủ) hoặc Fargate launch (serverless).
    • Khả năng mở rộng linh hoạt: ECS tự động mở rộng tài nguyên để đáp ứng nhu cầu ứng dụng.
  • Trường hợp sử dụng:
    • Triển khai microservices.
    • Xây dựng ứng dụng hiện đại với container.
    • Chạy các tác vụ batch hoặc xử lý dữ liệu.

Amazon Elastic Kubernetes Service (EKS)

Amazon EKS là dịch vụ quản lý Kubernetes của AWS, giúp triển khai và quản lý các cluster Kubernetes dễ dàng mà không cần tự vận hành hạ tầng Kubernetes.

  • Đặc điểm nổi bật:
    • Dịch vụ Kubernetes được AWS quản lý: Hỗ trợ phiên bản Kubernetes chính thức, đảm bảo tính tương thích cao.
    • Tính bảo mật cao: Tích hợp với IAM, đảm bảo kiểm soát truy cập, hỗ trợ bảo mật mạng thông qua VPC và Security Groups.
    • Hỗ trợ cả On-premises và Cloud: Kết hợp với Amazon Outposts, bạn có thể chạy Kubernetes kết hợp trên cả cloud và on-prem.
  • Trường hợp sử dụng:
    • Các ứng dụng cần tận dụng hệ sinh thái Kubernetes.
    • Các tổ chức đã sử dụng Kubernetes muốn giảm bớt chi phí quản lý hạ tầng.

AWS Fargate

AWS Fargate là dịch vụ chạy container serverless, loại bỏ hoàn toàn việc quản lý máy chủ. Bạn chỉ cần định nghĩa container của mình, Fargate sẽ lo toàn bộ phần hạ tầng phía sau.

  • Ưu điểm chính:
    • Không cần quản lý hạ tầng: Tự động cung cấp và quản lý tài nguyên.
    • Thanh toán theo nhu cầu: Chỉ trả tiền cho thời gian chạy container và tài nguyên thực tế sử dụng.
    • Tích hợp với ECS và EKS: Fargate có thể được sử dụng cùng với ECS hoặc EKS, tăng tính linh hoạt.
  • Trường hợp sử dụng:
    • Chạy các container nhỏ lẻ, không yêu cầu hạ tầng lâu dài.
    • Ứng dụng serverless với container.

So sánh các dịch vụ container AWS

Dịch vụLoại triển khaiTự quản lý hạ tầngTích hợp AWSChi phíTrường hợp sử dụng
ECSEC2, FargateCó/KhôngChặt chẽLinh hoạtMicroservices, batch tasks
EKSKubernetesCó/KhôngCaoTùy thuộc vào clusterHệ sinh thái Kubernetes
FargateServerlessKhôngChặt chẽTheo nhu cầuServerless container apps

Lợi ích của việc sử dụng container trên AWS

  • Tăng tốc triển khai: Container cho phép đóng gói ứng dụng và các phụ thuộc, giúp giảm thời gian triển khai.
  • Tính linh hoạt: AWS hỗ trợ cả các giải pháp container truyền thống (ECS, EKS) và serverless (Fargate).
  • Khả năng mở rộng: Dịch vụ tự động điều chỉnh tài nguyên container theo lưu lượng thực tế.
  • Tiết kiệm chi phí: Thanh toán linh hoạt, chỉ trả tiền cho tài nguyên sử dụng.

    IV. Serverless Compute

    Tổng quan về Serverless Compute

    Serverless Compute là mô hình điện toán không cần quản lý máy chủ, nơi các nhà phát triển chỉ tập trung vào xây dựng logic ứng dụng mà không phải lo lắng về việc vận hành hạ tầng. AWS tự động cung cấp, mở rộng và quản lý tài nguyên theo nhu cầu sử dụng.

    Serverless có các ưu điểm nổi bật như:

    • Không cần quản lý máy chủ: Loại bỏ hoàn toàn việc quản trị hạ tầng.
    • Triển khai nhanh chóng: Việc không cần quan tâm đến hạ tầng làm cho người phát triển có thể tập trung effort cho việc code, giúp deliver ứng dụng nhanh hơn.
    • Thanh toán theo nhu cầu: Chỉ trả tiền cho tài nguyên và thời gian sử dụng thực tế.
    • Tích hợp sâu với AWS: Tương thích với các dịch vụ như API Gateway, DynamoDB, S3.

    AWS Lambda: Giải pháp Serverless hàng đầu

    AWS Lambda là dịch vụ serverless compute phổ biến của AWS, cho phép chạy các đoạn code mà không cần quản lý máy chủ.

    Cách hoạt động:

    • Developer viết code và triển khai lên Lambda.
    • Lambda tự động kích hoạt khi có sự kiện (HTTP request, các trigger S3, DynamoDB, v.v.).
    • Tài nguyên được tự động cung cấp và thu hồi theo nhu cầu.

      Tính năng nổi bật:

      • Hỗ trợ đa ngôn ngữ: Python, Node.js, Java, Go, v.v.
      • Khả năng mở rộng tự động: Lambda tự điều chỉnh tài nguyên để đáp ứng số lượng yêu cầu đồng thời.
      • Tích hợp sự kiện: Làm việc với API Gateway, S3, DynamoDB, Kinesis, và nhiều dịch vụ khác.

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

        • Xử lý các tác vụ ngắn hạn, ví dụ: Resize ảnh, gửi email, xử lý dữ liệu real-time.
        • Backend cho ứng dụng serverless.
        • Kích hoạt hành động dựa trên sự kiện, ví dụ: Thay đổi file trong S3, trường hợp này thường áp dụng trong các tác vụ transform trong ETL.

        AWS Fargate: Serverless Container Compute

        AWS Fargate cũng là một giải pháp serverless compute nhưng tập trung vào container.

        • Khác biệt với Lambda:
          • Lambda dành cho tác vụ nhỏ và sự kiện ngắn.
          • Fargate phù hợp với ứng dụng containerized dài hạn hoặc phức tạp.

        So sánh Serverless Compute và Traditional Compute

        Đặc điểmServerless ComputeTraditional Compute (EC2)
        Quản lý máy chủKhông
        Khả năng mở rộngTự độngCần cấu hình
        Chi phíTheo thời gian chạyTheo tài nguyên cố định
        Thời gian khởi chạyRất nhanh (vài mili-giây)Nhanh nhưng chậm hơn Lambda
        Ứng dụng phù hợpEvent-driven, microservicesWorkloads lớn, dài hạn

        Một vài ví dụ về các trường hợp sử dụng Serverless Compute trên AWS

        • Xử lý sự kiện real-time: Khi file được upload lên S3, Lambda được kích hoạt để resize ảnh hoặc phân tích dữ liệu.
        • Xây dựng ứng dụng Backend: Kết hợp AWS Lambda với API Gateway để tạo các RESTful API không cần máy chủ. Trường hợp này phù hợp đề xây dựng các api cho các service có peak time cao, biên độ chênh lệch giữa thời điểm. Ví dụ các trang web bán vé concert, các server game.
          Tham khảo một bài viết về sử dụng serverless trong game server tại đây
        • Xử lý dữ liệu IoT: Dữ liệu từ thiết bị IoT gửi về AWS, Lambda xử lý và lưu vào DynamoDB hoặc S3, handle trigger từ S3.
        • Batch Processing: Dùng Lambda để xử lý các tác vụ hàng loạt như data transform, send notification

        V. Túm lại

        AWS cung cấp nhiều tùy chọn compute linh hoạt, từ EC2 với khả năng tùy chỉnh cao, AWS Container Services hỗ trợ container hóa, đến Serverless Compute như AWS LambdaFargate, giúp tối ưu hóa chi phí và giảm gánh nặng vận hành.

        • EC2 phù hợp cho các ứng dụng yêu cầu kiểm soát và tài nguyên lâu dài.
        • Container Services giúp quản lý và triển khai ứng dụng container dễ dàng.
        • Serverless Compute là lựa chọn lý tưởng cho ứng dụng event-driven và microservices.

        AWS cung cấp nhiều loại compute khác nhau với các đặc điểm khác nhau, phù hợp với các nhu cầu bài toán khác nhau. Việc nắm rõ được các đặc điểm này giúp các SA có thể lựa chọn đúng kiến trúc phù hợp nhất để phục vụ cho bài toán gặp phải.

        Vẫn là một câu kết quen thuộc, “không có thứ tốt nhất, chỉ có thứ phù hợp nhất”.

        Leave a Reply

        Your email address will not be published. Required fields are marked *