Chia nhỏ ứng dụng đơn khối thành các vi dịch vụ với AWS Copilot, Amazon ECS, Docker và AWS Fargate

HƯỚNG DẪN

Giới thiệu

Tổng quan

Trong hướng dẫn này, bạn sẽ triển khai một ứng dụng Node.js đơn khối lên một bộ chứa Docker, sau đó tách ứng dụng thành các vi dịch vụ mà không mất thời gian ngừng hoạt động. Ứng dụng Node.js lưu trữ một bảng tin nhắn đơn giản với các chủ đề và tin nhắn giữa những người dùng.

Tại sao điều này lại quan trọng

Kiến trúc đơn khối truyền thống rất khó để điều chỉnh quy mô. Khi cơ sở mã của một ứng dụng phát triển, việc cập nhật và bảo trì sẽ trở nên phức tạp. Việc giới thiệu các tính năng, ngôn ngữ, khung và công nghệ mới trở nên rất khó khăn, hạn chế sự đổi mới và ý tưởng mới.

Trong kiến trúc vi dịch vụ, mỗi thành phần ứng dụng chạy như một dịch vụ riêng và giao tiếp với các dịch vụ khác thông qua API được xác định rõ. Vi dịch vụ được xây dựng xoay quanh các chức năng của doanh nghiệp và mỗi dịch vụ thực hiện một chức năng đơn lẻ. Các vi dịch vụ có thể được viết bằng các khung và ngôn ngữ lập trình khác nhau và bạn có thể triển khai chúng một cách độc lập, như một dịch vụ đơn lẻ hoặc như một nhóm dịch vụ.

Những điều bạn sẽ đạt được

Trong hướng dẫn này, chúng tôi sẽ cho bạn biết cách chạy một ứng dụng đơn khối đơn giản trong bộ chứa Docker, triển khai ứng dụng tương tự như các vi dịch vụ, sau đó chuyển lưu lượng truy cập sang các vi dịch vụ mà không mất thời gian ngừng hoạt động. Sau khi hoàn thành, bạn có thể sử dụng hướng dẫn này và mã trong đó làm mẫu để xây dựng và triển khai các vi dịch vụ có trong bộ chứa của riêng bạn trên AWS.

Kiến trúc đơn khối

Toàn bộ ứng dụng Node.js được chạy trong một bộ chứa như một dịch vụ đơn lẻ và mỗi bộ chứa có các tính năng giống như tất cả các bộ chứa khác. Nếu một tính năng ứng dụng tăng vọt về nhu cầu, toàn bộ kiến trúc phải được điều chỉnh quy mô.

Kiến trúc vi dịch vụ

Mỗi tính năng của ứng dụng Node.js chạy như một dịch vụ riêng trong bộ chứa của riêng nó. Các dịch vụ có thể điều chỉnh quy mô và được cập nhật độc lập với các dịch vụ khác.

Điều kiện tiên quyết

  • Tài khoản AWS: Nếu bạn chưa có tài khoản, hãy làm theo hướng dẫn Thiết lập môi trường AWS của bạn để nhanh chóng nắm được tổng quan.
  • Cài đặt và cấu hình AWS CLI
  • Cài đặt và cấu hình AWS Copilot
  • Cài đặt và cấu hình Docker
  • Một trình soạn thảo văn bản. Đối với hướng dẫn này, chúng tôi sẽ sử dụng VS Code, nhưng bạn có thể sử dụng IDE ưa thích của bạn.

 Kinh nghiệm sử dụng AWS

Trung cấp

 Thời gian tối thiểu để hoàn thành

110 phút

 Chi phí để hoàn thành

Đủ điều kiện sử dụng Bậc miễn phí

 Yêu cầu

  • Tài khoản AWS: Nếu bạn chưa có tài khoản, hãy làm theo hướng dẫn Thiết lập môi trường AWS của bạn để nhanh chóng nắm được tổng quan.
  • Cài đặt và cấu hình AWS CLI.
  • Cài đặt và cấu hình AWS Copilot.
  • Cài đặt và cấu hình Docker.
  • Một trình soạn thảo văn bản. Đối với hướng dẫn này, chúng tôi sẽ sử dụng VS Code, nhưng bạn có thể sử dụng IDE ưa thích của bạn. 

 Dịch vụ sử dụng

 Mã

Có sẵn từ Phòng thực hành AWS trên GitHub

 Cập nhật lần cuối

Ngày 31 tháng 3 năm 2023

Mô-đun

Hướng dẫn này được chia thành các mô-đun sau đây. Bạn phải hoàn thành từng mô-đun trước khi sang mô-đun tiếp theo.

  1. Thiết lập (20 phút): Trong mô-đun này, bạn sẽ cài đặt và cấu hình AWS CLI, cài đặt AWS Copilot và cài đặt Docker.
  2. Đưa vào bộ chứa và triển khai đơn khối (30 phút): Trong mô-đun này, bạn sẽ đưa ứng dụng vào bộ chứa, sử dụng AWS Copilot để khởi tạo cụm các phiên bản điện toán EC2 được quản lý và triển khai hình ảnh của bạn dưới dạng bộ chứa chạy trên cụm.
  3. Chia nhỏ đơn khối (20 phút): Trong mô-đun này, bạn sẽ chia nhỏ ứng dụng Node.js thành nhiều dịch vụ liên kết với nhau, sau đó chuyển ảnh của từng dịch vụ sang kho lưu trữ Sổ đăng ký bộ chứa linh hoạt của Amazon (Amazon ECR).
  4. Triển khai vi dịch vụ (30 phút): Trong mô-đun này, bạn sẽ triển khai ứng dụng Node.js dưới dạng một bộ dịch vụ liên kết với nhau ở phía sau Trình cân bằng tải ứng dụng (ALB). Sau đó, bạn sẽ sử dụng ALB để chuyển lưu lượng truy cập một cách liền mạch từ đơn khối sang các vi dịch vụ.
  5. Dọn dẹp (10 phút): Trong mô-đun này, bạn sẽ chấm dứt các tài nguyên bạn đã tạo trong hướng dẫn này. Bạn sẽ dừng các dịch vụ đang chạy trên Amazon ECS, xóa ALB và xóa bộ AWS CloudFormation để chấm dứt cụm Amazon ECS, bao gồm tất cả các phiên bản EC2 cơ bản.

Trang này có hữu ích không?