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

ウノウ株式会社 尾藤正人さん

  • ウノウはそんなに大規模じゃないよ(笑)
  • 大規模とはいえないけど。。。

サービスの開発・運用

  • ウノウの紹介
  • コンシューマ向けWebサービスの開発
  • BtoC
  • サービスいろいろ
  • エムエルじゃないよメーリスだよ
  • 社員30人

サーバをたてる

自社サーバ
  • 小規模or大規模
  • 空調
  • 場所
  • 引っ越し

いろいろ面倒。

レンタルサーバ
  • メリット
  • デメリット
    • 拡張しづらい
ホスティング
  • 中規模or大規模
  • メリット
    • 自由度が高い
    • 設備が充実
    • 安心
  • デメリット
    • 高い
ウノウは?
  • 自社サーバ and レンタルサーバ
  • ベンチャー流サーバ構築のすすめ(ハードウェア編)→はてぶ沢山
    • ハードウェアを統一
    • 構成を全部同じにしておくと、代替がききやすい
    • フツーの筐体マシン
    • エレクタに格納
    • 後ろ向きで並べる

写真

    • マジックテープでケーブルをまとめる
    • 養生テープ(引っ越し屋さんが使ってるテープ。はがしやすい。メモも書ける)
    • 色違いのLANケーブル
    • LANケーブルに長さを書いたラベルをつける
  • ネットワーク
    • 2回線以上引く
    • DNSを内側において回線を自動的に切り替える
    • グローバルにプロキシサーバを置いてリバースプロキシで。グローバルIPはそんなに沢山もらえないから
    • ローカルにはクラスBのプライベートアドレス
    • 各サーバに恒久的な物理名
    • 役割に応じて論理名をつける
  • ソフトウェア
    • OSはコピーするもの restore, dump
    • ext3
    • LVMは遅い
    • 設定ファイルはコピー(puppet良さそう)
    • 極力パッケージを使う
    • ソースからインストールするときは/optへ
  • 運用
  • セキュリティ
    • パッケージのアップデート
    • 不必要なポートをすべて閉じる(iptables)
    • あけるポート 22 ssh,25 smtp,53 DNS,80 http,443 ssl
    • ftp禁止!
    • sshパスワード認証禁止!ウノウでは完全に禁止。全部公開鍵認証で
    • rootで作業禁止!sudoで
  • トラブル対策
    • ''近くに住む''(笑)
    • メールで起きられるように鍛える(笑)
    • トラブルが起きたときのネットワークの確認順序 ping ssh HTTP
    • 状態確認 top vmstat netstat ifconfig dmesg
    • ログの確認 /var/log/message /var/log/secure /var/log/httpd/error_log
  • アプリ側での工夫
    • スケールできるように
    • セッションはDBに。PEAR::HTTP_Session使うとけっこう簡単にできる
    • 更新系クエリと参照系クエリを分ける
    • JOINは使わない。DB分割できるように 注:Cakeで解決!
    • コードキャッシュ XCache, eAccerelator
    • コード最適化 Zend Optimizer
    • プロファイラ xdebug
    • ベンチマーク PEAR::Benchmark

サービスの始め方

  • 小さく始める
  • 1〜2人 1台
  • 短期間で公開 1,2ヶ月が目安
  • ユーザの反応を見つつ少しずつ拡張する
  • 時には大きな方向転換、時にはあきらめ