もう旬は遥か前に去っている気がしますが、あまり気にせずにOSCON2007のレポートです。去年のOSCON2006、先日のMySQL conferenceに続いて、3回目のO'Reilly系Conferenceです。
いつものごとく、面白かったセッションを三つほど紹介します。あまりしっかりと整形してないので、メモっぽいところも残っていますが、ご了承ください。
Subversion: Powerful New Toys
Subversionのコミッタによるセッションです。今のSubversionで不満なところ(マージがすごい面倒なところとか)が次の1.5で解消されそうで、けっこう期待です。
- ここ最近の改善はWebDAV系への機能追加が多い
- Auto-versioning, binaryファイルの扱いの効率化など
- Repository replication from svn 1.4
- svnsyncというツール
- ただし、Laptopへsyncして、そこへのチェックインを戻す、ということはできないとのこと。
New feature 1.5
- 再帰的じゃないチェックアウト → 一部だけチェックアウトする時に便利そう
- コミット時のコンフリクトをその場で解決できる
- mergeの追跡 → まさに今欲しいもの!
- Linus: "Merge in subversion is completely disaster."
- 今のsubversionはマージを記録しない
- svnmerge.pyという補助ツールはあったが
- 絶賛、開発中!
- もっと先の計画
- Faster, Offline commits, Local branches, Better merging
- Subdirectrory単位でのリポジトリの分割, New repository format
- Atomic renames, Distributed repositories
Puppet
開発をリードしている人によるセッション。最近、はてなでもpuppetを使っているので、気になってました。内容としては、知っている話が多かったけど、開発をリードしている人の雰囲気が分かったのはよかったです。作っている人の顔を見れるのはいいですね。
概要
- 開発開始は4年前からやってて、2年ぐらいフルタイムでやっている
- Puppetは、サーバ自動化ツール(a server automation tool)
- Puppetの内部の全てが置換可能かつ再利用可能
- サーバのリソースは抽象化されている
- 実際の動作
- 現在の状態と要求されている状態を比較
- 必要な処理を行う
- ログとレポート出力を行う
- ralsh
- サーバの状態をpuppetの形式で出力する → puppet定義ファイル作成支援ツール
将来
- スタンドアローンのツールにもなるように
- モジュールやベストプラクティスを共有できるようにするサイトを構築する
Youtube with Python
のMySQL conferenceでは非常に参考になったYouTubeの人の話です。今度はアプリケーションレイヤーのPythonの人によるスケーラビティの話です。使われている言語は、Pythonなので、直接参考になるわけではないが、考え方は参考になります。「依存性を最小化し、ある程度のレイテンシを許容し、障害を局所化する、自分のアプリケーションのSQLの特性を知るべきである」あたり。
- システムはどんどん変化する
- ので、最適解を予測するのは不可能
- 初期のころは、Webサーバが全部やってた
- その状態で、けっこうなところまで大丈夫
- 初期にキーとなる要素
- チームをコンパクトにする
- 走り続ける
- リクエスト数は1日で50%増えたりする
- ボトルネックを取り除くことは、新しいボトルネックを明らかにすること
- いいコンポーネント
- 依存を最小化
- ある程度のレイテンシを許容する
- 失敗を局所化し、広げさせない
- マシンリソースのバランス
- リソース利用率向上と、特殊なデプロイのトレードオフ
- ソフトウェアの最適化
- 「速い」と「十分速い」
- 科学的に - データを集めて、その意味を理解する
- 驚くべき結果に結びつけることができる
- データアクセスパターンを理解する
- 他の言語の手法は役に立たないことが多い
- 単純さを追求する
まとめ: Conferenceに出席する意味
OSCONのようなConferenceに出席して得られる情報というのは、ほとんどWebにあります。時々質疑や口頭でしか言及されないこともあったり、のMySQL conferenceの時の様に、いろいろ他のサイトの生々しい方針を聞ける、という生ならではですが、最近では、英語圏のブログを読めば、そのあたりもフォローできそうです。
その中で、その場に居る最大の意味は、「技術への熱量や流れなどの雰囲気を知ること」だと思います。特に海外のConferenceでは、グローバルな感覚を身に付ける切っ掛けにもなり得ますし。
Conferenceで刺激を受けた後の理想的な展開というのは、次のようなイメージです。
周りで使っている様々なオープンソースの中心的開発者を見ることができる → 「雲の上の誰か」ではなく「目の前のその人」へ → グローバルに影響を与えるコードを書ける
というのは、すこし楽観的に過ぎるかもしれませんが、英語で議論できないと、グローバルでの流れに影響を与えることはできない、というのは、純然たる事実だと思いますし、もっと色々な人に海外に出ていってほしいと思います。