クラウド時代のソフトウェア開発 - Developers Summit 2011
デブサミエントリのインデックスはこちら。
【18-B-5】クラウド時代のソフトウェア開発 及川卓也 氏
Google 及川( id:takoratta / [twitter:@takoratta] )さんのセッション。
togetterはこちら。
大規模なソフトウェア開発(一般的な話)
デザイン インプリメンテーション スタビライゼーション リリース プラン を回す。
もともとwindowsの開発をやっていた。
- Windows NT
- いつリリースできるかわからなかった
- トップがブライアン バレンタインに変わって開発にリズムができた
- "Brian Valentine(ブライアン バレンタイン)" "Ian Mcdonald(イアン マクドナルド)" で検索すると面白い話がいろいろある
大規模なソフトウェアはmoduleやcomponentやfeatureに分割する
各チームへ権限委譲し、全体でリズムを作っておく。
Themeをしっかりと共有してバラバラにならないようにする。
例えば chrome のテーマ(原則)
- シンプル スピード セキュリティ 3つのS
- テーマは簡潔に 覚えておけるように
- 実現できないこともある。それは次に回す
ソースリポジトリ
- メインブランチ
- component a ブランチ
- component b ブランチ
- …
適当なところでインテグレーションする。これはすごく大変、だけど仕方ない。
- 厳密な check in window
(ここの時間までにできたらチェックインしていいよ) - 毎日定時に開始されるbuild
リリース
- 失敗が許されない
- 高いデプロイメントコスト / 更新コスト
クラウドコンピューティング
直ぐに適用はできないかもしれないけど、役には立つと思う
- 低いデプロイメントコスト / 更新コスト
- 高いサービス連携
agility 迅速さ
- launch & iterate
- 時間をかけてマーケティングしたい、アンケートを取ったりはしない
- 早く作って、早く出して、実際のユーザーからフィードバックをもらう
scale
とんでもない数のプロジェクト、ビルド、更新があり、それを支えるインフラが必要。
cloudの開発手法を取り入れる(低いデプロイメントコスト)
- chrome 日本語入力
- バージョンを意識しない
- 自動更新出来るように頑張った
open
基本的にオープン 自信がある なぜオープンにしないのか?
コードレビューは色々なエンジニアがやる googleのエンジニアとは限らない。
- 大事なこと
- 一気にパッチを送らない
- ircを利用する
- 他に人が忙しければ、その人の別の作業をやってあげる
mozc 日本語入力
- 空気のような存在になりたい
- ストレスフリー
- 素早い入力
- Web時代に即した
- セキュリティ
まとめ
- 短いリリースサイクル
- スケールする
- 可視化にこだわる