『Mobageを支える技術』読書メモ

あの DeNA のエンジニア陣が執筆した本なら、買うしかないでしょ。WEB+DB PRESS Plus ほとんど買ってる気がする。

今回は Twitter で感想をツイートしながら読んでみた。読み終わった後に感想まとめるのは大変だけど、読んでる途中なら思ったことを書きだすだけだから楽。当分このスタイルでいこう。

1章 ソーシャルゲーム概論

ソーシャルゲームソーシャルネットワーク上で展開されるオンラインゲーム。
ソーシャルゲームアーキテクチャWebサービスとそんなに変わらないな。

2章 ブラウザベースのソーシャルゲームフィーチャーフォン

フィーチャーフォンではMobaSiFっていうフレームワークを使っていて、こいつがキャリアの違いを吸収しているらしい。
フィーチャーフォンのブラウザの表現力はFlash Liteで補う。Mingというモジュールで動的に生成しているけど、ソーシャルゲームだからだよな。

3章 ブラウザベースのソーシャルゲームスマートフォン

ハイパフォーマンス・ソーシャルゲームでやってることは、ハイパフォーマンスWebサイトとだいたい同じ。リクエスト減らしたり、画像圧縮したり、 JavaScript 遅延ロードしたり。

4章 アプリケーション版のソーシャルゲーム開発

ngCoreはJavaScriptiOSAndroid用のゲームが作れる。ソーシャルAPIはもともとなかったけど、DeNAに買収されたあと追加されたのかな。

5章 35億PV/dayをさばくインフラ構成

データベースサーバーにアクセスするとき、IPアドレスDNSを用いて取得。MyDNSを使ってるとのこと。

6章 データベースのレプリケーション

レプリケーション遅延対策について。アプリ側の対策はできること2つだけだから必ずやっておくとして、インフラ側はできることから取り入れていこう。

7章 データベースの高性能化/高可用性化

シャーディングは計算式方式とマッピングテーブル方式が紹介されてるけど、どちらもReShardの問題は発生する。あらかじめ分割しておいて、スケールアップするしかないのかな。
無停止メンテはMHA for MySQL使おう。

8章 数千台のサーバを運用する技術

MobageではcatalystMySQLで作った Admintoolという独自のサーバー情報管理システムをつかってる。WebUIだけでなくAPICLIコマンドでもアクセスできる。

9章 MySQLとの付き合い方

Sharding環境でのデータベースプログラミングの話。DBIx::DBHResolverというモジュールを使っているらしい。RailsならOctopus かな。

10章 Job QueueとMessage Queue

サーバー側の非同期処理では、Q4MでMy SQLをJob Queueとして利用。ただしWorkerは自作する必要あり? Redisを使うresqueとどっちがいいだろう…。
resque はGitHubで開発・利用されてるから、Rubyならresqueの方が導入しやすそうだ。

11章 アプリケーションチューニング

アプリサーバーのローカルにmemcachedサーバーを立てるというのはナイスアイデア。真似してみよう。ただ、DNSのキャッシュまでするケースはそうそう無いだろうな。

12章 DevOps

ログ監視のフレームワークにはKomainuを使っているようだけど、今ならFluentdを使いたいところだな。

13章 大規模データマイニング

Hadoop上で動くMahoutを使っての大規模データマイニングの話。Hadoop関連全然追ってないから、必要になったときまた詠む。
リーンスタートアップだと、ユーザーの反応を分析するのが重要なんだけど、そのためにいきなりMahoutを使うのはやり過ぎな気がする。手軽にデータマイニングできるフレームワークが欲しいな。

Mobageを支える技術 ~ソーシャルゲームの舞台裏~ (WEB+DB PRESS plus)

Mobageを支える技術 ~ソーシャルゲームの舞台裏~ (WEB+DB PRESS plus)