Bí ẩn cái lỗi file upload

Upload ảnh product, nhưng server chết là mất hết ảnh.

Trong nhiều dự án MVP, file upload được lưu thẳng vào ổ cứng server. Nghe thì đơn giản, nhưng khi server crash hoặc scale sang nhiều instance, ảnh biến mất, hệ thống “toang”. Đây là một sai lầm phổ biến nhưng dễ khắc phục.

Khi cả thế giới biết server sẽ crash, trừ team mình.

Lỗi phổ biến: Lưu file lên server

Team thường chọn cách lưu file vào thư mục /uploads trên server vì:
  1. Đơn giản: Chỉ cần một dòng code move_uploaded_file.
  2. Nhanh: Không cần cấu hình gì thêm.
Nhưng vấn đề là:
  • Mất dữ liệu: Server chết, file đi luôn.
  • Scale khó: Nhiều instance không đồng bộ file.
  • Hết dung lượng: Ổ cứng đầy, hệ thống treo.

Giải pháp: Dùng cloud storage

Thay vì lưu local, hãy:
  • Dùng cloud storage: AWS S3, Google Cloud Storage, hoặc MinIO nếu muốn tự host.
  • Tách biệt URL: File upload trả về URL từ cloud, không phụ thuộc backend.
  • Backup và scale: Nếu buộc lưu local (vì chi phí), đảm bảo có backup và dùng NFS để đồng bộ file giữa các server.

Ví dụ: Khi user upload ảnh, lưu vào S3 bucket, trả về URL như: https://s3.amazonaws.com/bucket/image.jpg.

🎯 Tóm lại: Lưu file lên cloud storage giúp hệ thống bền vững, dễ scale. Đừng để ổ cứng local thành “hố đen” nuốt file của bạn.

Post a Comment

Mới hơn Cũ hơn