Developers Summit 2009 1日目にちょこっとだけ行ってきました

はてな社でのgit導入の話、はてなブックマークの開発背景について聞いて聞いてきました。
testのfixtureをYAMLからDBに切り替えたことでテスト時間が短縮した等おもしろい話がきけました。

はてなの開発環境

ngineerが15->30名に
  • インフラ8名(アプリ22名)
2008年からgitを使っている
はてなのgit導入背景
  • svnレポジトリが壊れた
    • RAILD1で運用
    • 片方のHDDが壊れる
    • 特定のリビジョンが取り出せない
    • svnadminでも復旧不可能
  • svn..capistranoでdeployしてた
    • 緊急対応できない
      • rsyncで一週間くらい対応
  • >git運用できそうだったらgitに
  • deploy
    • capistrano2.2でgit対応
  • svnからの移行
    • git-svn
      • リビジョンの指定が可能
      • 1000%deployが高速に!!
レポジトリが細かくなった
  • svn..全体でひとつのレポジトリ
  • git..プロジェクト毎につくる
ブランチの作成ポリシー
  • origin/master
    • テストを通った本番deploy用
  • origin/[機能毎のブランチ]
    • 例) origin/ほげほげのデザイン変更
  • ローカルでは自由にブランチ
gitはコードレビューに最適
  • git dif master...branchname
  • '...'で、共通の親からの変更点を表示
開発の流れ
  • git co -b exape
  • コードを書いてgit commit
    • remoteに反映 git-publish-branch
    • remoteから反映 git pull or git pull --rebase
  • コードレビュー
    • git diff master...example
  • masterに反映
    • git merge master #masterからマージ、コンフリクト解決
    • git checkout master
    • git merge example #exampleからmastreへマージ
運用しての感想
独自ツールを開発
本番にテスト用バーチャルドメインをきる
  • 本番サーバと同じ環境
  • だれでもUIの機能を確認
ネオあしか
  • タスク管理システム
  • 開発経緯
  • 特長
    • 複数人前提
    • githubより使いやすく
    • URLをgitコマンドっぽく
    • 自動でタスクと紐づく
gitサーバ
まとめ
  • gitのブランチ最高
  • gitの導入コストは高い
    • お勧めしないけど今のうちに使うのは吉

はてなブックマークリニューアルへの道

Spec
  • user 21.6万
  • pv 800万pv/day
  • サーバ
    • 80台
経緯
  • 2008/11
  • 9ヶ月/6人
特長
旧システムの振返り
  • 本守性,拡張性
    • はてなフレームワーク
      • class継承ベースのcontroller
      • 一つの機能を使いたいがために多重継承
      • 継承+コピペ多数
      • c->vへのデータの橋渡しが面倒
  • テストがされてない
    • MとAを重点的にテスト
  • 他のサービスとの密結合
    • DBから直接データを取得
      • 速度が早いと考えられていた
      • 近年社内環境でもSquidを導入したためcacheが高速化
    • 他サービスのコードを利用
    • RSS,JSONで取得
  • 他のサービスとの密結合
Ridge(社内フレームワーク)
MVAC
  • 既存のMVCの問題点
    • ORMに処理が集中
  • Model/View/Application/Controller
    • ControllerとModelの間にApplication
  • データソース層
    • ORMクラス
    • リレーション情報
  • サービス層
    • ロジックの実装
  • アプリケーション層
    • Viewに対しての実装、pagerやキャッシュ等
  • フレームワークを使ってない
    • 他人のWAFを使うと、結局上から下まで理解する必要があるときがある
開発体制
スケジュール
  • リリースを優先してテストを通ってない状態でリリース
    • バグが多発
テスト
  • テストが通らないとやる気が。。負のスパイラル
  • 103ファイル
テスト高速化
  • 以前
    • all/10分 1test/10秒
  • 現在
    • fixtureの高速化
    • all/6分 1test/4秒
質問