SlideShare a Scribd company logo
スマートフォン×Cassandraによる
ハイパフォーマンスサービス基盤の
               構築事例

                         株式会社コスモルート
                        クラウドR&D グループ
                                terurou
       Cassandra Conference in Tokyo(2011/10/05)

              1     All Rights Reserved,Copyright © 株式会社コスモルート 2011
今から話すこと
• 自己紹介+会社紹介
• 事例紹介
– GeQuuとは
– リリースに至るまでのサービス基盤の変遷
  • どのように技術的な難題を解決してきたか?
• まとめ




              2   All Rights Reserved,Copyright © 株式会社コスモルート 2011
自己紹介+会社紹介



 3   All Rights Reserved,Copyright © 株式会社コスモルート 2011
terurou(YAGI.Teruo)
• Twitter: @terurou



• Blog: DenkiYagi(はてなDiary)
 – http://d.hatena.ne.jp/terurou/




                      4    All Rights Reserved,Copyright © 株式会社コスモルート 2011
株式会社コスモルート
• 名古屋本社、東京支社
– 1989年設立、社員 約60名
• 業務系のソフトハウス
– ソフトウェア開発
 • 製造業、生産管理、ERP向けが中心
 • アーキテクトやインフラも守備範囲
– ソフト以外にも機械設計、電子設計
– 研究開発
 • Cassandraは2010年3月頃から使っています。


               5    All Rights Reserved,Copyright © 株式会社コスモルート 2011
「terurouは何エンジニア?」『RIAかなぁ』
• 「クライアントからいかにして大量データを
  操作するか?」を考えることが多い
 –   UX、ストレスフリーなUI設計
 –   データ構造、プロトコルレベルの設計
 –   Caching機構の設計(Frontend、Backend)
 –   etc...
• Silverlight, JavaScript, Android, ...
 – Microsoft Tech Fielders Member
• PHP逆引きレシピ共著

                       6   All Rights Reserved,Copyright © 株式会社コスモルート 2011
主催コミュニティ
• DSTokai
 – 東海地方のメタコミュニティ
   • コミュニティ間の連絡窓口・イベント告知
   • クロスコミュニティイベントの企画
    – NGK:名古屋 合同 懇親会(花見、忘年会...)
• 大規模分散技術勉強会 in 名古屋
 – 通称:大名古屋
 – Hadoop本読書会(全10回、完)
 – 「Hadoop MapReduce デザインパターン」とか
   「オンラインゲームを支える技術」も読みたい

                 7   All Rights Reserved,Copyright © 株式会社コスモルート 2011
事例紹介
       GeQuuとは



8   All Rights Reserved,Copyright © 株式会社コスモルート 2011
GeQuu -時空を超えろ-
時間と空間を自由に移動できる
ソーシャルなロギングサービス基盤

             GeQuuクラウド
 ログの送信        ログの蓄積・解析
 • GPS
 • Message                                 データの閲覧
 • Photo
 •…                   連携




                  9        All Rights Reserved,Copyright © 株式会社コスモルート 2011
GeQuu -時空を超えろ-
• http://gequu.net/
• GeQuuの読み方は「じくー」です。
– よく「げくー」と間違えられますが…。
– Geolocation/GeomediaのGeです。
– 読み方を元に、空いているTwitterアカウントを
  探してたらこのスペルになりました。
• 今年8月から公開ベータを開始しました!
– Androidクライアント公開中。
– iPhoneクライアントは現在開発中。


             10   All Rights Reserved,Copyright © 株式会社コスモルート 2011
GeQuuの目指すところ
• 現在、過去、未来(!?)のその瞬間の出来事を
  シームレスに表示・共有
• 位置情報を主とした様々なログの保存・解析
– 各種センサーデバイス
 • GPS、地磁気、加速度…。脳波もおもしろそう。
– Tweet 、Message
– Photo、Movie
• リアルタイムコミュニケーション


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




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




         12   All Rights Reserved,Copyright © 株式会社コスモルート 2011
事例紹介
リリースに至るまでの
サービス基盤の変遷


  13   All Rights Reserved,Copyright © 株式会社コスモルート 2011
GeQuu開発のきっかけ
• 社員が趣味でスマートフォン・GPSを使った
  イマココサービスを構築した。
– 現在の位置情報をGoogleMapsに表示するだけの
  シンプルなサービス
• 「現在位置」だけではなく「移動経路」も
  リアルタイムに表示できないか?
– 意外にもこのようなサービスがなかった。
– B2Bサービスとして展開できそう。



             14   All Rights Reserved,Copyright © 株式会社コスモルート 2011
初期プロトタイプ
• シンプルなServlet/JSP + Oracle
 – 社内の開発用Oracleを流用(何でもよかった)
• とりあえず作ってみて問題点を洗い出す。


    Windows
    Mobile 6.5   APサーバ                   Oracle




    Viewer


                    15   All Rights Reserved,Copyright © 株式会社コスモルート 2011
初期プロトタイプの問題点
• 精細な移動経路を表示させたい!
– GPSデータを1秒単位で取得する必要がある。
– 1万ユーザ × 毎日1時間ロギング × 1年間運用
  =13,140,000,000(≒130億)レコード!
• ほぼリアルタイムに現在位置を表示したい!
– 10秒間隔でデータを送る必要がある。
 • それ以上長いとリアルタイム性が損なわれる。
– 超高負荷な書き込みトラフィックが発生!!



              16   All Rights Reserved,Copyright © 株式会社コスモルート 2011
RDB vs 超大量データ+超高負荷更新
• RDBを用いた大規模システムのノウハウを
  適用しづらい。
– Master-Slaveレプリケーションは参照負荷を
  分散させるもので、要件に合わない。
– パーティショニング+マルチマスタはシステムが
  複雑化し、環境構築や運用が難しくなる。
 • データの冗長化はどうする?
 • サーバ台数が爆発しないか?




             17   All Rights Reserved,Copyright © 株式会社コスモルート 2011
Cassandraの採用を検討
• 書き込みに強い分散DB:Cassandra?
– MySQLを大規模化するよりもスマートらしい。
• しかし、いくつか懸念事項があった。
–   データモデルがRDBとは大きく異なる。
–   SQLがサポートされていない。
–   Transactionがサポートされていない。
–   技術的に枯れていない。
    • 検討開始したのは、ver0.5がリリースされた頃。



                18   All Rights Reserved,Copyright © 株式会社コスモルート 2011
データモデルがRDBとは大きく異なる
• RDBは行指向DB、Cassandraは列指向DB
– Hadoop(HBase)も列指向DBらしい。
– 後々のデータマイニングのことを考えると、
  むしろ都合が良さそう。
  • Hadoop MapReduce Integrationの存在も。
• INDEXがなかった(注:現在はある)
– 転置INDEXを自分で作ればよい。
– 仮にINDEXがあったとしても、書き込みでは
  ボトルネック要因なので積極的には使えない。


                   19   All Rights Reserved,Copyright © 株式会社コスモルート 2011
SQLがサポートされていない
• SQLではなくThrift API
 – SQLの構文解析処理がボトルネックという話題が
   出てきたこともあり、逆に好意的に捉えた。
• RDBも大規模化するとJOINができなくなり、
  SQLを使うメリットは弱くなる。
• パフォーマンスを考慮するとリアルタイムで
  実行されるクエリは軽量化する必要がある。
 – PK検索、検索結果のキャッシュ、正規化崩し



                 20   All Rights Reserved,Copyright © 株式会社コスモルート 2011
Transactionがサポートされていない
• 業務アプリ脳「ないとアプリ作れないだろ」
 – でも本当にTransactionは必要なの?
 – 基幹システムを作るわけではない。
  • blogやSNSではTransactionはまず使わない。
• 仮に書き込みエラーが発生しても、スマート
  フォンからのログ再送+リトライができる。
 – Eventual Consistencyの考え方そのもの。
• Update/Deleteを避けてInsert主体にすれば
  Transactionがなくてもなんとかなる。

                 21   All Rights Reserved,Copyright © 株式会社コスモルート 2011
技術的に枯れていない
• 確かにver0.5の頃は不安定だったが…。
– 開発が活発なので、次第に安定していくはず。
– 多少の不具合よりもメリットの方が大きい。
– 研究開発プロダクトなので自由だった。
• 他社に先んじる
– 名古屋では同じような事をやっている会社は皆無。
– BigDataの時代に備えたノウハウの蓄積。




             22   All Rights Reserved,Copyright © 株式会社コスモルート 2011
御託は抜きにしてですね


というか、最初に
「Cassandra使おうぜ!」って
言い出したのが社長だった。

※初期の開発チームは社長と私の2名体制。
※サーバサイドは主に社長が担当。


          23   All Rights Reserved,Copyright © 株式会社コスモルート 2011
プロトタイプ#2
• Cassandra採用、クライアントはAndroid化
– ちょうどXperiaが発売された時期だった。




   Android
             APサーバ                 Cassandra




   Viewer



                24   All Rights Reserved,Copyright © 株式会社コスモルート 2011
プロトタイプ#2の評価
• Cassandraは十分使い物になる。
– ノードのAdd/Removeが簡単で運用が楽そう。
  • MySQLで同じ事をするとなると…。
– 設計ノウハウの習得には苦労した。
  • SQLって本当に凄いものですね!
• データストアはスケールするようになったが、
  APサーバの方が負荷に耐えられない。
– 瞬間的な負荷増大でシステムが停止してしまう。



              25   All Rights Reserved,Copyright © 株式会社コスモルート 2011
プロトタイプ#3
• 書き込み処理を分散MessageQueue化。
• できるだけAndroid側でログの加工を行い、
  サービス側の負荷を軽減する。


                             分散MQ

 Android   送信前に
                APサーバ                                   Cassandra
           ログ加工




 Viewer


                        26   All Rights Reserved,Copyright © 株式会社コスモルート 2011
分散MessageQueue
• 「瞬間的な負荷増大」対策の常套手段。
 – 負荷が高くても書き込み要求は受け付ける。
• 負荷状況に応じてスケールアウト可能に。
  待ち行列で過剰な
  書き込み要求を
  バッファリング




                                 ・
                                 ・
             負荷に応じて              ・
             サーバ追加


                  27   All Rights Reserved,Copyright © 株式会社コスモルート 2011
プロトタイプ#3の評価
• システム全体の書き込み性能は改善。
– 負荷が増加しても分散MQのマシン追加で対応可。
• しかし閲覧処理のパフォーマンスに難あり。
– 書き込みに対してデータ構造を最適化したため、
  参照には問題があった。
 • Cassandraでは書き込み負荷を分散するために、
   データを複数キーに分散させなくてはならない。
 • だが、参照時には経路情報のような連続データは
   単一キーに格納されている方が良い。



             28   All Rights Reserved,Copyright © 株式会社コスモルート 2011
プロトタイプ#4
• 参照用データの統合・アーカイブ
• 並列検索+HTTP Streaming


                               分散MQ
 Android
           送信前に
           ログ加工 APサーバ
                                                          Cassandra

                               並列検索


 Viewer       HTTP
              Streaming


                          29   All Rights Reserved,Copyright © 株式会社コスモルート 2011
参照用データの統合・アーカイブ
• 移動経路を表示するために何千もレコードを
  読み込むのは非効率なので1つに統合する。
– ログ開始~終了の全レコードを1つに統合すると、
  長時間ログの途中からのシークに支障がある。
– 一定時間ごとにブロック化する。
• 参照頻度の低いログは圧縮して退避・削除。
– キーの絶対数を減らしてしまう。
– ディスク使用量を大きく削減する狙いも。



           30   All Rights Reserved,Copyright © 株式会社コスモルート 2011
並列検索+HTTP Streaming
• 1ノードで検索処理すると時間がかかる。
• 検索処理を並列分散して、タスク毎に結果を
  逐次送信する。
– レスポンス・レイテンシが大きく改善。



         APサーバ




                 31   All Rights Reserved,Copyright © 株式会社コスモルート 2011
プロトタイプ#4の評価
• 検索パフォーマンスも実用レベルに到達。
– アーキテクチャとしてのベースラインは完成。
• あとは公開に向けて機能追加・安定化。




           32   All Rights Reserved,Copyright © 株式会社コスモルート 2011
現在のシステム構成
• Cassandraでは実現が難しい検索のために、
  独自のIn-Memory KVSを実装。

                              分散MQ



Android   送信前に APサーバ
          ログ加工                                独自KVS          Cassandra



                              並列検索

Viewer       HTTP
             Streaming

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



34   All Rights Reserved,Copyright © 株式会社コスモルート 2011
Cassandraを1年以上使ってきた雑感
• Cassandraの得意領域を見極める。
– ログのようなシーケンシャルなデータは得意。
– お金を管理するようなシステムには使わない。
• CassandraはRDBでは実現困難な問題を
  解決する選択肢の一つ。
– RDBで問題がなければ、別に使う理由はない。
– Hadoopや他のKVSでも同じことが言える。




             35   All Rights Reserved,Copyright © 株式会社コスモルート 2011
ご清聴ありがとうございました



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

More Related Content

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

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy