3.4.1. アップロードファイル管理

3.4.1.1. Overview

本ガイドラインでは、クラウドネイティブなアプリケーションにおけるアップロードファイルの管理方法について説明する。

Note

本ガイドラインでは、クラウド環境を利用する場合の留意点のみを説明し、ファイルアップロードを行う機能そのものの実装方法については説明しない。

ファイルアップロードを行う機能の実装方法については Macchinetta Framework for Java (5.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を使用してストレージサービスへのファイル保存を行う事ができる。

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