Cập nhật Gần Nhất: 10/11/2024
Xin chào các bạn! 👋
Lại là mình đây! Hôm nay mình sẽ chia sẻ với các bạn cách triển khai một dự án e-commerce theo kiến trúc microservices bằng Docker, dựa trên một demo tuyệt vời từ Google: microservices-demo. 🚀
Mục tiêu của bài viết
Trong bài viết này, mình sẽ hướng dẫn các bạn clone dự án, build từng service và chạy toàn bộ hệ thống để có cái nhìn tổng quan về cách hoạt động của kiến trúc microservices. Mục tiêu chính là:
- Thể hiện quy trình Dockerize và triển khai microservices mà không gặp lỗi.
- Nhận diện và xử lý các vấn đề phát sinh trong quá trình build.
Tổng quan về Dự án Microservices
Dự án này bao gồm 12 service chính, một số trong đó sử dụng các ngôn ngữ lập trình khác nhau. Sơ đồ kiến trúc có sẵn trong repo giúp chúng ta hình dung được sự phụ thuộc giữa các service, giúp dễ dàng hơn trong việc debug sau này.
Danh sách Các Service
Service | Ngôn ngữ | Mô tả |
---|---|---|
frontend | Go | HTTP server không yêu cầu đăng nhập. |
cartservice | C# | Lưu trữ sản phẩm trong giỏ hàng. |
productcatalogservice | Go | Cung cấp danh sách sản phẩm. |
currencyservice | Node.js | Chuyển đổi tiền tệ. |
paymentservice | Node.js | Xử lý thanh toán. |
shippingservice | Go | Dự đoán chi phí vận chuyển. |
emailservice | Python | Gửi email xác nhận. |
checkoutservice | Go | Điều phối quá trình đặt hàng. |
recommendationservice | Python | Đề xuất sản phẩm. |
adservice | Java | Cung cấp quảng cáo văn bản. |
loadgenerator | Python/Locust | Mô phỏng hành vi mua sắm. |
Bắt đầu với Docker
1. Cài đặt yêu cầu
Trước hết, đảm bảo máy của bạn đã cài đặt Docker. Sau đó, clone dự án từ GitHub:
git clone https://github.com/GoogleCloudPlatform/microservices-demo.git
2. Dockerize Từng Service
Lần 1: Dockerize các Service Độc Lập
Bắt đầu với những service không phụ thuộc vào bất kỳ service nào khác:
adservice
productcatalogservice
cartservice
shippingservice
currencyservice
paymentservice
emailservice
Trong terminal, điều hướng vào thư mục tương ứng và chạy lệnh build cho từng service:
bash
docker build -t <tên-service> .
Sau khi hoàn tất, chúng ta sẽ cấu hình file docker-compose.yml
để chạy các service này cùng với Redis như sau:
yml
services:
adservice:
image: adservice
redis:
image: redis:6-alpine
... (các service khác)
Khởi chạy với:
docker compose up -d
Lần 2: Dockerize Các Service Phụ Thuộc
Tiến hành tương tự cho các service recommendationservice
, frontend
, checkoutservice
, loadgenerator
. Hãy nhớ xây dựng lại các Dockerfile nếu cần thiết.
3. Cấu hình môi trường
Trong file docker-compose.yml
, mọi biến môi trường cần thiết đã được trích xuất từ file manifest Kubernetes tương ứng. Điều này giúp đảm bảo các service có thể giao tiếp với nhau thành công.
4. Chạy Hệ Thống Đầy Đủ
Cuối cùng, sau khi hoàn tất việc cấu hình và Dockerize, hãy chắc chắn rằng tất cả các service đang chạy bằng lệnh:
docker compose ps
Kết luận
Hy vọng bài hướng dẫn này sẽ giúp bạn có cái nhìn rõ ràng về cách Dockerize một dự án microservices và triển khai nó một cách hiệu quả. Hãy để lại câu hỏi hoặc ý kiến dưới bài viết, mình sẽ rất vui lòng hỗ trợ! Chúc các bạn thành công và hẹn gặp lại ở những bài viết tiếp theo!