ビルド処理全体が 70% 短縮したことでビルド時間とパッケージング処理が劇的に高速化

Cellebrite Ltd. は犯罪捜査や小売店向けに モバイル端末のデータ抽出サービスを提供する業界のリードカンパニーです。当社は Microsoft Team Foundation Server を採用しており、バージョン管理、ワークアイテムのトラッキング、ビルドの自動化、レポート作成、プロジェクト マネジメントなどのMTFSの持つ主要な機能を利用しています。同社のソースコードは数百の Visual Studio プロジェクトから構成され、およそ 80%がネイティブ C++、20% が C# ベースです。
 

チャレンジ

プロセスの変更: 開発チームをゲート チェックイン方式に移行しました。ソースコードのチェックインはインクリメンタル ビルドが正常に実行されるまで行うことができません。ゲート チェックインでは、最新バージョンが常にコンパイルをパスすることを確実にすることが不可欠です。このプロセスを開発者は毎日何度も行いますが、あまりにも時間がかかる場合はチェックインを先延ばしにしたり、チェックインが終わる前に別のタスクに移る傾向がありました。何もせずにチェックインを待つことは、生産性の面では大きなマイナスです。  当社ではインクリメンタル ビルドに 5 〜 6 分ほどかかっていましたが、これを 1 分ほどに短縮ことを目標にしました。

パッケージング: Cellebrite には多くのクライアントがいます。クライアントは各々が個別にブランドやライセンスを必要としているため、

膨大な数の製品を個別にパッケージングして届けなければなりません。コンパイルできたタスクでもパッケージングの段階で失敗することがあります。Cellebrite ではパッケージング処理に 2 時間かかります。このため、開発者はチェックインがパッケージングできるかどうか確認するのを避けていました。そこで、10 分未満でテスト可能なインストール パッケージを開発者に提供することを目標にしました。

 

ソリューション

Cellebrite では長く複雑な次の 2 つのチームビルドベース処理を並列に実行するために IncrediBuild を使っています。

– コンパイル: ソースコードから実行可能なアーティファクトを生成
– パッケージング: クライアントごとにブランディング、ライセンシングされたコンパイル アーティファクトからインストール可能な製品を生成

Cellebrite はビルド処理を完全に変えました。IncrediBuild の高速化を Microsoft TFS に使用することで開発プロセスを合理化しました。以前はすべてのカスタマー向けて 1 つの製品をリリースするのに長い時間がかかっていましたが、現在では 1 時間以内に完全なリリースが可能になりました。さらに、開発者がコードをチェックインしてから、テスト可能なインストール パッケージを受け取るまでが 10 分程度に短縮されたので、開発者や QA エンジニアが自分のビルド処理を確認する方法が劇的に変わりました。

 

結果

IncrediBuild による並列処理がなければ、開発プロセスのスピードアップとその改善は不可能でした。IncrediBuild はビルドとパッケージングを劇的に短縮しました。

  • リリース サイクルの最適化: 完了まで数時間かかっていた、カスタマイズ パッケージの製品リリース サイクルが 1 時間未満に短縮しました。これによりマーケットに素早く製品を投入でき、主要製品のリリースのために時間を費やせるようになりました。
  • プロセスの大きな改善: コードの規模が小さければチェックインもテストも簡単です。パッケージにバグを発見したら、すぐに破棄して新しいコードで埋めるだけです。
  • ビルドやパッケージング時間の短縮: TFS プロセスを合理化、CI プラットフォームのスケーリングを可能にし、アジャイル開発を実現します。
   IncrediBuild 以前  
(すべての処理)
   IncrediBuild 以降 
(すべての処理)
   IncrediBuild 以降 
(インクリメンタル処理)
   コンパイル      16 – 17 分    6 分    60 – 80 秒
   パッケージング    2 時間    50 分    —

 

「IncrediBuild で Microsoft® TFS の開発プロセスすべてが劇的に短縮し、
当社のアジャイル開発は効率的でスケーラブルになりました。IncrediBuild による並列処理がなければ、開発プロセスのスピードアップとその改善はなかったでしょう」
シニア ALM アーキテクト、Yuval Mazor 氏