DevSumi2009 株式会社はてなの開発戦略

Git

話を聞いている感じではほぼMercurialと同じだなー

はてながgitに移行出来た理由

SVNリポジトリが壊れた

  • Capistrano経由のsvn upデプロイができない
  • 特定のリビジョンが完全にぶっ壊れていた
移行
  • Capistrano2.2でgit対応
  • git-svn
    • ディレクトリ単位のコンバートが可能
    • リビジョン単位で指定出来るので壊れたリビジョンを除外できる
良くなった事
  • デプロイが1000%速くなった
  • リポジトリをプロジェクト別に分けるようにした
  • ディレクトリ変更無しにブランチ切り替え
  • 共通の親からのdiffが簡単に見れる->コードレビューがやりやすい
gitに移行ついでに作成したもの
gitサーバ運用
  • gitユーザを作る
  • gitユーザ管理

~/.ssh/authorized_keysで管理

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

他サービスとの密結合問題
  • DBから直接
  • 他サービスのPerlコードを利用
    • ライブラリのバージョン問題
  • 粗結合
MVC→MVAC
  • 既存のMVCの問題点
    • ORMに処理が集中
    • RDB以外のデータソースを扱う場合はどうするのか?
  • MVA(Application)C
    • データソース層
      • ORMのクラス
    • サービス層
    • アプリケーション層
      • Viewに対して実装したいロジック
        • ページャの作成
        • キャッシュの操作

これら3層はWAFを一切利用していない->単体テストが書きやすい

テストの高速化
  • 1テストでもfixture(DB)を使うと10秒かかる
    • YAML->ORM->RDB(遅い)
    • YAML->ORM->RDB->mysqldump(更新していない分はそのまま突っ込む)
      • fixtureテスト(10秒->4秒)
      • 全体10分->6分