現在、私たちの組織は継続的インテグレーションを実践していません。
CI サーバーを稼働させるためには、投資収益率を示す文書を作成する必要があります。
バグを早期に見つけて修正することによるコスト削減以外に、このドキュメントに記載できるその他の利点/節約に興味があります。
現在、私たちの組織は継続的インテグレーションを実践していません。
CI サーバーを稼働させるためには、投資収益率を示す文書を作成する必要があります。
バグを早期に見つけて修正することによるコスト削減以外に、このドキュメントに記載できるその他の利点/節約に興味があります。
私が CI を気に入っている一番の理由は、開発者が壊れたコードをチェックインするのを防ぐのに役立つためです。休暇に出発する直前に、いくつかのデータベース スキーマの変更を含む重要なチェックインを行ったとします。確かに、すべてが私の開発ボックスで正常に動作しますが、些細なことかもしれないしそうでないかもしれないデータベーススキーマ変更スクリプトをチェックインするのを忘れています。さて、データベース内の新しい/変更されたフィールドを参照する複雑な変更がありますが、翌日オフィスにいる誰もその新しいスキーマを実際に持っていません。チェックインするのを忘れただけです。
はい、私はデータベースの変更で特に厄介な例を使用しましたが、実際には何でもかまいません。おそらく、すべての開発者が実際のエンドユーザーにスパムを送信する原因となる電子メールコードを使用した部分的なチェックインですか? あなたはそれに名前を付けます...
したがって、私の意見では、これらの状況の 1 つを回避することで、そのような努力の ROI が非常に迅速に報われます。
標準的なプログラム マネージャーと話している場合、単純な ROI という点で継続的インテグレーションを理解するのは少し難しいと感じるかもしれません。一定の投資額と引き換えに、どのような物理的な製品が得られるかはすぐにはわかりません。
私が学んだ方法は次のとおりです。「継続的インテグレーションは、プロジェクトからあらゆる種類のリスクを排除します。」
リスク管理は、お金がどのように使われるかを心配するよりもコードの記述に多くの時間を費やす、通常のソフトウェア エンジニアリング タイプの枠を超えたプログラム マネージャーにとって深刻な問題です。このような人々と効果的に仕事をするためには、彼らが理解できる言葉で私たちが知っている良いことを表現することを学ぶ必要があります.
これらのような会話で私が切り出すリスクのいくつかを次に示します。賢明なプログラム マネージャーのおかげで、最初のポイントの後で、私はすでに議論に勝っていることに注意してください。
CI は問題の発見を支援します。コード内の壊れたビルドまたは重大なバグを発見するのに現在かかる時間を測定します。その期間にそのコードを使用する各開発者の会社のコストを掛けます。これに年間の破損回数を掛けます。
あなたの番号があります。
成功したすべてのビルドはリリース候補であるため、更新とバグ修正をより迅速に提供できます。
ビルド プロセスの一部でインストーラーが生成される場合、これにより展開サイクルも高速化されます。
ウィキペディアから:
私たちは CI (1 日 2 回のビルド) を使用しており、テストとリリースのために作業コードを利用できるようにしておく時間を大幅に節約できます。
開発者の観点から見ると、CI は、電子メールで全世界 (開発者、プロジェクト マネージャーなど) に送信される自動ビルド結果に次のように表示されると、威圧的になる可能性があります 。 " そしてあなたは XYZ さんで、彼らはあなたが誰であるかを知っています :)!
これが私の経験からの私の例です...
当社のシステムには複数のプラットフォームと構成があり、70 人を超えるエンジニアが同じコード ベースで作業しています。あまり使用されていない構成では約 60% のビルド成功率で、最も一般的に使用される構成では 85% のビルド成功率でした。コンパイル エラーやその他の障害に関するメールが毎日のように殺到していました。
大まかな計算を行ったところ、悪いビルドによってプログラマー 1 人あたり 1 日平均 1 時間が失われたと見積もられました。これは、プログラマーが最新のコードが安定しているかどうかわからないという理由で最新のコードへの同期を拒否する反復時間で発生するコストを考慮に入れていないため、さらに多くのコストがかかります。
Team City が管理するビルド サーバーのラックを展開した後、すべての構成で平均 98% の成功率が得られ、平均コンパイル エラーが数時間ではなく数分間システムに留まり、ほとんどのエンジニアが快適に最新のリビジョンを維持できるようになりました。コードの。
一般に、全体的な節約の控えめな見積もりは、CI を展開する前の 3 か月と比較して、プロジェクトの最後の 3 か月で約 6 人月であったと言えます。この議論により、リソースを確保してビルド サーバーを拡張し、エンジニアの時間を追加の自動テストに集中させることができました。
私たちの最大の利点は、QA 用に毎晩ビルドを行うことです。私たちの古いシステムでは、各製品は、少なくとも週に 1 回、誰かが不正なコードをチェックインしたことを午前 2 時に発見していました。これにより、QA がテストするためのナイトリー ビルドが発生しませんでした。解決策は、リリース エンジニアリングに電子メールを送信することでした。彼らは問題を診断し、開発者に連絡します。QA が実際に作業する前に正午までかかることもありました。今では、優れたインストーラーを毎晩用意するだけでなく、サポートされているすべての構成の VM に毎晩実際にインストールしています。そのため、QA が開始されると、数分以内にテストを開始できます。古い方法を考えると、QA がインストーラーを取得し、すべての VM を起動してインストールし、テストを開始しました。QA 担当者 1 人あたり、構成ごとにテストするための QA 時間をおそらく 15 分節約できます。
利用可能な無料の CI サーバーと、NAnt のような無料のビルド ツールがあります。開発ボックスに実装して、利点を発見できます。
ソース管理とバグ追跡システムを使用している場合、常に最初に (チェックインのたびに数分以内に) バグを報告することは非常に説得力があると思います。それに自分のバグ率の減少を加えれば、おそらく売上が上がるでしょう。
ROI とは、実際には、顧客が望むものを提供する能力です。もちろん、これは非常に主観的なものですが、エンド カスタマーの関与を得て実装すると、顧客は得られるものを高く評価し始め、ユーザーの受け入れ時に問題が少なくなる傾向があります。
そのため、より早く失敗するのに役立ち、リスクを早期に軽減するのに役立ちます。