ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

2013-08-25 (日) [長年日記]

[Software][雑記]『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』読んだ

表紙の「いつまで手動でデプロイしているんですか?」という叩きが胸に突き刺さる書籍『継続的デリバリー』を読みました。スゴ本でした。544ページと結構な厚さがあるのですが、読んで良かったです。

次に挙げるような、ソフトウェア開発の現場で話題になっているトピックについて、かなり理解が深まる本です。一つ一つを深く掘り下げている訳ではなく、「どうして話題になっているか」「何故こうしたトピックに注目が集まるか」が、本書を読むと良く分かるようになります。

  • DevOps
  • ユニットテスト
  • CI(継続的インテグレーション)ツール
    • Jenkins
  • ビルドスクリプト
    • Make、Ant、Maven、Rake
  • 自動プロビジョニングツール
    • Puppet、Chef
    • Vagrant
  • スモークテスト
  • バージョン管理ツール
    • Subversion、Git、Mercurial
    • ブランチング戦略
  • 依存管理

裏表紙で対象読者として「上級技術者向け」とされていますが、私はそうは思いません。むしろ、チーム開発で曖昧な責任やバタバタしたリリース作業、「あの人が居ないから進まない」みたいな苦労をした人ほど、読むと発見がある本だと思います。

実際、このような苦労を経験した人が読むと精神的にはキツイです。私がそうだったからです。挙げられているアンチパターンに思い当たる節があり過ぎて「お前らのプロジェクトはこうだから駄目!」って斬って捨てられる気分になりました。

概要

いわゆる「ソフトウェアのリリース作業」から、属人的な要素を廃して、継続的に行うために徹底的な自動化を施すことにフォーカスされた本です。

本書の中では「デプロイメントパイプライン」と呼ばれ、これの構築方法やメリットについて8割くらいのページ数が割かれています。

特に第5章『デプロイメントパイプラインの解剖学』に、幾つか分かり易い図があったので、思い出し用に引用しておきます。

(引用)図5-2: 変更がデプロイメントパイプラインを通り抜ける

【スクリーンショット】図5-2: 変更がデプロイメントパイプラインを通り抜ける

(引用)図5-3: デプロイメントパイプラインのトレードオフ

【スクリーンショット】図5-3: デプロイメントパイプラインのトレードオフ

(引用)図5-4: 基本的なデプロイメントパイプライン

【スクリーンショット】基本的なデプロイメントパイプライン

感想

デプロイメントパイプラインを構築する上で、とにかく大事だとされる点は、くどいほどに繰り返される本でした。

  • バイナリ以外の全てをバージョン管理しろ!
    • SQLも設定ファイルもビルドスクリプトも全部チェックインしろ!
  • リリースはボタン一つで完了するようにしろ!
  • テスト環境もステージング環境も本番環境も全部同じスクリプトで反映しろ!
    • そうして繰り返し使っておかないと、本番環境へのリリースに誰も自信が持てないだろ!

いちいち全部が正論なので「ハイ」と言うしかありません。

他には、第14章「高度なバージョン管理」で紹介されている「抽象化ブランチ」という考え方が興味深かったです。ソースコード管理としてはtrunk(masterブランチ)に常にチェックインしておいて、分岐させるのはリリースブランチに留めるという考え方です。新機能はフラグで管理して有効/無効を切り替えられるように隠しながら実装を進めるというのが、最近のアンチブランチと呼ばれる流行と合致しています。確かに大きく肥大化・長生きしちゃった機能開発ブランチって、マージがうんざりする作業になりがちなんですよね。

個人的に「アジャイルが~」「リーン開発手法が~」「UI/UXが~」ってトップダウンで言われるのってもの凄く醒めてしまうのですが、この本は逆にボトムアップ視点で語られているので、「あぁこういうのが実現している現場がアジャイルってやつで、フィードバックのサイクルが早くなって、UI/UXの磨き込みも高速になるんだな」と一連の流れが腑に落ちたところも、凄く良かったです。ペース数は多くはありませんが、チームビルディングや組織の中でデプロイメントパイプラインをどう適用して行くか、といった話題にも触れてあり、なるほどなぁと感じました。

本当に良い書籍でした。

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化(David Farley)


最近のツッコミ

  1. 雷悶 (2023-06-24(土)22:25)「新大阪駅で降りると必ず視界に入るサムティ行くしかないのか~?」
  2. ブリネル (2023-06-24(土)20:58)「次はサムティアンド箕面ビールツアーしかないっしょ〜 DIE WITH ZERO〜」
  3. 雷悶 (2023-03-08(水)19:02)「10年後にはリゾマンを購入している筈っしょ~(言うだけ)」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2013-08-20 (火)) 最新 次の日記(2013-08-31 (土))» 編集