大規模サービスの開発・運用 GREE編 - PHPカンファレンス2007

グリー株式会社 藤本真樹さん

GREEの昔

  • PV 50万
  • ユーザー数 10〜20万
  • サーバー 8台
  • ソースコード 400files
  • 開発チーム 1.5人
  • マンションの一室

GREEの現在

  • PV 6000万〜1億
  • ユーザー数 200万
  • サーバー台数 600-1000
  • ソースコード 5,300 files / 500,000 lines
  • サービス 10ぐらい
  • 開発チーム 20人くらい

ソースコードアーキテクチャ

  • frontend
  • service
  • src
  • ディレクトリ構成とか
  • 利ファクタリングは避けられないよ
  • 時世的に他言語ブリッジも考えておいたほうがいいかも

データ

  • データは増える
  • 増える速度も増える
  • DB分割
  • インデックス張る
    • slow-logをみてEXPLAINしてみたり
  • キャッシュ
    • データキャッシュ
      • キャッシュストレージはMemcache, Mysql
      • ウノウでMemcacheで最近苦労している。Memcacheサーバーの足し引きめんどい
    • スマートキャッシュ(書きながら命名
      • 更新時にデータを更新
      • イベントハンドらみたいな感じで
  • TEXTフィールドを別DBに分割(効く)
  • テーブル分離 (JOINしない)

サーバ構築/運用

  • 500台になるとさすがに厳しい
  • Debian GNU?Linux完全依存
  • 全部aptパッケージ管理
  • つまり
  • サーバー増えてくると管理ツールっぽいものが必須になってくる
  • でもツールは意外に無い
  • 多少の犠牲を払ってでもサーバOSとかは一律でそろえたほうが楽

開発/リリース環境

  • 開発環境
  • 10人
  • svn upしたら 10分まちとか

根幹システム/ライブラリ

  • RDBMS
    • MySQL Clusterとかちょっとまだきつい
  • PEARのHTTP_Requestはバグバグで独自HTTPローダ ← 確かにバグバグ
  • ApacheモジュールでQRコード生成
  • Smarty遅い
  • 全文検索 Senna (Sennaちょっとどうよ?そんなにデー多数多くなければいいかも)

質問タイム

  • deployどうしてるのか