[1.ブラウザ] >>> [2.nginx(LB)] >>> [3.apache(WEB)] >>> [4.オブジェクトストレージ(REST API) 例:S3]
技術的に1から4に直接もしくは、1から3の完了を待たずに4へのアップロードを開始することはできるのでしょうか?
1→4
技術的には可能ですが、クライアント側にオブジェクトストレージの認証情報を持たせないといけないのでこれの保護がやりにくく、あまりやらない構成です。
1から3の完了を待たずに4へのアップロード
技術的には可能ですが、実装上2つ問題があります。
- リバースプロキシが逐次転送を実現できるか
- アプリケーション側のサーバ、ミドルウェア、フレームワークがアップロードされたデータの逐次処理をサポートしているか
どうもnginxは一旦リクエストをすべてバッファリングする実装になっているようです。ひょっとしたら今はできるようになっているかもしれません。こういう実装だとどうしようもありません。
アプリケーション側も同様で、生でHTTPを扱う範囲では「受け取ったデータを逐次転送」することは可能ですが、フレームワークなどがサポートしていなければどうしようもありません。
他の手段
データの整合性をどれだけ担保しないといけないかにもよりますが、3→4の転送を非同期処理にしてしまえば利用者から見れば最初にアップロードするまでの時間で処理が完了したように見えます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/26 09:55 編集