DeNA Technology Seminor #2 へ行ってきました。

    DeNA様主催の勉強会というかセミナーへ参加してきました。
    今回はMySQL特集ということで、

    • Spider… 斯波健徳氏
    • handlersocket plugin…DeNA 樋口証氏
    • MySQL tips…奥野幹也氏

    の3本立てでした。

    18:30スタートだったのですが、道に迷ってしまい若干遅れてしまい斯波さんの講演の途中でしたので前半を若干聞き逃してしまい痛かった。。。
    以下感想と思ったことなどをつらつら

    1.Spider

    SpiderというのはMySQLのでDatabase Shardingを可能にするストレージエンジンです。

    ちなみに「Sharding」(シャーディング)とは複数のデータベースにデータを分散して運用することで、ざっくりいえばShared Nothing的な分散データベース構成のことです
    TwitterとDiggがNoSQLの「Cassandra」を選ぶ理由 - Publickey

    Spiderの名前は聞いていたのですが実運用例がすでに結構あるとのことでいくつか紹介していました。

    Sagool.tv(Teamlab)

    バッチ処理の過負荷により24時間以上かかってしまっていたバッチ処理を(Spiderを導入しただけ。ではないが)8時間に現象させる
    パフォーマンスは10倍程改善した

    KADOKAWord.jp

    SpiderとBlackholeを組み合わせた

    MicroAd

    広告最適化データ更新のバッチ処理にて元々一日2000レコードの更新が限界だったが、Spiderの導入とともに最適化したサーバの増強を合わせて行い1億レコードの更新を可能にした

    すべてインフラ側での話なのでアプリケーション側の変更はなし(もしくは、ほとんどなし)で対応できた人のこと。
    その後懇親会でDeNA 山口さんとお話させていただいたときも「これからはアプリケーションエンジニアがインフラも面倒見なければいけない。っていう労力がインフラ側で吸収されてアプリケーションに専念できるようになる。」とおっしゃられておりました。まぁまたしばらくするとやらなきゃいけないようになったりして波があるとも言っていたけど。
    少なくともPCユーザ、携帯ユーザ、スマートフォンユーザとインターネット接続端末やインターネット人口は増え続けているし、行う処理や扱うデータの容量はどんどん増えて言っていることを考えるとまた更なる対策が必要になったりするのかなぁ・・・

    これはインフラ側の対応だけの話なので、運用実績もすでにあるということですし、弊社でもソーシャルアプリなどユーザ流入数が膨大になることが見込まれるものには積極的に採用できるようにしたいですねー(運用サーバが複数台とかの大規模なインフラのシステムになりますが)

    Spiderに関してのUnohさんの記事を見つけたのでリンクしておきます。
    ウノウラボ Unoh Labs: 国産MySQLストレージエンジン「Spider」の作者、斯波健徳氏に聞く

    ※追記:Spiderを利用してのSharding,ReShardingの方法説明スライドがありましたのでリンクしておきます。
    Advanced Sharding Techniques with Spider (MUC2010)

    2.handlersocket plugin

    樋口さんからまだスライドなどの情報は開示されていませんが近くDeNA社のブログで公開されるとのことです
    Technology of DeNA
    かなりMySQLの仕組みについて突っ込んだ話をされていたので正直付いていくのがいっぱいいっぱいで。。。あまりうまい感想は言えないのですが。。。
    MySQLでは通常libmysql/mysqldを通してSQLで処理を行うのですが、このSQLをパースして実際のDB操作処理を行う部分で結構処理負荷がかかっているそうです。
    そこで単純な更新や参照に関してはSQLを使用せず、MySQLのストレージエンジンへ直接(?)アクセスして処理をしてしまおう。と。
    それなら他のKVS(Memcachedとか)でいいのでは?というところですが、ただしSQLからも参照可能・互換性のあるデータにしたい。ということでこのような手法をとるプラグインを開発されたそうです。
    かなりグラフやMySQL、Linuxのプロセスを解析してベンチマークを取っていましたが単純参照であれば10倍近くの処理性能向上がされていました、特に取得列数が多い場合に有効に働くそうです。
    ちなみにプロトコルはmemcachedとかではなく独自の実装を行っているそうでかなりシンプルなものでした。(だから早いんですかね)

    3.MySQL tips(MySQL  UPDATE)

    MySQL5.5の新規機能についての説明でした。
    とにかくInnoDBです。もう時代はInnoDBがメインです。

    MySQL 5.5 Update #denatech
    奥野さんのほうで当日使用されたスライドを公開されているのでそちらを見たほうがいいかもですが
    トピックス的なところだけ。。。
    MySQL5.1からInnoDB Plugin 1.0が使用可能ですが、5.5ではデフォルトでInnoDB Plugin 1.1が使用されるそうです。

    1.4バイトUTF8

    Innodb  Plugin 1.1では4バイトのUTF-8が使用できるようになり、今までバイナリコードなどで代用(ソート順に難有り)していたものを正式に使用できるようになりました。(文字コード名はutf8mb4)
    これは日本人に嬉しいですね!

    2.Semi-Synchronous Replication

    いままでのレプリケーションは非同期的なものなのでマスターからスレーブへの同期処理中に処理が分断されるなどするとデータの抜けなどが発生していましたが
    Semi-Synchronous Replicationでは一度スレーブとの通信を受け取る、いわゆる同期処理により取りこぼしを防ぐ機構が搭載される

    3.innoDBの改善

    なんか全体的に凄いよくなってる(すみません、、、まとめきれず。。。奥野さんのスライドみてください。。。)

    その後懇親会が行われ、色々な方(DeNAの方、同業者の方)と色々お話させていただきましたがその中で印象的だったのは
    Klab五十嵐さんと喫煙所で出会ってお話させていただいた中で「ソーシャルアプリという形でDeNAさん(モバゲー)等の大手メディアのアクセス量、それこそ受託や自社サービスではなかなか触れる事のできない量の負荷を受けることができて技術者にとって非常に勉強になる場を与えてもらっている」
    という話題になり、そのとおりだなーと思うとともに、結果的にWEB技術者界隈に対しての社会貢献としての一面もあるんだなーと思い、ソーシャルアプリはバブルだーもう弾けるーはじけた-というような話や儲かる儲からないの話に終始しがちなこういった話ですが、またそういった面もあると技術者の端くれである自分も思いました。

    DeNAの方々、このような良い機会を与えていただきありがとうございました!