2023年4月8日
Continuous Delivery
Cache Intelligenceがシームレスな自動キャッシングによって継続的インテグレーションビルドを加速し、パ フォーマンスと効率の両方を向上する方法についてご紹介します。
この度、継続的インテグレーション(CI)パイプラインにおけるキャッシュの実装プロセスを簡素化し、既知の依存関係を自動的にキャッシュおよび復元するCache Intelligenceの一般提供を開始することになりましたのでお知らせします。この機能をHarness Continuous Integrationモジュールにリリースすることで、開発者はCIのビルド時間を最適化し、ソフトウェア配信の効率を向上できます。
CIビルドでは、ライブラリーなど依存性の高い大規模なソフトウェアコンポーネントのダウンロードやインストールが必要な場合が多く、非常に時間がかかります。ローカルでビルドする場合、または複数のビルドにビルドマシンを再利用する場合、通常はプロセスを高速化するためにキャッシュを使えます。ただし、最新の継続的インテグレーションソリューションを使う場合は、多くの場合、実行後に終了するコンテナや仮想マシンなどのエフェメラル環境でパイプラインを実行するため、そうならないことが多いのです。このアプローチにより、パイプラインは隔離された環境で実行され、他のビルドインスタンスによる干渉を受けませんが、ローカルキャッシュがないため、ビルド時間が長くなる可能性があります。そのため、エフェメラルビルド環境を使用する場合はキャッシュを構成することをお勧めしますが、このタスクは面倒な場合があります。
このロジックをパイプラインに組み込み、キャッシュを管理する責任は通常、ユーザーにあります。キャッシングは、キャッシュの保存と復元の手順やボリュームのマウ ントなど、さまざまな方法で既に実現できていますが、エンジニアは依然として構成とメンテナンスの大部分を担当しており、開発から時間を奪っています。多くの開発者は、キャッシングがビルド時間を短縮するためのソリューションであることさえ認識していません。
Harness Cache Intelligenceは、キャッシュ管理を効率化し、既知の依存関係を自動的にキャッシュ&リストアすることで、CIパイプラインにおけるビルドプロセスを簡素化します。キャッシュ管理の複雑さを取り除くことで、開発者はより合理化されたワークフローの恩恵を受け、効率と生産性を向上し、コードの記述に集中できるようになります。
この新機能がビルド時間を大幅に短縮することを確認するために、ユーザーがCache Intelligenceをどう始められるのかをデモしてみましょう。
Cache Intelligenceがビルド時間の短縮にどれほど効果的かを示すために、Harness Developer Hub(YarnでビルドされたWebアプリ)を使って2つの連続したビルドを実行しました。
最初の実行では、キャッシュ が使えず、ビルドステップに9分5秒かかり、ビルドプロセス全体で合計10分56秒かかりました。
2回目の実行では、キャッシュがリストアされて使われ、ビルドステップが3分10秒に短縮され、全体のビルド時間がわずか6分1秒に短縮されました。
その結果、合計ビルド時間は45%短縮し、ビルドパフォーマンスの最適化に対するCache Intelligenceの大きな影響が実証されました。
以下の画像では、キャッシュがない場合(1枚目が1回目のビルド)とキャッシュがある場合(2枚目が2回目のビルド)の個々のステップのパフォーマンスの違いを確認できます。この比較は、Cache Intelligenceによるビルド速度と効率の大幅な改善を示しています。
Harness CIを使用する場合、最初にCIステージに"caching"propertyを追加する必要があります。キャッシュは、完全にホストされた環境であるHarnessクラウドに安全に保存されるため、独自のストレージを用意する手間から解放されます。
- stage:
name: Build Jhttp
identifier: Build_Jhttp
type: CI
spec:
caching: # --------------- ADD LINE
enabled: true # ----------------ADD LINE
cloneCodebase: true
現在、依存関係の自動検出とキャッシュは、Bazel、Maven、Gradle、Node、Yarn、Goのビルド ツールをサポートしています。別のビルドツールを使っている場合や、依存関係が標準的でない場所に保存されている場合でも、キャッシュしたいパスを指定することで、Cache Intelligenceを使えます。例えば:
- stage:
name: Build Jhttp
identifier: Build_Jhttp
type: CI
spec:
caching:
enabled: true
Paths: # ------- Add 'Paths' under 'caching'
- tmp/cache # ------- Specify one or more paths to cache
cloneCodebase: true
ここでは、Cache Intelligenceの使い方を順にご説明します。
これらの手順を実行すると、フォークされたリポジトリーのクローンを作成し、ウェルカムメッセージを出力する基本的な「hello world」パイプラインが作成されます。そこで、パイプラインを次のように変更します。
ステージのspecプロパティの下に「caching」プロパティーを追加します。
caching:
enabled: true
「Echo Welcome Message」ステップを、アプリケーションをビルドする次のステップに置き換えます。
type: Run
name: Build
identifier: Build
spec:
connectorRef: account.harnessImage
image: node:18
shell: Sh
command: |-
yarn
yarn build
最後に、次のようなパイプラインが作成されます。
HarnessのCache Intelligenceは、CIパイプラインにおけるビルドパフォーマンスを強化するための高度なアプローチを提供します。キャッシュ管理を合理化してみませんか?
今すぐ無料トライアルにサインアップするか、デモをリクエストしてください。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。