Auto deploy với ECS (phần 1): Những khái niệm cơ bản trong ECS

Chào mọi người, dạo gần đây mình có khá nhiều thời gian rảnh nên mình quyết định ra một seri hướng dẫn auto deploy với ECS. Do ECS là một khái niệm khá mới mẻ, để tránh sự nhàm chán khi đọc blog nên mình chia seri ra làm nhiều phần. Trong phạm vi của bài này mình sẽ giới thiệu các kiến thức cơ bản trong ECS, do mình mới tìm hiểu về ECS kiến thức còn hạn chế, trong bài nếu có sai sót mong nhận được sự góp ý của mọi người.

Tổng quan nội dung:

  1. ECS là gì
  2. Những khái niệm cơ bản
  3. Kết luận
  4. Tài liệu tham khảo

ECS là gì?

ECS hay Amazon ECS (ECS viết tắt của Amazon Elastic Container Service) là một dịch vụ được phát triển bởi Amazon, nó giúp chúng ta thực hiện điều phối các container được quản lý toàn diện, giúp chúng ta dễ dàng triển khai, quản lý và mở rộng các ứng dụng có trong container. Không những thế ECS còn tích hợp nhiều nền tảng của AWS để cung cấp cho chúng ta một giải pháp bảo mật và dễ dàng triền khai trong cơ sở hạ tầng của Amazon ECS.

Những khái niệm cơ bản

1. Clusters

Cluster trong Amazon ECS là một nhóm các nhiệm vụ hoặc các dịch vụ. Chúng ta có thể sử dụng các Cluster để cô lập các ứng dụng của mình. Khi các nhiệm vụ của bạn được chạy trên Fargate thì các tài nguyên của Cluster sẽ được quản lý bởi Fargate

2. Containers và images

Nếu bạn muốn triển khai ứng dụng trên Amazon ECS thì các thành phần ứng dụng phải được cấu hình để chạy trong Containers. Containers là một đơn vị phát triển phần mềm được tiêu chuẩn hóa, nó chứa mọi thứ mà ứng dụng phần mềm có thể chạy.

Container bao gồm các source code liên quan, các công cụ, các thư viện liên quan,... và một container được tạo từ một template chỉ có khả năng đọc thì nó được gọi là image.

Image thường được tạo từ Dockerfile. Docker file mà một văn bản chỉ rõ các thành phần có trong Container. Khi image được tạo chúng sẽ được lưu trong registry nơi mà chúng ta có thể tải xuống và sử dụng trên các cụm cluster của mình.
image--4-

3. Task definitions

Là một tệp văn bản mô tả một hoặc nhiều container tạo thành ứng dụng (sử dụng định dạng JSON). Chúng ta có thể sử dụng nó để mô tả tối đa 10 container. Trong file thường có các thông tin như: Tham số hệ điều hành, container nào sẽ được sử dụng, cổng nào sẽ mở cho ứng dụng của chúng ta và khối lượng dữ liệu sẽ sử dụng với các container.

Ví dụ:

{
    "family": "...",
    "requiresCompatibilities": [
       ...
    ],
    "networkMode": "...",
    "memory": "...",
    "cpu": "...",
}

4. Tasks

Là việc bạn khởi tạo một Task definitions trong một cụm cluster hay nói cách khác chúng ta có thể chỉ định số task chạy trên cluster ngay sau khi một task definitions được định nghĩa.

5. Schedule tasks

Là các task đã được lên lịch trình, nó được chạy và thực thi theo một lịch trình cụ thể và dựa trên các quy tắc của Amazon EventBridge.

Nếu bạn muốn chạy các tác vụ theo các khoảng thời gian đã được định, chẳng hạn như thao tác sao lưu hoặc quét nhật ký bạn có thể tạo task schedule để thực hiện chạy một hoặc nhiều task vào một thời điểm. Khoảng thời gian thực thi các task có thể là đều đặn (một giờ, một ngày,...) hoặc cũng có thể phức tạp hơn. Chi tiết bạn có thể xem ở link

6. Services

Chúng ta có thể sử dụng Amazon ECS service để chạy và duy trì đồng thời số lượng task mong muốn của mình trong các cụm cluster.

Nguyên lý hoạt động là: Nếu có bất kỳ các task nào của bạn bị dừng và không thành công thì Amazon ECS sẽ tự khởi chạy một phiên bản khác dựa trên các task mà bạn đã định nghĩa vì thế nó luôn đảm bảo và duy trì số lượng task chạy mong muốn.

7. Container agent

Container agent được chạy trên container trong một cụm cluster Amazon ECS. Người đại diện sẽ gửi thông tin về các tác vụ đang chạy hiện tại và việc sử dụng các tài nguyên của container. Nó sẽ bắt đầu và dừng các tác vụ bất cứ khi nào nó nhận được yêu cầu từ Amazon ECS. Nếu các bạn muốn biết thêm chi tiết hãy vào link
image--6-

Tài liệu tham khảo

Bài viết trên được tham khảo từ link