frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

PHPカンファレンス2008。

今年も行ってみたー。ぐりちゃんも一緒に。

 

でも、WiFiでうまく繋げなかった…何故?orz

なにはともあれ、いつも手書きメモから書き写してた内容を

今回は、そのままテキストをコピペなので便利だー。

 

てな訳で、横着してほんとにだらだらメモった内容をコピペ。

たぶん、何か見間違いとか聞き間違いもあるかと。

絶対何か間違いがあるかと(苦笑)

 

 

PHPでつくるぐるなび	11時から

- 事業

1996年からの話

ビジネスモデルについて

7億2千万PV

ぐるなびもいろいろあるのね…

サービス数やら続く

ほぼ全てでPHP

 

- システムの話

検索システム

最初の頃

管理系と検索系UI

店舗検索にDelphi

検索システムはDBF?

店舗データはエクセル

 

2002〜2004

PostgreSQL+PHP+CMS

Linuxapache

 

PHP + PostgreSQL全文検索MySQL

 

2007〜

PostgreSQLOracle

店舗データをXML

DBが悩みだったらしい

 

カテゴリマスタだけMySQL

店舗データはOracleXML

 

PHPの導入に関して

文字コードはUTF8

php.iniあんまカスタマイズしてないっぽい

PEAR Smarty

NFSの話

結構普通な構成

 

検索エンジンとDB周りでチューニングしているっぽいが

php自体には、さほど変わった事はしてない模様

 

- 今後の展開

 

- PHP5化

- 共有ライブラリ・エンジン

- 国際化

 

PHP5は一割、あとPHP4らしい

って事は、OOPっぽくないかな?

サービスごとに構築したので、同じような機能がまとまってないらしい。

 

PHP5でリファクタしながら移行中らしい

基本クラス、標準拡張モジュールやZendをラップしたりー

ビジネスロジックの共通化

…って、どっかで聞いたような話だな。

 

- 基本クラス

Zendの一部を使う。

multibyte系で不具合があるー。

SimpleXMLを使おうとしているぞー。

 

- 共通エンジン

ベースモジュールにOpenPNEを利用しているー

 

 

- 国際化

上海に子会社があって、中国語でも掲載しているが

中国ではPHPの技術者が少ない…JavaからPHPに移行中?

…この話題って国際化って呼ぶの?

リソースファイルとかどうしてるんだろー?

 

- 質問ターイム

PostgreSQLからOracleに移行した時の話

DBまわりのスクリプトをいちから作り直したっぽい

 

バックアップは?

スクリプトは、NASのスナップショット

DBはdumpしてNASに保存

 

デプロイの時は?

スクリプトNASに置いて…って、XXXと同じやん。

NASの負荷、負荷分散

贅沢なNASを使ってるから大丈夫っぽい。

 

 

楽天xPHP 楽天におけるPHPの過去・現在・未来 13時から

安藤さん アーキテクチャ標準化推進グループ

CakePHPの本

なかなか面白かったけど、具体的なところが…

何かソースサンプルとか見てみたかったねぇ。

symfonyCakePHPの比較とかもしてくれたらいいのになぁ。

 

 

- 楽天のこと

野球チーム、楽天市場

品川シーサイドに移転したらしい

まつもとさん、楽天技術研究所 Ruby

ROMA fairy

まつもとさんの日記に社員食堂の話

 

- 開発体制

データセンター構築・設計

サーバ構築・管理

アプリケーション開発

 

200205 E10K

6000台

8.6Gbps

楽天トラベル・インフォシーク系サービスは除く

サンのサイトにも事例として載ってるよ

Oracleにも載ってるよ

 

php(OSS)の話ー

必要に応じてossも使うんだよー

 

php/tomcat/ruby

mysql/senna

apache/linux

 

あんまポスグレは使わないよー

全文検索senna

 

利用にあたって留意点

十分な検証の上で導入

必要な場合はパッチも作成

 

グリーの藤本さんコンサル

 

規模の指数

アプリケーションの数 150以上

サーバ台数 800台以上サーバ群

PV 5000万PV

開発者の人数 最大1000人以上のエンジニア

 

 

- 楽天でのPHP

さまざまな戦いの歴史

 

サービスを展開するスピード

サービスを開発するコスト

増大する負荷

 

2000年頃PHP3からスタート

 

PHP3からPHP4へ

負荷増大

 

safe_mode

Smarty PEAR

IO見直し

スレーブDBの利用

 

NASの依存問題

高負荷

スクリプト・コンテンツ

rsyncでローカルへ

セッションはNASのまま

 

独自フレームワーク

2003年頃

社内での車輪の再開発とか

標準化推進の開始、社内ライブラリ・フレームワークの整備

 

社内独自アプリでPVとか集計して見れる

 

楽天GORAゴルフ場検索・予約

Mojaviに似てるフレームワーク

 

フレームワーク期(PHP4)

2005年 Mojavi

コードジェネレータ開発

APC導入

 

PHP4でのスタイルの確立

DB周りとロジックは未整備

新卒エンジニアも開発

 

フレームワーク期(PHP5)

2006年 最初は独自フレームワーク

symfony

Mojaviに近い

ケルトン生成機能

事例)インフォシークwebメール

IMAP

 

学習コストがかかる

O/RマッピングPropelについても様子見

設定ファイルかー

小さいサービスに対して大げさになっちゃう

 

CakePHP

比較的軽量

学習コストが少ない

事例)携帯版ブックマーク

 

大規模な開発への適正

ライブラリが未整備

Railsとの兼ね合い

 

- まとめ

スピードとコストを両立

共有ライブラリなどの整備により運用性を向上

 

質問ターイム

デザイナーとの作業に関して

htmlでもらって、エンジニアがテンプレートにおこす

 

・大規模向けパッケージソフトウェアとphp 14時から

サイボウズ 米川さん

ガルーン2

 

- ガルーン2とは?

webグループウェア

CyDE2

MySQL・PHP4・Smarty

画面数1200

Smartyテンプレート2500

phpスクリプト4500くらい

開発者の人数 10人 オフショアでベトナム4〜5人

国際化版を開発中

 

- phpとガルーン2

簡単インストール

httpd.confの設定なしにインストールできるように考えてるらしい

独自SAPI

CGIとしてPHPを起動

PATH_INFO から実行スクリプト相対パスを取得して起動

 

PHP拡張

パフォーマンスを要求される箇所はCで書いている

独自PHP拡張

日付・時刻処理

AES暗号

XMLパーサー・CSVパーサー

ライセンス処理

 

たーしかーになぁ、XMLパーサー重いよね。。。

 

スケジューリングサービス C++

登録されたイベントを定期的に実行

Windowsでも使えるcron

PHPでコントロールできるcron

便利だねー

 

セキュリティ

ホワイトリスト方式のXSS対策

escape modifier を自動で埋め込む

 

CSRFリスト

CSRF対策するアクションのリスト

アクションへのリクエストはチケットが必要

チケットは自動でassignされる

 

国際化アーキテクチャ

日付時刻をローカルタイムゾーンに変換

サマータイムも考慮

タイムゾーン情報はデータベースに持つ

 

メッセージの切り替え

リソースが埋め込まれたテンプレートを自動生成

動的リソース埋め込みの負荷を軽減

テンプレートジェネレータで生成する