2009-02-12 DevSumi2009 株式会社はてなの開発戦略 devsumi2009 イベント Git 話を聞いている感じではほぼMercurialと同じだなー はてながgitに移行出来た理由 SVNリポジトリが壊れた Capistrano経由のsvn upデプロイができない 特定のリビジョンが完全にぶっ壊れていた 移行 Capistrano2.2でgit対応 git-svn ディレクトリ単位のコンバートが可能 リビジョン単位で指定出来るので壊れたリビジョンを除外できる 良くなった事 デプロイが1000%速くなった リポジトリをプロジェクト別に分けるようにした ディレクトリ変更無しにブランチ切り替え 共通の親からのdiffが簡単に見れる->コードレビューがやりやすい gitに移行ついでに作成したもの gitフックフレームワーク プロジェクト毎に別ディレクトリなのでフックスクリプトのディレクトリにsymlink 社内IRCにコミットを知らせるとか branchを作るとそれに対応したバーチャルサブドメインを作ってくれるとか gitブラウザ チケット登録 はてなアイディアとの連携 gitサーバ運用 gitユーザを作る gitユーザ管理 ~/.ssh/authorized_keysで管理 はてなブックマークリニューアル 他サービスとの密結合問題 DBから直接 他サービスのPerlコードを利用 ライブラリのバージョン問題 粗結合 WebAPI RSS JSON MVC→MVAC 既存のMVCの問題点 ORMに処理が集中 RDB以外のデータソースを扱う場合はどうするのか? MVA(Application)C データソース層 ORMのクラス サービス層 ドメインロジックの実装 CUIアプリも簡単に作れるように バッチ処理はサービス層のクラスを使えばOKとか アプリケーション層 Viewに対して実装したいロジック ページャの作成 キャッシュの操作 これら3層はWAFを一切利用していない->単体テストが書きやすい テストの高速化 1テストでもfixture(DB)を使うと10秒かかる YAML->ORM->RDB(遅い) YAML->ORM->RDB->mysqldump(更新していない分はそのまま突っ込む) fixtureテスト(10秒->4秒) 全体10分->6分