Furyu

[フリュー公式] Tech Blog

フリュー株式会社の技術ブログです

2011年11月29日

AWS 1ヶ月導入記 part 7 SimpleDBの性能調査

みなさん、こんにちは!フリューでモバイルサイト開発を行っている鷲見といいます。

あるソーシャルプラットフォーム上のアプリケーションを構築するプロジェクトでの、クラウド環境の導入状況をそのまま記事にしています。

前回はSimpleJPAを用いてSimpleDBを操作するプログラムについて解説しました。

クラウド1ヶ月導入記 part 1 比較編
クラウド1ヶ月導入記 part 2 見積編
Amazon Web Services 1ヶ月導入記 part 1 データベース編
Amazon Web Services 1ヶ月導入記 part 2 アーキテクチャ設計編
Amazon Web Services 1ヶ月導入記 part 3 SimpleDBの特徴と制限
Amazon Web Services 1ヶ月導入記 part 4 SimpleDBの制限を回避する
AWS 1ヶ月導入記 part 5 AWS SDK for Javaを用いたプログラミング
AWS 1ヶ月導入記 part 6 SimpleJPAを用いたプログラミング

次回からはバックアップなどと言っていたのですが、JAWS-UG Kyoto 第2回勉強会で少しお話させていただいた、SimpleDBの性能について少し掘り下げて紹介させていただきます。

なお、JAWS-UG Kyoto 勉強会第2回の私の発表資料は以下のページをご覧ください。

JAWS-UG Kyoto勉強会 第2回で発表させていただきました!

性能調査方法

東京リージョン上のEC2インスタンス(m1.small)から、各リージョンのSimpleDBへのアクセス時間を計測します。

本来であればAPIを直接呼び出すのがよいのですが、手っ取り早くAWS SDK for JavaのAPI呼び出しに該当するメソッド呼び出しにどのくらいの時間がかかるかを計測します。

AWS SDK for Javaを経由してのAPI呼び出しですので、実際にはAPIの呼び出し時間だけではなく、各種Requestオブジェクトからリクエストパラメタへの変換や、レスポンスのXMLデータから各種Resultオブジェクトへの変換の処理時間も含まれます。

選択・挿入・更新・削除のCRUDをそれぞれ100回ずつ呼び出し、その平均値を計測します。

性能調査プログラム

AWS Toolkit for Eclipseを使うとSimpleDBのサンプルプログラムを作成することができます。今回はこのSimpleDBのサンプルプログラムをベースに調査用に少し変更を加えてみました。

ソースコードはこちら(GitHub)

プログラムの引数にはSimpleDBのエンドポイントを指定します。
各リージョンのSimpleDBのエンドポイントは以下のとおりです。

Asia Pacific (Tokyo) sdb.ap-northeast-1.amazonaws.com
Asia Pacific (Singapore) sdb.ap-southeast-1.amazonaws.com
EU West (Ireland) sdb.eu-west-1.amazonaws.com
US West (N. California) sdb.us-west-1.amazonaws.com
US East (Virginia) sdb.amazonaws.com
US West (Oregon) sdb.us-west-2.amazonaws.com

調査結果詳細

Select(Select API)

Asia Pacific (Tokyo) 38.8ms
Asia Pacific (Singapore) 126.8ms
EU West (Ireland) 332.6ms
US West (N. California) 154.1ms
US East (Virginia) 234.9ms
US West (Oregon) 163.7ms

Insert(PutAttributes API)

Asia Pacific (Tokyo) 369.2ms
Asia Pacific (Singapore) 431.3ms
EU West (Ireland) 659.8ms
US West (N. California) 467.4ms
US East (Virginia) 585.3ms
US West (Oregon) 428.5ms

Update(PutAttributes API)

Asia Pacific (Tokyo) 287.8ms
Asia Pacific (Singapore) 378.0ms
EU West (Ireland) 648.5ms
US West (N. California) 351.5ms
US East (Virginia) 504.8ms
US West (Oregon) 347.4ms

Delete(DeleteAttributes API)

Asia Pacific (Tokyo) 244.8ms
Asia Pacific (Singapore) 339.7ms
EU West (Ireland) 573.2ms
US West (N. California) 339.7ms
US East (Virginia) 534.0ms
US West (Oregon) 291.8ms

調査結果の考察

各リージョン毎の差異について

当然ですが、呼び出し側のEC2インスタンスと同一リージョンのSimpleDBの呼び出しは速いのがよくわかります。

東京リージョンからの処理時間の順としては

  • 1.Asia Pacific(Tokyo)
  • 2.Asia Pacific(Singapore),US West(N. California),US West(Oregon)
  • 3.US East(Virginia)
  • 4.EU West(Ireland)

のとなりました。

2位はAsia Pacific(Singapore)がダントツかなと想像していましたが、2つのUS Westリージョンが健闘し、Asia Pacific(Singapore)とほぼ同じくらいの値を叩き出しています。

CRUDの差異について

Selectはそれなりに早い速度で結果が返ってきていますが、挿入・更新・削除は同一リージョンからの呼び出しでも1回200ミリ秒以上かかっているのがわかります。挿入・更新・削除が多く発生するアプリケーションにはSimpleDBはあまり向かないということがわかります。

まとめ

今回はSimpleDBの性能調査をJavaプログラムを作成し、実施してみました。

  • 呼び出し側と同一リージョンのSimpleDBであればそれなりに早い
  • 挿入・更新・削除といったデータ操作は少し遅い

ということがわかったかと思います。

さて、次回こそは前回から予告していた、AWSでの各種バックアップについてお話ししたいと思います。


2011年11月11日

JAWS-UG Kyoto勉強会 第2回で発表させていただきました!

みなさん、こんにちは!フリューでモバイルサイト開発を行っている鷲見といいます。

先日このブログでご紹介している事例をJAWS-UG Kyoto勉強会 第2回にて発表させていただきました。

私の発表資料はスライドシェアにアップロードしております。

当ブログで現在公開しているクラウド・AWS関係の記事は以下のとおりです。

クラウド1ヶ月導入記 part 1 比較編
クラウド1ヶ月導入記 part 2 見積編
Amazon Web Services 1ヶ月導入記 part 1 データベース編
Amazon Web Services 1ヶ月導入記 part 2 アーキテクチャ設計編
Amazon Web Services 1ヶ月導入記 part 3 SimpleDBの特徴と制限
Amazon Web Services 1ヶ月導入記 part 4 SimpleDBの制限を回避する
AWS 1ヶ月導入記 part 5 AWS SDK for Javaを用いたプログラミング
AWS 1ヶ月導入記 part 6 SimpleJPAを用いたプログラミング

ブログではまだご紹介できていない箇所・内容も多数ありますので、発表内容をより掘り下げた内容で記事を書いていきたいと思います。