ビッグデータだけじゃない amazon dynamodbの活用事例
DESCRIPTION
概要:弊社が運用するWebAPIサービスをオンプレミス環境からAWSクラウド環境へ移行させた取り組みについてご紹介します。 弊社が持つデータベースはレコード数が巨大であるものの、いわゆる「ビッグデータ」的ではないデータ構造や負荷パターンを持っています。これをAmazon DynamoDB上に展開してシステムを構築しましたが、結果としてデータの特性とAmazon DynamoDBの仕様とがうまくフィットして機能していると思います。 移行にあたって感じたAWSそのものやAmazon DynamoDBの特徴のほか、コスト面・運用面での変化についてもご紹介します。典型的なユースケースについては他のスペシャリストの方にお任せするとして、「こんな使い方もできるのか」というヒントをお伝えできればと思っています。TRANSCRIPT
![Page 1: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/1.jpg)
ビッグデータだけじゃない!Amazon DynamoDB の活用事例
Cassandra から DynamoDB への移行で見えたその特徴
2014.07.17サイバーエリアリサーチ株式会社
中西 健
TC-01
![Page 2: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/2.jpg)
中西 健 (なかにし けん)– [email protected]
サイバーエリアリサーチ株式会社 – 「どこどこ JP 」サービス担当データベースエンジニア
最近気になっている AWS サービス– Amazon Kinesis
自己紹介
![Page 3: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/3.jpg)
弊社サービスのご紹介Cassandra システム運用時の課題DynamoDB について実装とチューニングコスト比較まとめ
アジェンダ Agenda
![Page 4: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/4.jpg)
弊社サービスのご紹介
![Page 5: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/5.jpg)
アクセスユーザーの地域認識技術である IP ジオロケーションデータベース「 SURFPOINT 」を提供する、国内オンリーワン企業– http://www.arearesearch.co.jp/
IP ジオロケーション技術– インターネットに接続されたコンピューター等に割り当てられた IP アド
レスから、アクセスユーザーの位置情報やインターネット接続環境を認識・マッピングするための技術。
– インターネット広告配信・コンテンツ配信制御・アクセス解析
– 銀行・証券取引におけるオンラインセキュリティ分野での利用も注目を集めています。
サイバーエリアリサーチ株式会社
![Page 6: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/6.jpg)
IP ジオロケーション情報を提供する WebAPI– IP アドレスに「位置情報・組織情報・回線情報・気象情
報」など最大 74 種類の属性を紐付け
– 出力フォーマット: XML 、 JSON 、 JavaScript
– 用途:コンテンツ配信制御、アクセス解析、不正検出
バックエンドに「 SURFPOINT 」データ– 全世界分の IPv4 アドレスに対応
– 1 IP アドレス単位で属性情報の修正に対応1 IP =1レコード でデータを保持しておきたい
「どこどこ JP 」サービス
![Page 7: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/7.jpg)
「どこどこ JP 」サービスhttp://api.docodoco.jp/v4/search? key1=API キー 1&key2=API キー 2&ipaddr=IP アドレス
![Page 8: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/8.jpg)
Cassandra システム運用時の課題
![Page 9: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/9.jpg)
Cassandra とは– NoSQL のオープンソース製品
– US ではメジャーな製品で、スケーラビリティと高可用性が特徴
構成– オンプレ 6 ノード、各ノード 2TBx4 の RAID0
– 42 億レコードの IP アドレス属性情報
– データベース中のデータ量は実効 1.5TB 程度
旧 Cassandra システムの構成
![Page 10: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/10.jpg)
高負荷 / イマイチな安定性– ガベージコレクションのメモリ負荷&ディスク負荷
– 結果、データ取得をミスする / ノードが Down する
– テーブル設計にも問題があった
焼津 IDC~ お客様システム間のレイテンシへの懸念
今後のシステム拡張におけるコスト面への懸念 × 別の IDC に Cassandra システムのコピーを構築
→ 解決にならない
旧 Cassandra システムの課題
![Page 11: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/11.jpg)
速度面・安定性を重視したい
多くのアドテク界隈のお取引先が すでに AWS 環境上にシステム構築
でも DB はどうしたらいいだろう?– Cassandra を EC2上で構築する ? → 解決にならない
解決策
![Page 12: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/12.jpg)
「 DynamoDB, あります」
レコード数 40 億以上なんですけど… 「へっちゃらです」
データ量 500GB 位になりそうなんですけど… 「へっちゃらです」
レスポンスが遅いと怒られるんですけど… 「問題ありません」
DynamoDB
![Page 13: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/13.jpg)
DynamoDB について
…公式プレゼンから抜粋してざっくりとご紹介
![Page 14: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/14.jpg)
DynamoDB の特徴
“NoSQL as a Service”
管理不要で信頼性が高いプロビジョンドスループットストレージの容量制限がない
※「 AWS Black Belt Tech シリーズ Amazon DynamoDB 」等より
![Page 15: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/15.jpg)
SPOF の存在しない構成データは 3箇所の AZ に保存されるので信頼性が高いストレージは必要に応じて自動的にパーティショニングされる
特長1:管理不要で信頼性が高い
クライアント
![Page 16: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/16.jpg)
Read と Write 、それぞれに対して必要な分だけのスループットキャパシティをプロビジョンする(割り当てる)ことができる
一般的な Readヘビーな DB なら• Read : 1,000 、 Write : 100
Writeヘビーな DB なら• Read : 500 、 Write : 500
この値は DB 運用中にオンラインで変更可能– ただし、スケールダウンに関しては日に4回までしかできない
特長2:プロビジョンドスループット
![Page 17: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/17.jpg)
使った分だけの従量課金制のストレージ
データ容量が増えてきたのでディスクを足したり、ノードを足したりという作業が不要
データの保存は SSD に対して行われる
特長3:ストレージの容量制限がない
![Page 18: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/18.jpg)
プロビジョンドスループットで決まる時間料金– Read/Write それぞれプロビジョンしたスループット
によって時間あたりの料金がきまる
– 大規模に利用するのであればリザーブドによる割引もあり
ストレージ利用量– 保存したデータ容量によって決まる月額利用料金
– 計算は GB あたりの単価が適用される
DynamoDB のシンプルな料金体系
実際の料金については下記を参照http://aws.amazon.com/jp/dynamodb/pricing/
![Page 19: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/19.jpg)
ちょっとブレイク
「ビッグデータ」と「どこどこ JP 」
![Page 20: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/20.jpg)
「ビッグデータ」 どこどこ JP
レコード数データ量
レコード数は巨大増大し続けるデータ
レコード数は巨大
データ量の変化は小
Write 常に書き込みが発生 定期的・比較的少量
Read 複雑なクエリや分析クエリは単純
1レコードを返信
「ビッグデータ」との比較
![Page 21: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/21.jpg)
DynamoDB への実装とチューニング
![Page 22: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/22.jpg)
IP 情報テーブル 地域情報テーブル 組織情報テーブル
属性情報テーブルの分割
22
・ 36 億レコード
・ 500GB
・ 60万レコード
・ 500MB
・ 120万レコード
・ 800MB
![Page 23: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/23.jpg)
公式 AWS SDK for PHP version 2 を使用
参考:“ Performance Guide”http://docs.aws.amazon.com/aws-sdk-php/guide/latest/performance.html
– PHP を 5.4以上にアップグレード
– PHP5.5 を使う / APC のような Opcode キャッシュを使う
– Classmap autoloader “Composer” を使う
速度追求部分には非公式 PHP ライブラリで対応– “php-simple-amazon-dynamodb”
https://github.com/ttsuruoka/php-simple-amazon-dynamodb
チューニング(1)
23
![Page 24: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/24.jpg)
95rps : C1.medium, NginX, 公式 SDK, preloader適用前
131rps : C1.medium, NginX, 公式 SDK, preloader有効
731rps : C1.medium, NginX, 非公式ライブラリ
109rps : C1.medium, Apache, 公式 SDK, preloader適用前
132rps : C1.medium, Apache, 公式 SDK, preloader有効
419rps : C1.xlarge, Apache, 公式 SDK, preloader有効
1183rps :C1.xlarge, Apache, 非公式ライブラリ
チューニング(2)
![Page 25: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/25.jpg)
現在のシステム構成
IP
DynamoDB
Geo Org
お客様 AWS 環境
天気
お客様システム
データ更新監視
アカウント管理フォーマット変換
![Page 26: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/26.jpg)
RDBMS的にはよくある処理が一発で完了できない「全レコード一括削除」「テーブル名変更」
スループット消費し地道に処理するしかない場合も
速い?速くない?HTTP通信のオーバーヘッドは無視できない
複数並列処理が大前提
処理の得意不得意はありますキー / ハッシュの設計はよく考えないと!DynamoDB以外のサービスと結合して実現する手も
DynamoDB :ここが不満
26
![Page 27: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/27.jpg)
アプリケーションの移植負荷は?
27
移植自体はそこまで手間はかからなかった
テストは少しハマった– 負荷テストに ApacheBench を使用したが・・・
DynamoDB のスループットを可変にした– プロビジョンドスループットはできるだけ抑えてケチりた
い
– 指定したスループットを超えた場合でもなんとかしたい
![Page 28: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/28.jpg)
DynamoDB の負荷テスト
![Page 29: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/29.jpg)
謎の挙動:最初の数十秒だけ高性能http://localhost/rest.php?ip=220.216.104.1
( 結果の例 )
– 1 回目結果 = 1200req/s
– 2 回目結果 = 240req/s エラー出まくり
– しばらく時間をおくと、性能が復旧する ??
⇒ DynamoDB の内部データ構造に起因
負荷テストに ab コマンドを使った結果
![Page 30: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/30.jpg)
DynamoDB の内部データ構造
※「 AWS Black Belt Tech シリーズ Amazon DynamoDB 」より
![Page 31: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/31.jpg)
DynamoDB の内部データ構造
![Page 32: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/32.jpg)
DynamoDB の自動スケーリング
![Page 33: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/33.jpg)
公式 SDK を使い CapacityUnits を読み書き
スループットを上げる条件– 利用率が 80% を超えていたら
⇒ CapacityUnit を現在の 150% に上げる
スループットを下げる条件– 利用率が 25% 以下の状態が 2 時間 (5 分間隔×24 回 )継続
⇒ CapacityUnit を現在の 25% に下げる
DynamoDB の自動スケーリング
33
$x = $dynamo->getreadCapacityUnits( $tableName );$x = $dynamo->getwriteCapacityUnits( $tableName );$x = $dynamo->getConsumedReadCapacityUnits( $tableName );$x = $dynamo->getConsumedWriteCapacityUnits( $tableName );
![Page 34: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/34.jpg)
自動スケーリングの実行例
34
プロビジョンしたスループット
実際に消費したスループット
![Page 35: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/35.jpg)
自動スケーリングの実行例
35
![Page 36: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/36.jpg)
自動スケーリングの実行例
36
![Page 37: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/37.jpg)
一方、書き込みスループットは
自動スケーリングの実行例
![Page 38: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/38.jpg)
「ビッグデータ」との比較
「ビッグデータ」 SURFPOINT
レコード数データ量
レコード数は巨大増大し続けるデータ
レコード数は巨大
データ量の変化は小
Write 常に書き込みが発生 定期的・比較的少量
Read 複雑なクエリや分析クエリは単純
1レコードを返信
コスト↓
コスト↓
![Page 39: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/39.jpg)
コスト比較
オンプレミス環境でのシステム構築vs
AWS環境でのシステム構築
![Page 40: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/40.jpg)
オンプレミス環境 AWS 環境
開発期間 約 18カ月 約 6カ月
初期費用 約 300万円 ほぼ0円
ランニングコスト 月額 約 15万円 月額 約 15万円
比較
![Page 41: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/41.jpg)
開発期間:約 18カ月– 本番サーバースペック選定のための実証テスト
– サーバー機の調達 / 200v電源は確保できるのか?
初期費用:約 300万円– Cassandra ノード用 x86 サーバー 6台
– API 提供用 x86 サーバー 4台など
ランニングコスト:月額 約 15万円– IDC費用(設置場所+電源+ネットワーク)
– ファイヤーウォールやロードバランサーのコストは別
オンプレミス環境でのシステム構築に要したコスト
![Page 42: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/42.jpg)
開発期間:約 6カ月– (注)旧システムから仕様 / プログラムの一部を継承
初期費用:ほぼ0円– AWS サインアップ → 無料利用枠を活用
ランニングコスト:月額 約 15万円– 「どこどこ JP 」 EC2 インスタンスや ELB の費用を含む
– DynamoDB 単体での利用料金は 月額 5万円弱
AWS 環境でのシステム構築に要したコスト
![Page 43: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/43.jpg)
7月度 8月度 9月度 10月度 11月度 12月度 (1月度 )$0
$1,000
仕様検討 開発
実データ投入負荷テスト
チューニングテスト環境公開
サービス開始→ → →
36 億件投入
AWS 環境でのシステム構築に要したコスト
コスト↓
![Page 44: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/44.jpg)
まとめ
![Page 45: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/45.jpg)
本番サーバースペック選定のための実証テスト– スペック見積や電源確保がいらない
– micro インスタンスでいきなりプロトタイプ開発を開始
– 様子を見つつインスタンスタイプを変更
システム構築完了から売上計上まで間のコスト– 負荷テスト終了後、一旦 ”休眠状態” にさせておいた
インフラ調達に関わるコストやリスク– 万が一の際 (?) にもすぐにサービス撤収ができる安心感
AWS へのシステム移行で悩まなくて済んだこと
45
![Page 46: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/46.jpg)
オンプレミス環境から AWS 環境へ移行–要求事項を考慮し DynamoDB を選択
–時間的・金銭的コストを大幅削減
–ビジネスの成長に伴うインフラ不安からの解放
「 DynamoDB を導入したので、休日に安心して外出できるようになりました」
まとめ
![Page 47: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/47.jpg)
おまけ・・・新しい悩み
![Page 48: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/48.jpg)
「有効活用を考えてよ ! 」
(^▽^;)
![Page 49: ビッグデータだけじゃない Amazon DynamoDBの活用事例](https://reader033.vdocuments.pub/reader033/viewer/2022061203/547ce281b47959ca508b47ad/html5/thumbnails/49.jpg)
ご静聴ありがとうございました!