Chọn cách chạy ứng dụng django trên server
Chạy ứng dụng với docker hay khôn docker?
Khi triển khai ứng dụng trên server thường sẽ gặp câu hởi này nếu không có chỉ thị nào khác. Đi kèm với nó thì sẽ có những ưu nhược điểm khác nhau.
Nếu dùng docker hay docker-compose thì server bắt buộc phải cần có docker. Nhân đây thì cũng liệt kê ra vài ưu nhược điểm của việc triển khai chạy ứng dụng kiểu này:
Ưu điểm:
- Có thể scale ứng dụng lên hay xuống tùy theo số lượng yêu cầu từ người dùng một cách dễ dàng. Đặc biệt là khi ứng dụng được tạo thành docker image và lưu ở một kho lưu trữ docker nào đó như docker-hub. Khi cần thêm 1 thực thể(instance) để có thể giải quyết số lượng truy cập, thì chỉ cần 2 hay 3 dòng lệnh là có thể có thêm 1 instance mới:
docker login [myaccount]
docker pull [myimage]
docker run ....
- Một ưu điểm khác nữa là một số thư viện trong ứng dụng cần thư việc hệ thống có phiên bản cao hơn hệ điều hành hoặc đôi khi hệ điều hành không hộ trợ cài thư viện hệ thống hay thư viện cần cho ứng dụng.
- File static hay media không cần phải copy ra webroot hay document root. Khi triển khai không docker thì 2 thư mục này thường được chỉ định 2 thư mục con của webroot hay documentroot. Hoặc phải tạo alias tới 2 thư mục này trong project. Còn khi chạy docker thì việc này cần làm thêm 1 số thao tác:
- Chỉ định thư mục bên trong docker container. Ví dụ: /www/static, /www/media
- Mount 2 thư mục này tới 2 thư mục con của webroot/documentRoot
Ngược điểm:
- Khi hệ thống bị reboot thì cần phải khởi động ứng dụng tự động.
- Nếu mày host bị yếu(ít RAM) thì 1 số container hay bị chết.