2022年11月16日

Continuous Integration

データで実証、HarnessのCIは地上で最速です

Harness Continuous Integrationは、他の主要なCIツールと比較して最大4倍の速度でビルドを行うという新しいデータを発表し、3つの重要な新機能強化の影響を検証しています。キャッシュインテリジェンス、テストインテリジェンス(Harness CI独自の技術です)、ホスティングビルドの3つの重要な機能強化の効果を検証します。

6374fad3882d019843a15430_Harness CI speed data blog banner-p-1080 (1).png

10年以上前にオープンソースプロジェクトとしてDroneを始めたとき、私は既存のCIツールでコードを出荷するのに時間がかかることに不満を感じていました。それは開発者の体験を悪くするもので、私はその問題を解決したいと思いました。私のビジョンは、高速で、シンプルで、オープンで、セキュアなCIツールを作ることでした。今、Harness CIでその目標を実現できたことに興奮しています。

 

Harness継続的インテグレーション(CI)モジュールのスピードアップを発表した後Harness CIが他の主要なCIソリューションに比べ最大4倍速くビルドできることを示すテストデータを披露できることを大変うれしく思います。テスト結果に示されたこれらの高速なビルド時間は、3つの重要な新機能強化の影響を検証するものです。キャッシュインテリジェンス、テストインテリジェンス(Harness独自の技術です)、ホスティングビルドの3つの重要な機能強化の効果を検証し、さらに、素晴らしい開発者体験の実現に寄与しています。

 

Harnessは、開発者が遅くて不安定なビルドにイライラしていることを理解しています。私たちは、開発者がコードを書くことに集中し、迅速、効率的、信頼性、安全性をもって出荷できるよう、開発者の摩擦要因を取り除くことに重点を置いています。Harness CIの最新の高速化機能は、このコミットメントの証しです。

 

これらの新機能の詳細については、ブログのお知らせをご覧ください。また、技術的な詳細については、CI製品の機能ページでご確認ください。本ブログでは、この素晴らしい新データと、Harness CIによるインフラコストの最大300%削減について、詳しくご紹介します。

4倍速の裏付けとなるデータ

CI の最新機能拡張の最初のテスト結果を見たとき、私たちは前例のないほど速いビルド時間を目の当たりにしたのです。また、開発者にどれだけ速くビルドできるかを示す必要があることも、すぐにわかりました。

 

Apache Kafka、Apache RocketMQ、Apache Zookeeperのリポジトリーに対して、Harness CI、GitHub Actions、その他の一般的なCIツールで同じビルドを実行するようにテストを設計しました。下図は、その結果を分単位で示したものです。(注意:Harnessの「ベストケース」結果は、コードの変更が最小限であり、テストケースの実行がない場合に達成されました(例:これはオープンソースレポの実際のコード変更で、実行するテストケースがほとんど確認されませんでした)。
 

6385400f8f16ca99459acf28_Chart 1-HarnessSpeed.png

テスト結果の中央値では、Harness CIは最も近い競合他社よりも2~5倍、GitHub Actionsよりも3~4倍高速であることが分かります。場合によっては、HarnessはGitHub Actionsの19倍から75倍も高速になりました。

Apache Kafkaのビルド時間

 

Apache Kafkaは、GitHubで2万3500以上のスターを持つ人気の分散イベントストリーミングプラットフォームです。また、Fortune 100企業の80%が、高性能データパイプライン、ストリーミング分析、データ統合、ミッションクリティカルなアプリケーションに使用しています。

 

以下は、Apache Kafkaリポジトリーで記録したビルドタイムの結果です。

63854027b373a21073e38abd_Chart 2-KafkaBuildTimes.png

50本以上のパイプラインを走らせる中で

  • GitHub ActionsでKafkaのビルドが19分で完了
  • CI Vendor 2は15分でKafkaのビルドを完了させました。
  • Harnessは平均5分でビルドを完了、ベストケースのビルド時間は24秒

でした。

Apache Kafkaのレポは非常に大規模なプロジェクトであるため、市場でユニークなサービスであるTest Intelligence機能によって得られる大幅な時間短縮を実証するためにも使用しました。Test Intelligenceは、機械学習(ML)を用いて、コードの変更点から必要なテストを判断します。私たちのデモでは、Test Intelligenceはユニットテストの数を1万6000から700に効果的に削減しました。しかし、それだけではありません。Test Intelligenceは必要なテストを分割し、並行して実行したのです。

 

Test Intelligenceの仕組みとその結果については、他のテストや使用した手法の詳細を説明した後で、詳しく見ていきたいと思います。

Apache RocketMQ

 

Apache RocketMQはGitHubで1万8000以上のスターを持つ、イベント駆動型アプリケーションを簡単に構築できる分散メッセージングおよびストリーミングプラットフォームです。

 

下のグラフは、Apache RocketMQのリポジトリテストによるビルドタイムのテスト結果です。

6385403cb373a24e43e38ac7_Chart 3-RocketMQBuildTimes.png

50本以上のパイプラインを走らせる中で

  • GitHub Actionsは19分でRocketMQのビルドを完了
  • CI Vendor 2は15分でRocketMQのビルドを完了
  • Harnessは平均3分18秒でビルドを完了し、ベストケースのビルド時間は1分

でした。

 

Apache Zookeeper

Apache ZookeeperはGitHub上で1万以上のスターを持ち、分散システムの保守と調整を容易にすることを目的としています。

 

Apache Zookeeperのリポジトリからビルドタイムのテスト結果を以下のグラフで見ることができます。


 

63854051b82b89588d94758d_Chart 4-ZookeeperBuildTimes.png

50本以上のパイプラインを走らせる中で

  • GitHub Actionsは19分でZookeeperのビルドを完了
  • CI Vendor 2は13分でZookeeperのビルドを完了
  • Harnessは平均6分でビルドを完了し、ベストケースのビルド時間は15秒

でした。

 

テスト方法

この3つのプロジェクトを選んだ理由は、オープンソース・コミュニティで人気があり、Goldman Sachs、Target、Intuit、Ciscoなどの企業組織の開発チームが高い割合で採用していることです。また、オープンソースプロジェクトを使用したため、各ビルドで同じテストシナリオを再現することができました。

 

これらのプロジェクトのビルドを、同じくCIベンダーとして人気の高いGitHub ActionsとHarnessの無料提供品を用いて実行しました。性能の数値は、各リポジトリから50以上のプルリクエストをビルドすることで算出されました。これにより、開発者が毎日遭遇する実際のユースケースをシミュレートするために、オープンソースリポジトリへの実際のコードコミットを使用してテストすることができました。クエリを微調整するのではなく、ビルドの実行ごとにすぐに使えるデフォルトの設定を使用しました。これは、開発者が余計な修正を必要としない方が、より良い経験を得られることを知っているからです。

 

Kafkaリポジトリで実行されたテストから、実際のプルリクエストのスクリーンショットを以下で見ることができます。

image_6.png

スピードデータのキャッシュとテスト

今回のテストでHarness CIが示したスピード結果は、最新の機能強化によって実現されたものです。それぞれの差別化機能がテスト結果にどのような影響を与えたのか、詳しく見ていきましょう。

 

キャッシュインテリジェンスの時間短縮

 

ソフトウェア開発は、ビルドツールやパッケージマネージャなど、様々な依存関係があり、本質的に複雑です。このような複雑さにより、ビルド時間が長くなります。開発者は、手動でキャッシュをオンにしたり、各ディレクトリに正しいデータを格納するために必要なパスを全部指定したりすることを常に覚えているわけではありません。Cache Intelligenceは、JavaとNode.jsのよく知られたディレクトリを自動的にキャッシュすることで、開発者がビルドの完了を待つ時間を短縮し、コーディングにより多くの時間を割くことができるよう支援します。

 

テストインテリジェンスの時間短縮

 

Harness CI独自のMLを用いたテストインテリジェンスは、テストの同時実行機能を追加し、さらなる時間短縮を実現します。テストインテリジェンスは、コードの変更に基づいて必要なテストのサブセットを決定し、どのテストが選択され、なぜ選択されたかを可視化します。必要なテストが特定された後、これらのテストが同時に実行され、品質を損なうことなくビルド時間をさらに短縮します。

 

以下のグラフは、同じKafkaプルリクエストで10個のファイルを変更した場合のTest Intelligenceによるパフォーマンス向上の詳細を示しています。Test Intelligenceは、これら10個のファイルを順次実行するのではなく、その10個のファイルだけのテストを分割して並列に実行しました。その結果、Harnessはコード変更による影響に関連する約700のテストを実行したのに対し、GitHub Actionsと他のCIツールは約1万6000のテストスイートを全て実行した。

 

Test Intelligenceは必要なテストのみを実行し、並行して実行することで大幅な時間短縮を実現していることが分かります。Harness CIでは、Test Intelligenceにより、品質を犠牲にすることなくビルド時間を短縮するための独自のアプローチを採用しています。

6385408cf2769beee81a318f_Chart5-TestIntelligenceCases.png

Harness CIによる時間・コスト削減

企業が競争力を維持するために高速化を要求する市場において、CIは「ただ動く」だけで十分な時代ではなくなりました。

 

最近の改善によってスピードが向上したことは説明したが、ビルドの高速化にはコスト削減も含まれます。Hosted Buildsでは、インフラストラクチャのホスティングによる管理負担を軽減するだけでなく、より少ないコストでより多くの作業を行うことができます。ビルドが高速化されれば、ビルドに要する時間が短縮され、リソースの使用量も少なくなります。

 

Cache IntelligenceとTest IntelligenceをHosted Buildsと組み合わせることで、最終的に年間200~300%のインフラストラクチャ費用を削減することができます。この節約効果は、Harnessのお客様の実際の使用データを使って、Harnessとテストした他のCIベンダーそれぞれでどれだけの時間とコストがかかるかを計算し、以下のグラフに示しています。

638540688e449981ac720aa2_Chart 6-HarnessBuildCostSavings.png

テスト方法

ここでは、実際の顧客データに基づき、最大300%のコスト削減を判断した方法論を紹介します。

 

90人のソフトウェアエンジニアがHarness CIを使って月に1万9524回ビルドしています。このペースを維持すると、年間23万4288回ビルドすることになります。現在、ビルドにかかる時間は平均15分です。開発者1人あたりの1週間の平均ビルド回数は11回と試算しています。全ての試算は、ビルドがLinux上で実行されると仮定しています。このお客様をベースにすると、1ヶ月で29万2860分、1年で351万4320分のビルド時間が発生することになります。

 

次に、この数字を2つのCIベンダーと比較してみました。GitHub Actionsは1ビルド分あたり0.008円、CIベンダー2は1ビルド分あたり0.0120円です。Harness CIはGitHub Actionsと比較して価格競争力があり、CIベンダー2よりも低価格です。

 

両ベンダーの2倍の速度という非常に保守的な見積もりをした場合、Harness CIは月額1171ドル、年間1万4057ドルかかることになる。CIベンダー2は、月額2343ドル、年額2万8115ドル。GitHub Actionsは、月額3514ドル、年額4万2172ドルでした。CIベンダー2に比べて年間200%、GitHub Actionsに比べて300%のコスト削減を実現したことになります。

Harness CIがいかに速いか、その目で確かめてください。

個人的なことですが、これらのアップデートを共有できることに非常に興奮しています。ここ数年、CIの革新には多くの不満がありましたが、今日、ビルドを最大4倍高速に実行できるようになり、ゲームは完全に変わりました。シンプル、オープン、高速、セキュアなCIシステムを作ることが私の夢でしたが、今その夢が現実のものとなりました。このサンプルで結果を再現して、ぜひご自分の目で確かめてください。

 

地球上で最も高速なCIプラットフォームでビルドを始める準備はできましたか?Harness CIを無料でお試しください


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。


 

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ