Triển Khai Microservices Với Docker và Flask: Từ A Đến Z
Trong lập trình Back-end, khi ứng dụng phát triển lớn dần, kiến trúc monolithic (đơn khối) dễ trở nên nặng nề và khó bảo trì. Giải pháp hiện đại? Triển khai microservices với Docker – chia ứng dụng thành các dịch vụ nhỏ, độc lập, dễ mở rộng. Kết hợp với lập trình Back-end Flask, bạn có thể xây dựng hệ thống linh hoạt chỉ trong vài bước. Bài viết này sẽ hướng dẫn bạn từng bước từ thiết kế, container hóa với Docker, đến chạy microservices bằng Flask, kèm ví dụ thực tế và mẹo nâng cao.
Microservices Là Gì Và Tại Sao Dùng Docker?
Khái Niệm Microservices
Microservices là kiến trúc chia ứng dụng thành các dịch vụ nhỏ (services), mỗi dịch vụ tập trung vào một chức năng cụ thể (như user, product, order) và giao tiếp qua API. Không giống monolithic, microservices độc lập về code, database, và triển khai.Lợi Ích Khi Xử Lý Tác vụ Nền Với Celery
Lợi Ích Khi Triển Khai Microservices Với Docker
- Tính độc lập: Mỗi dịch vụ chạy trong container riêng, không xung đột môi trường.
- Dễ mở rộng: Tăng số container khi tải tăng – không cần scale cả hệ thống.
- Triển khai nhanh: Docker đảm bảo ứng dụng chạy giống nhau từ dev đến production.
Theo khảo sát từ CNCF (2024), hơn 80% doanh nghiệp sử dụng microservices kết hợp Docker để tối ưu hiệu suất và DevOps.
Tại Sao Dùng Docker?
Docker container hóa ứng dụng, bao gồm code, thư viện, và cấu hình – nhẹ hơn máy ảo, nhanh hơn triển khai truyền thống.
Tại Sao Chọn Flask Để Lập Trình Microservices?
Flask – một microframework của Python – lý tưởng cho microservices nhờ:
- Nhẹ và linh hoạt: Không phức tạp như Django, phù hợp dịch vụ nhỏ.
- API-focused: Dễ xây dựng RESTful API cho giao tiếp giữa các dịch vụ.
- Tích hợp tốt với Docker: Code Python đơn giản, dễ container hóa.
Đừng bỏ lỡ Khóa học KỸ SƯ LẬP TRÌNH FULLSTACK CAO CẤP – TỪ ZERO ĐẾN ĐƯỢC TRẢ TIỀN
Hướng Dẫn Từng Bước: Triển Khai Microservices Với Docker và Flask
Dưới đây là hướng dẫn chi tiết để triển khai hai microservices đơn giản: User Service (quản lý người dùng) và Order Service (quản lý đơn hàng), dùng Flask và Docker Compose để liên kết.
Bước 1: Cài Đặt Môi Trường
- Python: Đảm bảo đã cài (tải từ python.org), chạy python –version.
- Docker: Cài từ docker.com, kiểm tra bằng docker –version.
- Tạo dự án: Tạo thư mục microservices-demo, vào thư mục và chuẩn bị cấu trúc:

Bước 2: Xây Dựng User Service
Trong thư mục user_service, tạo file app.py:

Tạo file requirements.txt:

Tạo file Dockerfile:

Giải thích:
- Flask app trả danh sách user hoặc user theo ID.
- Dockerfile dùng Python 3.9, cài Flask, chạy app trên port 5000.
Bước 3: Xây Dựng Order Service
Trong thư mục order_service, tạo file app.py:

Tạo file requirements.txt:

Tạo file Dockerfile:

Giải thích:
- Order Service trả danh sách đơn hàng, gọi User Service để lấy thông tin user.
- Chạy trên port 5001, dùng requests để giao tiếp giữa dịch vụ.
Bước 4: Cấu Hình Docker Compose
Ở thư mục gốc microservices-demo, tạo file docker-compose.yml:

Giải thích:
- build: Build container từ Dockerfile trong mỗi thư mục.
- ports: Map port từ host (5000, 5001) vào container.
- networks: Tạo mạng chung để hai dịch vụ giao tiếp qua tên (user_service).
Bước 5: Chạy Và Kiểm Tra
Chạy hệ thống:

Test bằng trình duyệt hoặc Postman:
- http://localhost:5000/users → [{“id”: 1, “name”: “An”}, {“id”: 2, “name”: “Binh”}]
- http://localhost:5001/orders/1 → {“id”: 1, “user_id”: 1, “product”: “Laptop”, “user”: {“id”: 1, “name”: “An”}}
Dừng: Ctrl+C, rồi docker-compose down.
Ứng Dụng Thực Tế Của Microservices Với Docker
- E-commerce: User Service quản lý tài khoản, Order Service xử lý đơn hàng, Payment Service thanh toán.
- Hệ thống lớn: Netflix, Amazon dùng microservices để scale từng phần độc lập.
- DevOps: Dễ CI/CD khi mỗi dịch vụ có pipeline riêng.
Ví dụ: Một monolithic app mất 5 phút để deploy, microservices chỉ mất 30 giây/service!
Nhanh tay đăng ký Khóa học BOOTCAMP – LẬP TRÌNH FULL-STACK JAVASCRIPT TỪ ZERO ĐẾN CÓ VIỆC
Mẹo Nâng Cao Để Triển Khai Microservices
- Health checks: Thêm HEALTHCHECK trong Dockerfile để Docker tự kiểm tra dịch vụ sống hay chết.
- Logging tập trung: Dùng ELK Stack hoặc Fluentd để thu thập log từ tất cả container.
- API Gateway: Thêm Nginx hoặc Traefik để định tuyến request giữa các dịch vụ.
- Database per service: Mỗi dịch vụ dùng database riêng (ví dụ MySQL cho User, MongoDB cho Order).
- Orchestration: Dùng Kubernetes thay Docker Compose khi hệ thống lớn hơn.
Tài Nguyên Học Thêm
Docker Docs: https://docs.docker.com/
Flask Docs: https://flask.palletsprojects.com/en/stable/
Microservices.io: https://microservices.io/
Lời Kết
Triển khai microservices với Docker là bước tiến lớn để xây dựng hệ thống Back-end hiện đại, linh hoạt và dễ mở rộng. Với lập trình Back-end Flask, bạn có thể nhanh chóng tạo các dịch vụ nhỏ, container hóa bằng Docker, và liên kết chúng qua Docker Compose. Hãy thử hệ thống trên – thêm một Payment Service để mở rộng! Bạn đã dùng microservices bao giờ chưa? Chia sẻ trải nghiệm dưới comment nhé!
Nếu thấy bài viết bổ ích, đừng quên theo dõi ngay CyberSoft để theo dõi những bài viết khác trong tương lai!