第1回ライブドアテクニカルセミナー「インサイド livedoor Blog」講演メモ

現状のlivedoor Blogのシステム構成を、中の方が解説してくださいました。

個人的には、もう少し時間をかけてゆっくり聞きたかったセッションです。ものすごく参考になりました。

講演者

  • 垣内秀之 氏
  • 株式会社ライブドア メディア事業部 ブログBU開発グループ

livedoor Blogのサーバ構成

  • 2003年11月OPEN
  • 270万ユーザ
  • 5000万PV / day
  • 10万投稿 / day
  • データ量 約16TB

※ 約1年前のデータとのこと

システム構成

フロントエンドにロードバランサ

  • portal-www, cms-www
    • apache2.2 + mod_proxy_balancer
  • portal-app, cms-app
    • apache1.3 + mod_perl + sledge
  • blog-www
    • apache2.2 + mod_ldblog_mapper2 + mod_include (SSI)
  • blog-app
    • apache1.3 + mod_perl + sledge
  • DB
    • MySQL
    • user-cluster DB
      • 記事、コメント、デザイン
      • user単位でパーティショニング
      • 1 clusterあたり1〜2万user
      • 150clusterくらいある、分割は手動での運用
  • Storage
    • 商用ストレージを使用
    • 数個のノード
    • blogのフロント部分と、ほぼ全てのappがNFS mountしている
    • 静的ファイルキャッシュを格納
  • image Storage
    • 商用ストレージのコスト問題により新設
    • appからはWebDAVで接続
    • squid -> apache(振り分けしている) -> mysql
      • dispatcher, replicationをapache moduleで実装

まとめ

  • apache + mod_perl + sledge
  • user-blog側の多い処理は、apacheモジュール化している
  • 一部、DRBDやLVSを使っている箇所もある
    • ほとんどのサーバは二重化されている

apache独自モジュールについて

mod_ldblog_mapper2

  • URL to UserPath(NFS)変換モジュール
  • memcached / DBの参照結果を環境変数にセット
    • どこにデータがあるかを問い合わせて、
      • キャッシュにあれば、、、静的ファイルキャッシュから返却
      • なければ、、、ファイルキャッシュに貸し出し

静的ファイルキャッシュ

  • プラグイン部分がキャッシュの全ページに存在
  • 何か更新されるたびに、ほぼ全てのページの再構築をする必要があった
  • なので、プラグイン部分を別ページ化
  • で、mod_include(SSI)を使って挿入するようにした
  • 再構築は、ファイルを削除して、次にアクセスされた際に、再度書き出しているのみ(遅延rebuild)

新管理画面について

  • 3年半ぶりのリニューアル
  • UIをEUC-JPからUTF8へ
  • ブログ保存データも、新規ユーザからUTF8化
  • 管理画面のURLを変更
  • マルチブログ / グループブログ / テーマブログ

表側

  • jQuery + jQuery UI
  • swfupload

文字コード多重化

  • blog単位でcharsetを切り替える必要がある
  • 旧CMS、Portal、既存BlogはまだEUC-JP
  • 新規ユーザからはUTF8

本文やコメント以外にも色々あって、手動変換は大変すぎる
なので、ORマッパーのアクセサーの部分で、文字コードを比較して、必要に応じて変換処理を行うものを組み込んだ。

管理画面のURL変更

  • livedoor.comのSSOからの分離が主目的
  • livedoor auth(OpenID)と連携して自動ログイン

新サービスについて

  • livedoor Blog ASPやります!
    • 2009/4より開始予定
    • livedoor BlogをOEMとして使える
    • OEMで登録されたユーザも、ライブドアブログに書き込んだりできる

OpenIDについて

  • 既にlivedoor Auth OpenIDとして提供中
  • OPだけじゃなくて今後はRPに?
  • OpenID2.0を採用

最後に、ASPパートナー募集中!とのこと

その他、質疑など

  • user-Blogは結構、攻撃されることが多い
    • 10秒でアタックを防御する(mod_dos_deteceter)ものがあったり
    • スパムをブロックするブラックリストを持っていたり
    • (これ以上は、あまり公開できない、と)