sgykfjsm.github.com

Riak Meetup Tokyoに行ってきた

一度は雪のため中止となったRiak Meetup Tokyoに行ってきた。
以下はメモ書きなので、ところどころ漏れや間違いがあるかも。

アジェンダはこんな感じ。

  • shoジャパン株式会社 上西康太
  • Riak & Riak CS Introduction / RICON2012参加報告
  • Riakの簡単な紹介、および昨年10月に開催されたRICONの参加報告をします。RICONは、Riakだけでなく分散システムおよび分散データベースに関するトピックを扱ったカンファレンスで、歴史は浅いですが非常に多くの興味深い発表がありました。そのいくつかをご紹介します。
  • ヤフー株式会社 阪田浩隆
  • Riak事始め&デモ
  • Riakを使用するにあたり必要なセットアップ作業や設定方法として、NoSQL を利用する際の注意点や、使いどころの紹介を踏まえた事例をご紹介します。また、簡単なデモも実施します。
  • 株式会社IDCフロンティア ビジネス推進本部 新基盤開発部 佐藤博之
  • 【事例紹介】RiakとCloudStack
  • RiakとCloudStackはどのような連携をしていくのか。CloudStack の今後の動向を11月にラスベガスで開催されたCloudStack Collaboration Conference 2012 の参加記もあわせてご紹介します。
  • LT
  • Riak with EngineYard (仮) @yando from EngineYard

Riak & Riak CS Introduction / RICON2012参加報告

遅刻したので最初の海外事例は半分ぐらい聞き逃した…

このへんにRICON2012の講演とかプレゼン資料がある。

発表スライド

Bump

  • 2010-2012にかけてMongoDBからRiakへ
  • データが膨らんでMongoDBに対応できなくなってきたから。
  • Haskellで実装されているモンタージュというRiakクライアント(プロキシみたいな?

BEST BUYの事例

  • 日本で言うとヨドバシカメラみたいな。
  • 全米第3位の小売店
  • Product CatalogをRiakに突っ込んだ
  • 基本的にはこっそり試してうまくいったら、メインに載せていくやりかたでRiakを導入した。
  • クリスマス商戦はRiakで乗り切った

enStatus

  • MySQL→RiakへのMigration
    • 結構多いらしい
  • Amazonがdownしたときのバックアップサービスを提供
  • 複数のクラウドを切り替えたり、組み合わせて使えるようにするサービス
  • クラウドのデータはキャッシュしたりするので、MySQLではスケールしない。

Comcast

  • ケーブルテーブルみたいなところ
  • Netfilxみたいなやつ
  • ユーザのプロファイルデータや視聴ログを格納

OpenX

  • Adプラットフォーム
  • MySQL->Cassandra->Riak
    • 全部Riakにするわ
  • 年間1兆の広告を裁く
  • 2009年頃
    • 鉄板のLAMP構成でプラットフォームを組んでいた。
    • トラッキングデータをCookieにぶち込んでたけど、やっぱストレージが良いよねってことでKVSへ
    • MySQLとかを使ってたけど、もうお腹いっぱい
  • 2010年頃
    • 初期のCassandraを導入
  • 2011年ごろ
    • ユーザのアクティビティを残そうぜ
    • 自前の分散系システムを組んだ
    • CassandraをやめてRiakを導入してアプリレイヤでユーザ・データを格納していった。
  • 2012年ごろ
    • 広告主側のデータをCouchDBに入れていた。
    • データセンターをまたいだレプリがアレなので、RiakESを導入

Voxer

  • 日本で言うとLINEみたいなサービス
  • LAMP->CouchDB->Riak + node.js
  • Riakを色々disしてたけど、ちゃんと動くところは評価
  • ストレージ部分は基本的にRiak
  • 11nodeで500GB -> ~60node 数TBのデータ増大にも対応

Keep CALM and Query On

  • コンピュータやデータベースの歴史や性質を英国になぞらえて解説
  • DBのConsistencyは必要だよねって話
  • CALMとはConsistency and Logical Monotonicity
  • 手続き型言語→関数型言語→分散型言?

Riak事始め

ほとんどデモ

Riak / Riak EDS

  • PKG
    • OSS
      • 1クラスタ構成
    • 有償版
      • クラス構成OK
  • インストールはrpmでyum
  • 設定を3箇所ぐらいIP書き換えて、それをコピーすれば設定はOK

  • 高速にデータをアクセスさせたい場合はKVS一択

  • Y!の心臓はほとんどKVS
  • 特定の集合から特定のデータを抜き出したいならRDBのほうが良い
  • 将来的にデータ件数/容量が増えることがあ確実である
  • オペコストを軽減したい場合
  • システムが巨大化してしまい、運用コスト軽減を検討してる時に良い
  • RiakCSはマルチテナントをかけている。
  • セキュリティ上、adminの鍵を設定する必要がある。
  • それ以外はRiakと同じ
  • CSはS3と互換性がある。s3cmd
  • S3 fsの稼働は不安定じゃね?
    • Y!の中の人がS3 fsのコミッターになって安定するようにした。最新版使えば対応している。
    • とはいえ、s3fsはs3のためのものなので別にRiakのため、というわけではないということに注意

以下の様な構成のアプリについてのライブでも行われて、画像・動画の変換がスピーディーに行われているさまを見せてくれた。

client <-API call -> Riak cluster <-mount-> Web SV
  • clientから画像や動画をアップするとRiakに格納
  • クラウドストレージを簡単に構築できる。
  • クラウドストレージの導入
    • LOHACO(Yahooとアスクルの共同事業?)
      • 登録件数
        • 20万
      • ファイル
        • 画像データ 5k-500k
      • リクエスト
        • 450/sec
  • 構築からリリースまで
    • 構成検討・各種調整で1week
    • 構築1day
    • test, release 1week
  • データをフラットに置くと一覧が見れなかった。
    • ディレクトリに分けて対応
    • v1.3では対応済み

Q&A

  • ベンチマークは?
    • レスポンスから帯域を出して比較。世の中のツールは使わず、自前のスクリプトでやってる
    • bash benchは使ってない
  • Riakのバックアップって必要?
    • 頑丈なのでなくてもいい。
    • アクセス分散のためにレプリをするのが本来の使い方
  • メンテはどう?
    • メンテは1台づつやってる。サービスを止めないため。
    • 分散なのでそれが可能。

【事例紹介】RiakとCloudStack

  • CloudStack
    • GUIが良い。色々なツールが標準で付いてるよ
    • 110以上のクラウドサービスで採用されており、デファクトになりつつある。
    • Apache名義でOSS版が出てる
    • 有償版もあるよ
  • CitrixからASFに技術者が参加し、有償版のフィードバックがOSS版に反映されている。
  • ASFに寄贈されて開発スピードが増した。
  • Paas事業者とかが積極的に採用している。
  • CloudStack徹底入門とかが国内で発売されて、一時品切れ状態
  • Basho的なCloudって?
    • Riakはcloudのあるべき姿に近いのでクラウドストレージに最適だよね
    • RiakCSにてMulti-DC replicationに対応したよ
    • CloudStackとの連携をv4.0.1から開始(2013.3予定
      • CloudStackのセカンダリストレージとして使えるようになるはず
  • CloudStackとの連携
    • CloudStackのスナップショットとかテンプレートを格納するためにRiakをストレージに使っている。
    • →ストレージってなんでもいいんじゃ?
    • →パフォーマンス的にセカンダリが遅いと困る。その点、Riakは結構良い感じらしい。
  • IDCFの分散ストレージにもRiak使ってるよって話(宣伝なので割愛

LT Riak with EngineYard (仮) @yando from EngineYard

  • EngineYardのエンジニアさん
  • fbページをイイねしてくれると嬉しい
  • Riakに力を入れている
  • Paasやってます
  • デプロイをよろしくやってくれるやつを提供
  • Chefですべてを構築し、その上でアプリをデプロイ
  • 対応しているDB
    • PostgreSQL
    • MySQL
    • Riak
  • Riakのクラスタを任意の台数構築できる
  • HA ProxyをAppとRiakの間に立てるので、Appがアクセス先のRiakのNodeをことを考えなくても良い。
  • DEMO
    • GUIで言語やサーバなどを選択
    • クラスタ構成
    • (なんかポチポチやってた)
    • データの取得はcurlだったり各種ライブラリだったり。
  • Riak Searchの有効化->もうできる。
    • 全文サーチできるけど、Yokozunaに移行していくので、YokozunaがStableになったらそっちを使うよ
  • サンプルアプリとの統合
  • スナップショット
  • 使用率ベースでのアラート
  • Chefのレシピを活用してるので、GUIからポチポチやってれば後はよろしくやってくれるっぽい。

所感

Riakを導入している企業が最近増えてきたとは聞いていたが、実際に事例を聞くと感覚としてRiakが実用ベースで使われていることを実感した。
印象的だったのは、Riakを導入するにあたって裏でこっそり試してうまくいけば実導入に踏み切ったという事例。
なかなか真似できない(試しても本採用するには技術以外の要素が絡むことが多いので)が、それだけの魅力がRiakにあるのだろうと思う。
ライブデモはちょっと手間取っていたようだが、実際にインストールなどは確かにやりやすいので、とりあえず試すという分には敷居が低いプロダクトだと思う。

とはいえ、Riakを使うに値するだけのデータ量があってこそ、そのパフォーマンスを活用できると思うので、導入にあたっての勘所を養うためにもRiakの導入事例についてはアンテナを立てておく必要があるだろうと思う。
また、個人的な偏見かもしれないが、一般的なDB運用担当はSQLやシェル以外のコードを書く機会が少ないので、LLなどのスクリプト有りきのデータ運用を現場が受け入れることができるかが普及の鍵だとも思う。

いずれにせよ、Riakはとても魅力的な製品なので個人的にウォッチを続けていこう。
うちの現場で導入して欲しいなぁ。