スマートフォン×cassandraによるハイパフォーマンス基盤の構築事例

36
スマートフォン×Cassandraによる ハイパフォーマンスサービス基盤構築事例 株式会社コスモルート クラウドR&D グループ terurou Cassandra Conference in Tokyo(2011/10/05) All Rights Reserved,Copyright © 株式会社コスモルート 2011 1

Upload: terurou

Post on 28-May-2015

5.230 views

Category:

Technology


0 download

DESCRIPTION

Cassandra Conference Tokyo 2011での発表資料

TRANSCRIPT

Page 1: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

スマートフォン×Cassandraによるハイパフォーマンスサービス基盤の

構築事例

株式会社コスモルート クラウドR&D グループ

terurou

Cassandra Conference in Tokyo(2011/10/05)

All Rights Reserved,Copyright © 株式会社コスモルート 2011 1

Page 2: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

今から話すこと

• 自己紹介+会社紹介

• 事例紹介

– GeQuuとは

– リリースに至るまでのサービス基盤の変遷

• どのように技術的な難題を解決してきたか?

• まとめ

All Rights Reserved,Copyright © 株式会社コスモルート 2011 2

Page 3: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

自己紹介+会社紹介

All Rights Reserved,Copyright © 株式会社コスモルート 2011 3

Page 4: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

terurou(YAGI.Teruo)

• Twitter: @terurou

• Blog: DenkiYagi(はてなDiary)

– http://d.hatena.ne.jp/terurou/

All Rights Reserved,Copyright © 株式会社コスモルート 2011 4

Page 5: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

株式会社コスモルート

• 名古屋本社、東京支社

– 1989年設立、社員 約60名

• 業務系のソフトハウス

– ソフトウェア開発

• 製造業、生産管理、ERP向けが中心

• アーキテクトやインフラも守備範囲

– ソフト以外にも機械設計、電子設計

– 研究開発

• Cassandraは2010年3月頃から使っています。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 5

Page 6: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

「terurouは何エンジニア?」『RIAかなぁ』

• 「クライアントからいかにして大量データを操作するか?」を考えることが多い

– UX、ストレスフリーなUI設計

– データ構造、プロトコルレベルの設計

– Caching機構の設計(Frontend、Backend)

– etc...

• Silverlight, JavaScript, Android, ...

– Microsoft Tech Fielders Member

• PHP逆引きレシピ共著

All Rights Reserved,Copyright © 株式会社コスモルート 2011 6

Page 7: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

主催コミュニティ

• DSTokai

– 東海地方のメタコミュニティ

• コミュニティ間の連絡窓口・イベント告知

• クロスコミュニティイベントの企画

– NGK:名古屋 合同 懇親会(花見、忘年会...)

• 大規模分散技術勉強会 in 名古屋

– 通称:大名古屋

– Hadoop本読書会(全10回、完)

– 「Hadoop MapReduce デザインパターン」とか 「オンラインゲームを支える技術」も読みたい

All Rights Reserved,Copyright © 株式会社コスモルート 2011 7

Page 8: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

事例紹介 GeQuuとは

All Rights Reserved,Copyright © 株式会社コスモルート 2011 8

Page 9: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

GeQuu -時空を超えろ-

時間と空間を自由に移動できる ソーシャルなロギングサービス基盤

All Rights Reserved,Copyright © 株式会社コスモルート 2011 9

ログの送信 • GPS • Message • Photo • …

データの閲覧

連携

ログの蓄積・解析

GeQuuクラウド

Page 10: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

GeQuu -時空を超えろ-

• http://gequu.net/

• GeQuuの読み方は「じくー」です。

– よく「げくー」と間違えられますが…。

– Geolocation/GeomediaのGeです。

– 読み方を元に、空いているTwitterアカウントを探してたらこのスペルになりました。

• 今年8月から公開ベータを開始しました!

– Androidクライアント公開中。

– iPhoneクライアントは現在開発中。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 10

Page 11: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

GeQuuの目指すところ

• 現在、過去、未来(!?)のその瞬間の出来事をシームレスに表示・共有

• 位置情報を主とした様々なログの保存・解析

– 各種センサーデバイス

• GPS、地磁気、加速度…。脳波もおもしろそう。

– Tweet 、Message

– Photo、Movie

• リアルタイムコミュニケーション

All Rights Reserved,Copyright © 株式会社コスモルート 2011 11

Page 12: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

デモ

「時間と空間を自由に移動できる」って 言われても意味が判らないですよねー。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 12

Page 13: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

事例紹介 リリースに至るまでの

サービス基盤の変遷

All Rights Reserved,Copyright © 株式会社コスモルート 2011 13

Page 14: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

GeQuu開発のきっかけ

• 社員が趣味でスマートフォン・GPSを使ったイマココサービスを構築した。

– 現在の位置情報をGoogleMapsに表示するだけのシンプルなサービス

• 「現在位置」だけではなく「移動経路」も リアルタイムに表示できないか?

– 意外にもこのようなサービスがなかった。

– B2Bサービスとして展開できそう。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 14

Page 15: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

初期プロトタイプ

• シンプルなServlet/JSP + Oracle

– 社内の開発用Oracleを流用(何でもよかった)

• とりあえず作ってみて問題点を洗い出す。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 15

APサーバ Windows Mobile 6.5

Viewer

Oracle

Page 16: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

初期プロトタイプの問題点

• 精細な移動経路を表示させたい!

– GPSデータを1秒単位で取得する必要がある。

– 1万ユーザ × 毎日1時間ロギング × 1年間運用 =13,140,000,000(≒130億)レコード!

• ほぼリアルタイムに現在位置を表示したい!

– 10秒間隔でデータを送る必要がある。

• それ以上長いとリアルタイム性が損なわれる。

– 超高負荷な書き込みトラフィックが発生!!

All Rights Reserved,Copyright © 株式会社コスモルート 2011 16

Page 17: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

RDB vs 超大量データ+超高負荷更新

• RDBを用いた大規模システムのノウハウを 適用しづらい。

– Master-Slaveレプリケーションは参照負荷を 分散させるもので、要件に合わない。

– パーティショニング+マルチマスタはシステムが複雑化し、環境構築や運用が難しくなる。

• データの冗長化はどうする?

• サーバ台数が爆発しないか?

All Rights Reserved,Copyright © 株式会社コスモルート 2011 17

Page 18: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

Cassandraの採用を検討

• 書き込みに強い分散DB:Cassandra?

– MySQLを大規模化するよりもスマートらしい。

• しかし、いくつか懸念事項があった。

– データモデルがRDBとは大きく異なる。

– SQLがサポートされていない。

– Transactionがサポートされていない。

– 技術的に枯れていない。

• 検討開始したのは、ver0.5がリリースされた頃。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 18

Page 19: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

データモデルがRDBとは大きく異なる

• RDBは行指向DB、Cassandraは列指向DB

– Hadoop(HBase)も列指向DBらしい。

– 後々のデータマイニングのことを考えると、 むしろ都合が良さそう。

• Hadoop MapReduce Integrationの存在も。

• INDEXがなかった(注:現在はある)

– 転置INDEXを自分で作ればよい。

– 仮にINDEXがあったとしても、書き込みでは ボトルネック要因なので積極的には使えない。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 19

Page 20: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

SQLがサポートされていない

• SQLではなくThrift API

– SQLの構文解析処理がボトルネックという話題が 出てきたこともあり、逆に好意的に捉えた。

• RDBも大規模化するとJOINができなくなり、SQLを使うメリットは弱くなる。

• パフォーマンスを考慮するとリアルタイムで実行されるクエリは軽量化する必要がある。

– PK検索、検索結果のキャッシュ、正規化崩し

All Rights Reserved,Copyright © 株式会社コスモルート 2011 20

Page 21: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

Transactionがサポートされていない

• 業務アプリ脳「ないとアプリ作れないだろ」

– でも本当にTransactionは必要なの?

– 基幹システムを作るわけではない。

• blogやSNSではTransactionはまず使わない。

• 仮に書き込みエラーが発生しても、スマートフォンからのログ再送+リトライができる。

– Eventual Consistencyの考え方そのもの。

• Update/Deleteを避けてInsert主体にすればTransactionがなくてもなんとかなる。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 21

Page 22: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

技術的に枯れていない

• 確かにver0.5の頃は不安定だったが…。

– 開発が活発なので、次第に安定していくはず。

– 多少の不具合よりもメリットの方が大きい。

– 研究開発プロダクトなので自由だった。

• 他社に先んじる

– 名古屋では同じような事をやっている会社は皆無。

– BigDataの時代に備えたノウハウの蓄積。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 22

Page 23: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

御託は抜きにしてですね

というか、最初に

「Cassandra使おうぜ!」って 言い出したのが社長だった。

※初期の開発チームは社長と私の2名体制。

※サーバサイドは主に社長が担当。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 23

Page 24: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

プロトタイプ#2

• Cassandra採用、クライアントはAndroid化

– ちょうどXperiaが発売された時期だった。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 24

APサーバ Android

Viewer

Cassandra

Page 25: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

プロトタイプ#2の評価

• Cassandraは十分使い物になる。

– ノードのAdd/Removeが簡単で運用が楽そう。

• MySQLで同じ事をするとなると…。

– 設計ノウハウの習得には苦労した。

• SQLって本当に凄いものですね!

• データストアはスケールするようになったが、APサーバの方が負荷に耐えられない。

– 瞬間的な負荷増大でシステムが停止してしまう。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 25

Page 26: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

プロトタイプ#3

• 書き込み処理を分散MessageQueue化。

• できるだけAndroid側でログの加工を行い、 サービス側の負荷を軽減する。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 26

分散MQ

APサーバ Android

Viewer

Cassandra 送信前にログ加工

Page 27: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

分散MessageQueue

• 「瞬間的な負荷増大」対策の常套手段。

– 負荷が高くても書き込み要求は受け付ける。

• 負荷状況に応じてスケールアウト可能に。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 27

・・・

待ち行列で過剰な 書き込み要求を バッファリング

負荷に応じて サーバ追加

Page 28: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

プロトタイプ#3の評価

• システム全体の書き込み性能は改善。

– 負荷が増加しても分散MQのマシン追加で対応可。

• しかし閲覧処理のパフォーマンスに難あり。

– 書き込みに対してデータ構造を最適化したため、 参照には問題があった。

• Cassandraでは書き込み負荷を分散するために、データを複数キーに分散させなくてはならない。

• だが、参照時には経路情報のような連続データは単一キーに格納されている方が良い。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 28

Page 29: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

プロトタイプ#4

• 参照用データの統合・アーカイブ

• 並列検索+HTTP Streaming

All Rights Reserved,Copyright © 株式会社コスモルート 2011 29

分散MQ

APサーバ

Android

Viewer

送信前にログ加工

並列検索

HTTP Streaming

Cassandra

Page 30: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

参照用データの統合・アーカイブ

• 移動経路を表示するために何千もレコードを読み込むのは非効率なので1つに統合する。

– ログ開始~終了の全レコードを1つに統合すると、長時間ログの途中からのシークに支障がある。

– 一定時間ごとにブロック化する。

• 参照頻度の低いログは圧縮して退避・削除。

– キーの絶対数を減らしてしまう。

– ディスク使用量を大きく削減する狙いも。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 30

Page 31: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

並列検索+HTTP Streaming

• 1ノードで検索処理すると時間がかかる。

• 検索処理を並列分散して、タスク毎に結果を 逐次送信する。

– レスポンス・レイテンシが大きく改善。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 31

APサーバ

Page 32: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

プロトタイプ#4の評価

• 検索パフォーマンスも実用レベルに到達。

– アーキテクチャとしてのベースラインは完成。

• あとは公開に向けて機能追加・安定化。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 32

Page 33: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

現在のシステム構成

• Cassandraでは実現が難しい検索のために、独自のIn-Memory KVSを実装。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 33

分散MQ

APサーバ Cassandra

Android

Viewer

送信前にログ加工

並列検索

HTTP Streaming

独自KVS

Page 34: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

まとめ

All Rights Reserved,Copyright © 株式会社コスモルート 2011 34

Page 35: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

Cassandraを1年以上使ってきた雑感

• Cassandraの得意領域を見極める。

– ログのようなシーケンシャルなデータは得意。

– お金を管理するようなシステムには使わない。

• CassandraはRDBでは実現困難な問題を 解決する選択肢の一つ。

– RDBで問題がなければ、別に使う理由はない。

– Hadoopや他のKVSでも同じことが言える。

All Rights Reserved,Copyright © 株式会社コスモルート 2011 35

Page 36: スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例

ご清聴ありがとうございました

All Rights Reserved,Copyright © 株式会社コスモルート 2011 36