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サーバのローカルストレージには保存せず、クラウドベンダーが提供するストレージサービス上に保存することを推奨する。

Screen image of file upload.

仮アップロードファイルであっても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を使用してストレージサービスへのファイル保存を行う事ができる。

実装方法については アップロードファイル管理 を参照。