ADR-007: Docker Compose trên 2 VM (Không Kubernetes)¶
Trạng thái¶
Accepted
Ngày¶
2026-04-08
Người quyết định¶
Tech Lead
Architecture Drivers¶
D4 (Đơn giản vận hành), D8 (Tiết kiệm chi phí)
Bối cảnh¶
Hệ thống triển khai on-premise tại Data Center Thành phố. Đội 2 senior fullstack không có Ops/SRE riêng. Hệ thống có ~10 container (NGINX, Backend, Frontend, Matching Service, Keycloak, PostgreSQL Primary/Replica, Redis, MinIO, Monitoring stack).
Các Phương Án Xem Xét¶
Phương án A: Docker Compose trên 2 VM¶
- Ưu điểm: Dễ hiểu và vận hành; đội 2 người quản lý được; hành vi dự đoán được; local dev parity; không cần học K8s
- Nhược điểm: Không auto-scaling; không self-healing; failover thủ công; không rolling deployment
Phương án B: Kubernetes (K3s hoặc full K8s)¶
- Ưu điểm: Auto-scaling; self-healing; rolling deployment; service mesh
- Nhược điểm: Overhead vận hành rất lớn; cần K8s expertise; overkill cho 10 container trên 2 VM; K8s on-premise đặc biệt phức tạp
Quyết Định¶
Sử dụng Phương án A: Docker Compose trên 2 VM. VM-App chứa application containers, VM-DB chứa data containers. Đủ cho yêu cầu GĐ1 (99.5% uptime, RTO < 4h).
Ngưỡng chuyển đổi: Xem xét K8s khi cần > 3 VM hoặc auto-scaling trở nên quan trọng.
Hệ Quả¶
Tích cực¶
- Đội dành thời gian cho tính năng, không phải hạ tầng
- Triển khai đơn giản:
docker compose up -d - Dễ debug và giám sát
Tiêu cực¶
- Scaling và failover thủ công
- Không zero-downtime deployment (downtime ngắn khi restart)
Liên Quan¶
- ADR-002 (Modular Monolith — giữ số lượng service thấp)