バックエンドとして Django を使用して安らかな Web サービスを構築しており、現在スケーリングに関心があります。次のようなアーキテクチャが必要です: http://www.djangobook.com/en/2.0/_images/scaling-4.png 高負荷でより多くの Django インスタンスを起動できます。私の問題は、ユーザーがアップロードしたコンテンツを外部化する方法がわからないことです(djangoではメディアと呼ばれます)。
私の基本的なアイデアは、Amazon S3、FTP アップロード、SMT または NFS マウント、または GridFS のようなある種のファイル データベースです。
EU はセーブ ハーバー協定を取り消し、EU 企業が EU 以外のサーバーにユーザー データを配置することについて法的な不確実性が多数存在するため、Amazon S3 や EU ベース以外のストレージ ソリューションを使用することはできません。S3 API対応のストレージサーバーであるMinioを見てきました。最新の(安定していない)リリースで動作するminioへの投稿のみを取得できましたが、取得はできませんでした。CEPH のような他の S3 互換サーバーは、私のユースケースには「大きすぎます」。
ファイルをftpサーバーにアップロードし、そこからnginxで提供することを考えました。問題は、django-storages の ftp 機能が安定していないように見え、django-resto が廃止され、メンテナンスされなくなったことです。
SMB/NFS マウントは不安定であり、ネットワーク障害のためにマウントが利用できない場合、django は書き込み対象のデータを失います。
GridFS は、非リレーショナルであり、django がリレーショナルである mongodb を使用しているため、動作しませんでした。非リレーショナル django フォークは十分に維持されていません。GridFS からファイルを提供するという点では、nginx-gridfs と mod_gridfs があり、どちらもメンテナンスされていません。
django のメディアを外部化する方法について何かアイデアはありますか?