Theo Gartner, dự báo đến năm 2023, 70% doanh nghiệp sẽ sử dụng ít nhất ba ứng dụng container trong sản xuất. Mô hình Container và Kubernetes nằm trong số những động lực hàng đầu nhằm đổi mới hệ thống thông tin doanh nghiệp và chuyển đổi số.

Container là cơ chế ảo hóa tối giản, ở đó, lập trình viên đóng gói các thư viện cần thiết để chạy ứng dụng vào một gói ứng dụng (container image). Gói này có thể được triển khai một cách dễ dàng, linh hoạt và tương đối độc lập trên các máy chủ ảo hóa.

Để quản lý và vận hành container trên quy mô lớn, chúng ta cần một công cụ điều phối container có thể tự động hóa việc quản lý, triển khai và mở rộng các cluster của bạn.

Nếu đang chạy container trên AWS, bạn có thể chọn từ một số tùy chọn dịch vụ sau đây:

  • Amazon Elastic Container Service (Amazon ECS)
  • Amazon Elastic Kubernetes Service (Amazon EKS) 

So sánh Công nghệ

1. Amazon Elastic Container Service (Amazon ECS)

Amazon ECS là một nền tảng của Amazon Web Services, giúp điều phối container và có thể mở rộng linh hoạt để chạy, dừng và quản lý các container trong một cluster. Các container được coi như một phần của Task definition.

Bạn có thể sử dụng Amazon ECS ​​với các EC2 instances hoặc AWS Fargate.

A. ECS + EC2 instances

Ưu điểm:

  • Toàn quyền kiểm soát loại EC2 instance được sử dụng.
  • Các spot instances giúp giảm tới 80-90% chi phí Cloud.

Nhược điểm:

  • Bạn phải để ý đến các security patches, network security, và scalability trên cluster (tuy nhiên bạn có thể sử dụng cơ chế service auto scaling của ECS).

Chi phí:

  • Bạn phải trả tiền cho các tài nguyên là EC2 instances  VPC networking.

B. ECS + AWS Fargate

Ưu điểm:

  • Không cần quản lý máy chủ (instance)
  • AWS tiếp quản tính khả dụng và khả năng mở rộng của container.

Mẹo: Để tránh ứng dụng của bạn không khả dụng, hãy chọn kết hợp CPU và bộ nhớ phù hợp.

  • AWS Fargate Spot cho phép chạy interruption tolerant ECS Tasks với mức giá giảm tới 70% so với giá của Fargate

Nhược điểm:

  • ECS + Fargate chỉ hỗ trợ một chế độ mạng (awsvpc), hạn chế quyền kiểm soát của bạn đối với networking layer

Chi phí:

  • Bạn chỉ trả tiền cho CPU và RAM đã lựa chọn cho AWS Fargate.
ECS with EC2 instances vs ECS with AWS Fargate

2. Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS cung cấp và quản lý Kubernetes control plane. Để chạy khối lượng công việc, EKS thiết lập control plane và Kubernetes API trong cơ sở hạ tầng AWS được quản lý.

Ưu điểm:

  • Không cần cài đặt, vận hành và bảo trì Control Plane .
  • Có thể chạy khối lượng công việc bằng các công cụ K8s gốc như Kubectl, Kubernetes Dashboard, Helm và Terraform.
  • Tự động hóa load distribution và parallel processing tốt hơn kỹ sư con người.
  • Tất cả nội dung Kubernetes tích hợp liền mạch với các dịch vụ AWS và các ứng dụng chạy trên EKS tương thích với các ứng dụng trong môi trường Kubernetes. Bạn có thể chuyển sang EKS mà không cần thay đổi mã.

Nhược điểm:

  • Việc triển khai yêu cầu cấu hình nâng cao.
  • Bạn cần sẵn sàng xử lý mức độ mở rộng của Kubernetes trước khi chọn phương án này.

Amazon EKS với Amazon ECS – Sự khác biệt chính

FeatureAmazon ECSAmazon EKS
GiáMiễn phí0,1 USD/giờ/ Kubernetes cluster
Triển khaiDễ triển khaiThiếu control planeCấu hình và triển khai trực tiếp trên AWSCần ít chuyên môn và kiến thức vận hành hơnTriển khai phức tạpCấu hình và triển khai pods trên Kubernetes trướcYêu cầu cấu hình chuyên nghiệp
Tính linh hoạt cho multi cloudCông nghệ độc quyền của AWSRủi ro về vendor lock-inOpen sourceCung cấp khả năng di động đầy đủ giữa các dịch vụ đám mây khác nhau
NetworkingSố lượng ENI/instance hạn chếCó thể không hỗ trợ tất cả container chạy trên một instance cụ thểLinh hoạt hơn trong việc thiết lập mạngCó thể chia sẻ ENI giữa nhiều nhóm và add thêm nhóm trên một instance
Cộng đồng Hỗ trợHạn chế về cộng đồng hỗ trợCó AWS supportCộng đồng lớn với nhiều supportTài nguyên và công cụ duy trì cộng đồng

Nên chọn Amazon EKS lúc nào:

  • Khi bạn cần kiểm soát chi tiết việc đặt các container
  • Khi bạn yêu cầu nhiều chế độ mạng hơn
  • Khi bạn muốn kiểm soát nhiều hơn công cụ của mình

Nên chọn Amazon ECS lúc nào:

  • Khi chuyên môn và tài nguyên DevOps hạn chế
  • Khi bạn không có thời gian hoặc nguồn lực để chọn từ nhiều tiện ích bổ sung khác nhau (Amazon ECS chỉ cung cấp một tùy chọn trong mỗi danh mục)
  • Khi Kubernetes quá phức tạp

Amazon EKS vs. Amazon ECS – Ví dụ về so sánh chi phí

amazon eks vs amazon ecs_so sanh chi phi

Tối ưu hóa quản lý và vận hành ứng dụng chạy container bằng giải pháp tự động hóa

Amazon ECS là một giải pháp tốt cho những người bước đầu bước chân vào thế giới container. Bạn có thể dễ dàng di chuyển container workload của mình sang một dịch vụ được quản lý mà không cần đầu tư trả trước quá lớn.

Nhưng nếu quyền kiểm soát và tính linh hoạt khi di chuyển trên các dịch vụ đám mây khác nhau quan trọng hơn và bạn có kinh nghiệm với Kubernetes, thì Amazon EKS là một giải pháp tốt hơn. Sau đó, bạn có thể tự do tích hợp các ứng dụng của mình với công cụ Kubernetes nguồn mở.

Cho dù bạn chọn Amazon ECS, Amazon EKS hay AWS Fargate, bạn vẫn cần một giải pháp giúp phân tích và tối ưu hóa chi phí đám mây.