3.4.1. アップロードファイル管理¶
3.4.1.1. Overview¶
本ガイドラインでは、クラウドネイティブなアプリケーションにおけるアップロードファイルの管理方法について説明する。
Note
本ガイドラインでは、クラウド環境を利用する場合の留意点のみを説明し、ファイルアップロードを行う機能そのものの実装方法については説明しない。
ファイルアップロードを行う機能の実装方法については Macchinetta Server Framework for Java (1.x) Development Guideline ファイルアップロード を参照されたい。
3.4.1.1.1. 仮アップロードファイルの保存¶
クラウド環境では、クラウドベンダーが提供する機能を利用してAPサーバインスタンスの動的なスケーリングが可能である。 柔軟なスケーリングを実現するため、仮アップロードファイルであってもAPサーバのローカルストレージには保存せず、クラウドベンダーが提供するストレージサービス上に保存することを推奨する。
仮アップロードファイルであってもAPサーバインスタンスのローカルストレージに保存しない理由は以下のとおり。
- ファイルを保持しているAPサーバインスタンスがスケールインによって停止・削除された場合に、ファイルが破棄されてしまう。
- ユーザの操作を継続するために、ロードバランサのスティッキーセッション機能を利用して同一ユーザのリクエストを特定のAPサーバに振り分ける必要が有るため、ユーザの操作中にスケールインを行うことができない。
- スケールアウト後に操作中のユーザのリクエストを新規のサーバインスタンスに振り分ける事ができず、柔軟な負荷分散を行えない。
Note
仮アップロードファイルに限らず、最終的なファイルの保存先についてもストレージサービスを利用することで、以下のメリットがある。
- システムの運用中であってもストレージサイズの拡張を自動的に行うことが出来る。
- ファイルを保存する物理的なストレージを分散させることでファイルI/Oが特定のストレージに集中することを防ぐ事ができるため、RDBなどに保存するよりも効率的な負荷分散を行うことが可能である。
具体的な利用方法についてはクラウドベンダーのリファレンスを参照されたい。
3.4.1.2. How to use¶
3.4.1.2.1. ストレージサービスの利用¶
クラウドベンダーが提供するストレージサービスを利用し、一時ファイルのアップロード先として利用する。 アプリケーションからの利用方法については、各クラウドサービスのリファレンスを参照されたい。
3.4.1.2.1.1. Amazon Web Service¶
クラウドベンダーとしてAWSを使用する場合、Spring Cloud for Amazon Web Services、AWS SDK for JavaおよびAmazon Simple Storage Serviceを使用してストレージサービスへのファイル保存を行う事ができる。
実装方法については アップロードファイル管理 を参照。