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ập nhật lần cuối
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.
- 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.
- Đư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.
- 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).
- 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ụ.
- 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.