2007年10月の同じタイミングで楽天に入社した凄腕エンジニアの窪田さんが主催してるMongoDBのカンファレンスが 大岡山の東工大のキャンパスであるということで参加してきました↓ 第一回 納涼もんご祭り〜寄って、見て、触ってmongo〜 #ここのところ、ずっと有給休暇を消化して海外旅行してたので、リハビリ的なアレもありw ■ さくらインターネットの話 ・さくらVPS コンテンツ事業者 : AWSへ以降 SIer, ホスティング : 専用サーバーを強化。 売上落ちるから仮想化しないとか。社長は急に気が変わって仮想化へ。VPS開始。 - パラダイムを変えないクラウド ⇒ インテグレーション中心 - 日本語サポート・きめ細やか ⇒ AmazonやGoogleのサポートはかなりイイ感じ。日本企業は? ・規模の経済 AmazonやGoogleは自社のリソースで何万台とかもあるから、それを2割貸すだけでも凄いインパクト。 CyberAgentや楽天は自社でプライベートクラウドのような取り組み。 -- ここまで2009年の話 --- -- ここから2013年の話 --- ・クラウド化が不可避なものに。SIerが個人向けクラウドサービスを行ったり。Amazon/Googleが企業向けサービスとか。 ・格安VPS搭乗で専用サーバーは売れない ・東京ではないIDCの出現(九州、福島、北海道)&外資が日本にIDC建設(Microsoft、Salesforce、Amazon) 今まではコスト削減手段だったものが、クラウドでないと出来ないモノ。 大量のデータを沢山のサーバーを使って解析とか。10年も20年も過去のデータをアーカイブしとくとか。。 さくらは値段を9割引きとか。9800円⇒980円。 値段を安くすることでどっとユーザーが増えた。 --- おまけ --- ジェネレーター系のサイトをやってる。1日100万PV。曰くレガシーな構成。 今までMySQLでやってたところを、せっかくMongoDBのカンファレンスに出るってことで自分のサイトをMongoDBに置き換え。 さくらクラウド。ブースで2万円分のチケットをもらえる。 さくらはVPS使ってる人はいっぱいいるけど、クラウド使ってる人が少ないのが悩み。 男は黙ってスケールアップ。笑 1万IOPSくらい出るから、ピークに合わせてDBを構えておく。 Webサーバーは負荷に合わせて。 MySQLで1000QPSくらいは出る。MyISAMだとテーブルロックしちゃうとか。 Innodbに置き換えてもよかったけどせっかくもんご祭なのでMongoDBにマイグレーション。 進撃の巨人ジェネレータ 置き換えただけで倍以上の性能。20ミリ秒くらい⇒10ミリ秒くらい。 その場でMySQLとMongoDBの違いのデモやろうと思ったけどXiじゃ遅くて。。そっちのレイテンシが1000ミリ秒とか。 デモ その場でさくらクラウドのインスタンス立てて(転送量課金がないので日別、月額がその場で見れる) sacloudというコマンドラインツール。タブで補完してsacloud showとか。 男は黙ってJSON。笑 SSDと普通のディスクは同じ値段とか。。 ■ お祭り会場 ブラっとブース回ってたらプロレスラーいるし。笑 窪田さんやスタッフとして参加してる下地さんに会ったり、安藤さんがEngine Yardのブース出してたり。 飛び道具的な。 チューニンガソンも参加してみたかったな。。 ■ 米国におけるMongoDBビジネスモデル 20年間アメリカにいてIT業界でサバイブしている鈴木さんのお話。 SaaS: Software as a Service。Salesforceとか。マルチテナントって言葉とセットになって。 ⇒ そっからクラウドって言われるようになった? IaaS: DevOps。米国ではDevとOpsは仲悪くなりがち。 ⇒ アイデアを形にするまでに非常に長い時間かかる。 ユーザードリブンで出来るようになった。 → 人を抱える必要がない。レガシーなビジネスの脅威に。 なんでMongoDBがダウンロードされてる?400万ダウンロード。 ⇒ ユーザードリブンなニーズに応えてるから。 NoSQLなサービスの中でもこんなに手軽なのは他にない。 NoSQLがいつエンタープライズに入ってくるか見張ってる人がいる。 ⇒ ガートナーとか。 MongoDBがにわかにその分野に入ってきつつある。 IBMでの本格的な導入事例。IBMが買収した企業はDBaaSをMongoDBで提供したりとか。 クラウデラも最近CEOが変わってエンタープライズ色が強くなってきてる。 Sqrlとか。 なぜMongoDBを? ⇒ 既存のモノを置き換える話が多い。 非構造データの量が増大。やたらJOINしたり、、。 Googleで検索されまくってる。 LinkedInでMongoDBって書いてる人が多い。 Foursquareの機能追加とかMongoDBのフレキシブルさが一役かってる。Craigslistとかも。 MetLife(日本ではアリコと組んで。Fortune50な会社)。70個のDBシステムを3ヶ月でMongoDBに統合とか。 ADP(給与計算とか福利厚生のアウトソース系)。イロイロ比較したけどKeyValueとRDBMSのイイとこどり的なアレ。 ゴールドマン・サックス。HA機能が充実してる〜とか。 MongoDBは一時期仕事で使ってたけど、お手軽さが半端無かったもんな〜。 ■ 大手SIerが語る!MongoDBの位置づけとユースケース NRIさんによるMongoDBのお話。すっごい分かりやすかった! 自己紹介スライドはJSONで。笑 丸の内MongoDB勉強会主催者の人。 このスライド分かりやすいな〜。列指向は1個のキーに対して複数の列を持てるとか。 ドキュメント指向データベース。XML DBよりもシンプルでスキーマとかいらないし、とか。 MongoDBとCauchDBの比較もスゲー分かりやすい。 Couchはインデックスじゃなくて予めビューっていうかMRなアレを容易しておく〜とかって知らなかった。 レプリケーションや冗長化とかも簡単で。どうやってスレーブがマスタに昇格するかとかって話もわかりやすかったなぁ。 Mongoといったらコレコレ的な。データセンターマタギもマシン1、2、3を別センターとかやれば出来るよねんとか。 その他、RDBMSだとスキーマ変更とかってのがアレだけど、MongoDBならスキーマレスだから アジャイル開発とマッチしてるとかって、そうだな〜って思ったり。 地図関連だとMongoDBの機能でやりくりできるとか。盛りだくさん。 最後に注意点。 ・複数ドキュメントを一貫性もって更新できない。外部キーとか結合っていう概念がない。⇒ だからスケールする ・スキーマがない。 ⇒ データ登録時にエラーがないとか、データの型が分からないとか ■ 実演!MongoDB障害運用 楽天の窪田さんの講演。MongoDBJPの代表で、データベースエンジニア養成読本っていう書籍に寄稿したりしてるらしい。 Mongoha書き込みより読み込みが多いシステムに最適⇒Webシステムって大体そう。アンケートシステムとかだと厳しいけど。ポータルのニュースとか。 MongoDBのreplica-setの話。 Primary: 書き込み可能 Secondary: 読み取り専用 すべてのノードは同じデータを持ってるから読み取りに強い。 Primaryノードは選挙で選ばれる。 構成ノードが死にすぎるとPrimaryが不在になる。 そうするともう復旧できない。致命的。 3台で2台、5台で3台、7台で4台、、ココで手打たないとっていうデッドライン。。 じゃあ選挙やらないと??ネットワーク分断でこんな事になっちゃったり。。 Split brain。データの一貫性が致命的に破壊されるので修復できない ⇒ だから選挙 こんなんなっちゃうとエラいこっちゃ。。
こっから本題。 mongodb.jp。200UUくらい。httpdは1個でOKなくらい。 基本はセカンダリ。ちょっと書き込みがあるのでプライマリ。もう1台はhiddenでslaveDelay。 Hiddenノードからクラスタの状態をチェック。OK。 プライマリのmongodを落として、Hiddenノードからみると、セカンダリがプライマリに昇格してる。 この3台中2台状態がギリギリなところ。 ログみると選挙やったよーって、、ってのがなかなか見つからず(こういうデモってのはなかなか難しいですよね) で、元Primaryノードを起動。優先度上げてあるのでまた選挙があってまたPrimaryになってサイトも無事に。 次にSecondaryを殺す。Webサイトはもちろんそのまま継続し続ける。 また上げるStatusがSTARTUP2⇒SECONDARYに。 #んー、画像つらいな。。 で、1/3になっちゃうとどうなるか。 PrimaryとHiddenを落とす。SecondaryはPrimaryにはならない。 読み込みだけであればサービスは継続するはずが。。。ブラウザからアクセスすると返ってこない。。 ログを追うが原因分からず。。とりあえず落としたMongoを復活させてみる ⇒ 復旧 ちょっとデモは残念になっちゃったけど、すっごい分かりやすい話だったな、と。 バックアップとリストアの話。 mongodumpコマンド。Hiddenノードはバックアップ用に。 dropデータベースしてから画面でデータ取れなくして。笑 リストアしてデータ復旧、と。 質疑応答 ・リストアしたデータをインポートするのにPrimaryノード以外は? 書き込みなのでPrimaryじゃないとダメ。mongos経由であれば書き込みはPrimaryに持ってってくれるはず。 ・mongosはSPOFになっちゃわない? 基本的にアプリサーバーのローカルに。
なかなかデモって難しいところがありますが、お話はスッゲー分り易くて、Mongoナイス!って感じかなーと。 ■ 丸の内MongoDB勉強会 in 納涼もんご祭り 月一で丸の内でやってる勉強会。発表者やLTを募集中です、と。 ・Node.js+Mongoose+MongoDB で作るWebアプリ @noviさんの発表。 RubyでいうSinatra的なExpressを使ったブログアプリ。 Nodeな話。 とにかくクイックに開発&動作に主眼。 フルスタックなフレームワークと違ってレールみたいのがないので、ある程度自分で設計する必要がある。 ブラウザにはないファイルシステムとか。fsをrequireすると〜 Webサーバーも同じようにhttpをrequireすると〜 ExpressにおいてはMiddlewareというのがポイント。 MongooseはORM。MongoDBの薄いラッパー。スキーマとバリデーションが付いてる。 スキーマレスって言ってもスキーマデザインしなくていいわけじゃねーぞ、と。 で、こんなブログアプリ作りましたよ的な。 デモ チラっと見えたブラウザはdjay2がw ソースをcloneしてきてnpmで依存のあるライブラリを。 ローカルにMongoDBを立ち上げて ローカルのMongoDBにデータをインポート。ブラウザからデータが見れる。 やっぱこうやってソース見ながら説明聞くのって分り易いなぁ。 インクリメントとか。 ・ホスティングサービスで始めるMongoDB ZenClerkというサービス。 ECサイトにタグを貼ってもらって集めたデータをホゲホゲすることで コンバージョンに結びつけるためのコンシェルジュサービス。 3人しかメンバー居ない中(エンジニアは1人しかいない)で自分たちだけでやるのはちょっとシンドイかも⇒ホスティング。 んで、ホスティングどうなの?っていうPros/Cons。 MongoHQとMongoLabの違い。 MongoHQの価格はよくわかんかいけど、MongoLabはお金周りの説明が丁寧。 ⇒2つとも大差なかったり。 誤請求のオンパレード。。インスタンス生成や停止の機能に不具合が。。 毎月コレはつらいですね。。 MongoDBでSharding使えない?? 先に言ってよって感じですかね。。 そんなに運用が難しいのでしょうか…。 こういう事例はなかなか聞けないのでとても参考になりました。
お祭り気分が味わえる楽しいイベントでした〜ヽ(´▽`)ノ