KOF2009 に行ってきた
毎年この時期になると KOF(関西オープンソースフォーラム)があるので、行ってきた。
去年は行けなかったので 2 年ぶりか。
今回は id:stanaka さんの「ウェブサービスのパフォーマンスとスケーラビリティ」と「Ruby Lightning Talks」、Piece な方々の「Eclipse + PHP + TDD = MakeGood!」に参加。
以下メモ書き。
ウェブサービスのパフォーマンスとスケーラビリティ
- パフォーマンスの計測方法
- フロントエンドのレスポンス
- 広告系は JavaScript で遅延ロード
- CSS Sprites で画像リクエストを圧縮
- メインのコンテンツを先に表示する事で、ユーザを待たせない
- バックエンドのパフォーマンス
- ヘッダを適切に出力
- ETag, Last-Modified, Cache-Control を正しく設定
- ブラウザ側にキャッシュさせて、パフォーマンスを出している
- レスポンス時間の計測には Hadoop 10 台で計測方法
- はてダの生ログ約 4GB/day を 10 分程度で解析しグラフ化
- サーバ構成
- 全てのサーバで物理的に 500 台くらいで、仮想化して 1500 台くらい
- はてブのシステム構成はよくある三層構成でサーバ 64台
- Web サービスの 3 つの指標
- 「スケーラビリティ」「高可用性」「コストパフォーマンス」
- CPU 4Core, RAM 8GB の 1 台だと 100 万 PV くらいが限度
- レイヤーごとにスケールする
- アプリケーションサーバに近い部分(状態を持たない)はスケールは台数を増やす
- データソースの部分(特に書き込む系)は難しい
- ボトルネックを検出するためにサーバ監視ツールを入れて可視化
- 大量 PV を予想してコードを書く
- 大規模データの蓄積を予想する
- 発行する SQL とか
- 高可用性
- ロバストなシステム
11 月からの仕事で分散とかがキーワードになって出てくるので非常に参考になった。
# はてなステッカー争奪じゃんけんに負けたのが悔やまれる orz
Eclipse + PHP + TDD = MakeGood!
- Piece Framework の紹介
- TDD とは?
- 機能拡張、顧客からの要求、法律が変わったなど外的要因
- 外的要因 -> テストコード -> 動作する奇麗なコード
- テストコードを書く事で安心できるコードになる
- TDD で得られるもの
- コードを読み書きする心地よさ
- テストをパスする安心感
- コードを変更する勇気
- 品質
- 不具合の減少
- TDD に必要なもの
- 原則
- 一度に一つの事しかしない
- 新機能追加とバグフィックスを一度にやらない
- バッグフィックスをしてから新機能追加する
- 原則
- PHP のテスティングフレームワーク
- テストランナー
- テストスイーツがなくても実行できる
- Eclipse から PHPUnit, SimpleTest が実行できるのか?
- 外部プログラムとして実行できる
- ただしコンソールに表示するだけ最低限の機能のみ
- テストコードの一部のメソッドだけテストしたいなどができない
- 外部プログラムとして実行できる
- MakeGood!
- パッケージエクスプローラから実行可能
- PHP エディタから実行
- テストコード、プロダクトコードから実行
- 現状 PHPUnit のみ。ただし将来的には SimpleTest もサポート予定
- CakePHP のユーザにも使って貰えるように
- 現状あまり多くの事ができないので、フィードバックがほしい
Stagehand_Testrunner は凄くお世話になっていて、これがないと凄く困る。
個人的に PHP の開発には Eclipse はいらないけど、会社では Eclipse ユーザがいるので、テストの敷居が低くなると思う。
とても楽しかった。こういうイベントに行くと刺激を受けるのでモチベーションがあがる。
来週は Hadoop カンファレンスに行って、その次は 1 回目以来の WebTeko に行く予定。