私は、ファイルのアップロードを受け入れ、ユーザーが後でこれらのファイルを変更できる Rails アプリに取り組んでいます。たとえば、テキスト ファイルの内容を変更したり、サイズ変更、トリミング、回転などの画像の基本的な操作を実行したりできます。
現時点では、すべてのアプリケーション要求を処理するために Apache が Passenger で実行されているのと同じサーバーにファイルが保存されています。
セットアップの負荷を分散するために、ユーザー ファイルを専用サーバーに移動する必要があります。現在、ユーザーは 1 週間に約 10 GB のファイルをアップロードしています。これは膨大な量ではありませんが、最終的には増加します。
そのため、アプリケーション サーバーとファイル サーバー間の通信を実装する方法について、さまざまなオプションを検討しています。シンプルで誰にでもできるソリューションから始めたいと思います。後で複数のファイル サーバー間で適切にスケーリングできれば、私は大満足です。
ここに私が調査してきたいくつかの異なるオプションがあります:
- アマゾンS3. 私のアプリケーションに実装するのは少し難しいと思います。アップロードされたファイルを再度「アップロード」する複雑さが増します (後で複数回行う可能性があります)。ユーザーは私のアプリでファイルや画像を変更できることに注意してください。それ以外は、「設定して忘れる」ソリューションがいいでしょう。
- ファイル サーバー上に存在し、アプリケーション サーバー側から見たときに透過的にファイルを管理する、ある種の単純な RPC サーバー。ここではまだ標準的で十分にテストされたツールを見つけることができなかったので、これは私の考えではもう少し理論的です。ただし、GitHub で構築および使用されている Bert と Ernie は興味深いように見えますが、複雑すぎて開始することはできません。
- MogileFS も面白そうです。それが使用されているのを見たことがありません(しかし、それは私の問題です:)。
そのため、Web アプリケーションのファイル サーバーがどのように実装され、実際にどのように機能しているかについて、さまざまな (そしておそらく標準ベースの) アプローチを探しています。