SlideShare a Scribd company logo
1 of 36
 2013-07-16
 株式会社マイネット
 伊藤 祐策
DynamoDB 活用事例
目次
 自己紹介
 DynamoDBの用途について
 弊社事例紹介
 データ集計の実装方法
自己紹介
自己紹介
 名前 伊藤 祐策
 所属 株式会社マイネット
 肩書き アーキテクト
 業務内容
インフラ設計
アプリケーション設計
エンジニア教育
会社紹介
 会社名 株式会社マイネット
 業種 インターネットサービス業
 主な事業内容
Android専用ソーシャルゲームの提供
DynamoDBの用途について
DynamoDBの用途は2通り
 DynamoDBの用途は2つに大分できる
for BIGDATA
 大量のデータを収集・蓄積・分析する
for Application
 無限の負荷分散能力を以て大規模サービスを実現する
※弊社事例は for Application です
DynamoDBのスゴイところ
 無制限に性能を拡張することができる
 性能が足りなくなったら課金額を増やすだけ
 負荷が高くなっても応答速度が低下しな
い
 負荷対策に掛けていた工数を大幅カットできる
 データ保全性もバッチリ
 3箇所のiDCにデータを分散配置
 メンテナンスフリー
 CloudWatchで負荷状況を監視するだけのお仕事
弊社事例紹介
ファルキューレの紋章
 Android専用アプリ
 登録ユーザー数 約70万
ファルキューレの紋章
 DynamoDBを使って実装された初めてのサー
ビス
 最初はDynamoDBのみで実装されていた
 のちにMySQLハイブリッド型へ移行
 国内初のDynamoDB for Application事例
 サービス開始以来、DBのメンテナンスは課金
額の調整のみ
大激闘!キズナバトル
 Android専用アプリ
 登録ユーザー数 約15万
大激闘!キズナバトル
 ファルキューレの紋章の開発で得られた知見を
最大限に生かし、DynamoDBに最適化した実装
を導入。
 最初からMySQLハイブリッド型の構成にした。
 メインデータベースとしてDynamoDB
 集計用データベースとしてMySQL
 リリース以来、DBメンテナンスは課金額の調整
のみ
大激闘!キズナバトル
 毎日12時、19時、22時にチームバトルが開催
されるゲーム仕様のため、スパイク型の負荷
が発生する。
 22:00:00に約15倍の負荷が突然発生する
 バトルで使うテーブルは性能をかなり高めに
設定
 しかし予約性能を超えない限りは応答速度の低下
は発生しない
 RDBでは難しい芸当もDynamoDBなら余裕でこ
なす
システム構成
DynamoDB
WebServers
BatchServers
ELB
RDS
(MySQL)
SQS
Internet
AWS利用料金比率
大激闘! キズナバトル 2013年6月度
EC2 (73%)
DynamoDB
(11%)
RDS (4%)
Others (12%)
DynamoDBを採用して良かった
事
 スケールアウトの事を心配しなくて良くなった
 MySQLだとレプリカを沢山つくってReadのスケール
アウトはできたけど、Writeのスケールアウトが難し
い。
 スケールする仕組みを作ろうとすると、耐障害性設計
も大変になって、コストも手間も跳ね上がる。
 データ保全の事を心配しなくて良くなった
 物理故障に対する対策を自前で用意する必要がなく
なった。
DynamoDBを採用して良かった
事
 意外と料金が安い!
 しっかり実装するとDB費用をかなり安く抑えること
ができる。
 定期的に値下げのアップデートが空から降ってくる。
 性能と費用のバランスコントロールがしやすい
 「ここは強気にいきたいからお金を掛けてでも!」
 「ここはどうでもいいから費用を最小限に」
 ただし相応の技術力が必要
DynamoDBを採用して良かった
事
 ミドルウェア以下の勉強をする必要性から解放された
 分散データベースはただでさえ高度な知識が必要。
 RDBでも大規模システムの構築となると必要となる知識量も
検証に必要な時間も半端ではなくなる。
 我々はサービスを作りたいのであって、システム構築の勉強
を
したいわけではない。
 勉強や動作検証に使っていた時間をアプリケーションの実装
や品質向上のための時間に充てることができる。
DynamoDBを採用して苦労した
事
 トランザクションとバックアップの仕組みをアプリ
ケーション側で実装しなければならなくなった
 トランザクションはSQSと楽観的ロックを組み合わ
せて実装
 バックアップはスキーマ設計にジャーナルの概念を取
り入れて代替
 苦手な事もあるので他システムとの組み合わせが必要
 検索と集計ができないので、MySQLを併用すること
にした
DynamoDBを採用して苦労した
事
 ソースコードの品質を2段階くらい上げなければならな
くなった
 ちょっとでも汚いコードを書くとすぐにデータの論理破壊が発
生する
 酷いときは無限ループに陥る
 テストも普通の手法ではバグを見つけきれない
 エンジニアの教育が大変になった
 RDBというぬるい環境に慣れきった頭を切り替えさせる必要が
ある
 特性を理解してコードを書かないと分散DBのメリットを生かせ
ない
 情報工学の基礎から教えなければならないことも
データ集計処理の実装
データ集計処理の実装パターン
 方法は2つ
DynamoDB-MySQLレプリケーション
小~中規模向け
DynamoDB-EMR連携
大規模向け
DynamoDB-MySQLレプリケー
ション
 DynamoDB内のレコードが更新されるたびに
MySQLへ1レコード単位でコピーする。
 SQSを使って非同期にコピーを行う。
 SQLで集計を行い結果を得る。
 処理は全てアプリケーション側で実装。
DynamoDB-MySQLレプリケー
ション
DynamoDB MySQL
DynamoDB-MySQLレプリケー
ション
非同期にコピー
SQS
DynamoDB MySQL
DynamoDB-MySQLレプリケー
ション
SQLで集計
DynamoDB MySQL
DynamoDB-MySQLレプリケー
ション
 メリット
 SQLが使えるので柔軟な集計ができる
 システム構成が小規模で済む
 開発が簡単
 デメリット
 規模が大きくなるとRDSインスタンスの性能がボ
トルネックになる
DynamoDB-MySQLレプリケー
ション
 適している場面
 ユーザー数10万人以下の活動データの集計
 単純な売上集計ならリアルタイムでも集計可能
 1日1回の集計でよければ100万人規模でも大丈夫
 集計対象が頻繁に変わる案件
 イベントや新規施策の効果測定等
データの発生量が処理可能データ量を
超えるまではビッグデータではない!
DynamoDB-EMR連携
 RDBで処理しきれない規模になったら取る手
段
 DynamoDBに蓄積されたデータをEMR連携を
使って一気にダンプしてHadoopクラスタへ流
し込む!
 Map Reduceで集計・解析処理を行い、結果を
RDBまたはDynamoDBへ記録する。
DynamoDB-EMR連携
EMR
Hadoop Cluster
DynamoDB
DynamoDB
RDS
for Application
for BIGDATA
DynamoDB-EMR連携
 メリット
 大量のデータでも高速に処理できる
 お金を掛ければ掛けるほど速くなる!
 デメリット
 お金がたくさん掛かる
 システム構成が大掛かりになる
 開発が大変
まとめ
DynamoDBはこんな方にオスス
メ
 for Applicationとして使う場合
 同時接続1万人以上にも耐えられるシステムの構築に
挑戦したい
 費用も安く抑えたい
 データベースのメンテナンスはもうしたくない
 ミドルウェア以下の勉強はもうしたくない
 ソースコードの品質には自信がある
DynamoDBはこんな方にオスス
メ
 for BIGDATAとして使う場合
 ストレージ容量を気にするのはもう嫌だ
 データ保全の事を気にするのはもう嫌だ
 データベースの拡張メンテをするのはもう嫌だ
 お金を掛けてもいいから読み出し性能をもっと欲し
い
 お金を掛けてもいいから書き込み性能をもっと欲し
い
 Hadoop万歳!MapReduce万歳!
終

More Related Content

What's hot

Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
 
NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用について
kawarasho
 
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなしOSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
Satoshi Shimazaki
 
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたことArgoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Shinsaku Kono
 

What's hot (20)

Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
 
NW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用についてNW遅延環境(Paas)でのPostgreSQLの利用について
NW遅延環境(Paas)でのPostgreSQLの利用について
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
AWS Redshift Analyzeの必要性とvacuumの落とし穴
AWS Redshift Analyzeの必要性とvacuumの落とし穴AWS Redshift Analyzeの必要性とvacuumの落とし穴
AWS Redshift Analyzeの必要性とvacuumの落とし穴
 
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなしOSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
OSC2012Kansai@Kyoto 自宅SAN友の会 - インフラエンジニアなら知っておきたい ストレージのはなし
 
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
 
ざっくり DDD 入門!!
ざっくり DDD 入門!!ざっくり DDD 入門!!
ざっくり DDD 入門!!
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
ServiceとRepository
ServiceとRepositoryServiceとRepository
ServiceとRepository
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ)
 
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたことArgoによる機械学習実行基盤の構築・運用からみえてきたこと
Argoによる機械学習実行基盤の構築・運用からみえてきたこと
 

Similar to DynamoDB活用事例 株式会社マイネット

[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
Amazon Web Services Japan
 
IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介
IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介
IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介
株式会社クライム
 
iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論
Takakuni Furukawa
 

Similar to DynamoDB活用事例 株式会社マイネット (20)

DDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてDDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについて
 
ナレッジモール論文2022_デジタルツインにおける共創アプローチ
ナレッジモール論文2022_デジタルツインにおける共創アプローチ ナレッジモール論文2022_デジタルツインにおける共創アプローチ
ナレッジモール論文2022_デジタルツインにおける共創アプローチ
 
BIGLOBE RDRA導入後の要件定義の変化
BIGLOBE RDRA導入後の要件定義の変化BIGLOBE RDRA導入後の要件定義の変化
BIGLOBE RDRA導入後の要件定義の変化
 
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介20172017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
2017秋「クラウドファースト時代における基幹業務システム開発革新セミナー」 超高速開発を実現するIBMクラウドの最新情報ご紹介2017
 
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
 
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
 
No codecamp weekly_output adalo database_20201112
No codecamp weekly_output adalo database_20201112No codecamp weekly_output adalo database_20201112
No codecamp weekly_output adalo database_20201112
 
Ruby World Conference 2019 rubyによる超大量データ配信
Ruby World Conference 2019 rubyによる超大量データ配信Ruby World Conference 2019 rubyによる超大量データ配信
Ruby World Conference 2019 rubyによる超大量データ配信
 
ビッグデータはバズワードか? (Cloudian Summit 2012)
ビッグデータはバズワードか? (Cloudian Summit 2012)ビッグデータはバズワードか? (Cloudian Summit 2012)
ビッグデータはバズワードか? (Cloudian Summit 2012)
 
ReNom User Group #1 Part1
ReNom User Group #1 Part1ReNom User Group #1 Part1
ReNom User Group #1 Part1
 
Climb Forum 2019 超最新データベースソリューション紹介
Climb Forum 2019 超最新データベースソリューション紹介Climb Forum 2019 超最新データベースソリューション紹介
Climb Forum 2019 超最新データベースソリューション紹介
 
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みリクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
 
20140926 azure dr_slideshare
20140926 azure dr_slideshare20140926 azure dr_slideshare
20140926 azure dr_slideshare
 
ビッグIoTデータに対応したデータベース GridDB
ビッグIoTデータに対応したデータベース GridDBビッグIoTデータに対応したデータベース GridDB
ビッグIoTデータに対応したデータベース GridDB
 
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
[よくわかるクラウドデータベース] CassandraからAmazon DynamoDBへの移行事例
 
負荷分散勉強会
負荷分散勉強会負荷分散勉強会
負荷分散勉強会
 
MPLS_JAPAN_2013_IDCF
MPLS_JAPAN_2013_IDCFMPLS_JAPAN_2013_IDCF
MPLS_JAPAN_2013_IDCF
 
D1-2-S07 オンプレミスのデータウェアハウス基盤を BigQuery へ
D1-2-S07 オンプレミスのデータウェアハウス基盤を BigQuery へD1-2-S07 オンプレミスのデータウェアハウス基盤を BigQuery へ
D1-2-S07 オンプレミスのデータウェアハウス基盤を BigQuery へ
 
IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介
IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介
IBM Db2もっと活用しませんか?高性能な接続ドライバと異種DBレプリケーションのご紹介
 
iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論
 

Recently uploaded

Recently uploaded (10)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

DynamoDB活用事例 株式会社マイネット