CDP:Write Proxyパターン

提供:AWS-CloudDesignPattern
移動: 案内, 検索
寄贈したアーキテクト

インターネットストレージへの高速アップロード

目次

解決したい課題

 インターネットストレージは一般的に、読み込みに対するキャパシティーやデータの耐久性が非常に高い。しかし、冗長性を保つために複数ローケーションに書き込んでいるほか、HTTPプロトコルでクライアントと通信しているので、書き込み速度が比較的劣るという性質がある。大量データをインターネットストレージに書き込む場合に、パフォーマンスが問題になることがある。

クラウドでの解決/パターンの説明

 クライアントからインターネットストレージに直接データを転送するのではなく、仮想サーバーでデータを受け、その仮想サーバーからインターネットストレージへ転送する。クライアントから仮想サーバーへの転送では、HTTPよりも高速なプロトコル(例えばUDPベースのプロトコル)を使うことができる。また、小さいサイズのファイルが大量にある場合は、クライアント側で一度アーカイブし、仮想サーバーに転送後に解凍してインターネットストレージに転送することも可能である。仮想サーバーとインターネットストレージは同一リージョンであれば専用線で接続されているため、直接インターネットストレージに転送するよりも、仮想サーバーを経由した方がトータルの転送時間を短くできる。

実装

  • データを受け取るためのEC2インスタンスを起動する。EC2インスタンスは、最終的なデータ格納先となるS3と同一リージョンで起動する。
  • EC2インスタンス上にFTPサーバーやWebサーバー、AsperaやTsunamiUDPなどのUDP転送ソフト、もしくは転送速度をアクセラレートするようなソフトをインストールする(このサーバーを「アップロードサーバー」と呼ぶ)。
  • クライアントからアップロードサーバーにデータを転送する。小さいサイズのファイルが大量にある場合は、一旦クライアントで一つのファイルにまとめる。
  • アップロードサーバーへの転送完了後(もしくは逐次処理で)、アップロードサーバーからS3に転送する。クライアントでアーカイブした場合は、アップロードサーバーで解凍後にS3へ転送する。

構造

6wNg0ISJczU5Pz1m-A9B17.png

利点

  • S3への転送速度を速くすることができる。
  • 特に海外リージョンのS3へのアップロード時には、大幅な転送速度向上を見込める。

注意点

  • アップロードサーバーのEC2の書き込み速度(一般的にはEBSへの書き込み速度)がボトルネックとなる場合があるため、必要に応じてディスクをストライピングし(参照: Ondemand Diskパターン)、書込み性能を高くする。
  • サイズの小さいEC2インスタンスは相対的に回線が細いため、高い性能が必要な場合は大きなインスタンスを利用する。

その他

  • UDPを用いたデータ転送高速化ソリューションとしては、TsunamiUDPやAspera、SkeedSilverBulletなどがある。
  • S3への書き込み性能を高める方法として、ファイルを分割して並列に書き込む方法がある(マルチパートアップロードと呼ばれる)
  • FTPにてEC2にアップロードし、そのままS3に自動同期させるなど、高速化以外に、ユーザーの利便性を高めることも可能である。[関連ブログ 1]

関連ブログ

  1. suz-lab - blog の「"Auto Scaling"でEC2を自動復旧」( http://blog.suz-lab.com/2012/04/auto-scalingec2.html )
個人用ツール
名前空間
変種
操作
CDPメニュー
ツールボックス