CHƯƠNG 12 · Capstone: Docker → Kubernetes•BÀI 45 / 80

Capstone architecture: Web, API, queue

Nhìn toàn bộ ứng dụng như một chuỗi dữ liệu và trách nhiệm.

Ứng dụng◷ 4 phút đọc1/4 trong chương

Nắm bản chất

Buổi 12 ghép frontend Nginx, API FastAPI, Redis Streams, Worker và PostgreSQL thành một ứng dụng xử lý jobs. API cung cấp /api/health/live, /api/health/ready, /api/jobs và Prometheus /metrics; Worker tiêu thụ message rồi cập nhật kết quả bền vững.

Tách API và Worker giúp scale độc lập, nhưng tạo ra vấn đề consistency và retry. Vẽ từng luồng: tiếp nhận HTTP, lưu job, publish queue, process, ACK, poll status. Đây là bước đầu tiên để xác định nơi đặt timeout và idempotency key.

Luồng hoạt động

Browser→Nginx→FastAPI→PostgreSQL/Redis

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

python3 scripts/init_secrets.py
docker compose config --quiet
docker compose up -d --build
docker compose ps -a
python3 scripts/smoke.py

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Giải nén lab Buổi 12 rồi chạy Compose. Tạo ba jobs, ghi job IDs và quan sát trạng thái queued→completed; dùng logs để lần ngược event theo ID.

Lỗi dễ mắc

!

Trong Buổi 12, ghi PostgreSQL rồi Redis là hai thao tác không nguyên tử. Buổi 20 khắc phục bằng Transactional Outbox; đừng coi hai thao tác này là exactly-once.

Tự kiểm tra

Tại sao API và Worker tách thành hai Deployments?Xem đáp án ↗

Chúng có lifecycle, tài nguyên và nhu cầu scale khác nhau; HTTP và background processing được tách trách nhiệm.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.

↓ Tải mã nguồn thực hành chương 12
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗