2023年4月8日

Continuous Delivery

より速く、より効率的な継続的インテグレーションビルドのためのCache Intelligenceの導入

Cache Intelligenceがシームレスな自動キャッシングによって継続的インテグレーションビルドを加速し、パフォーマンスと効率の両方を向上する方法についてご紹介します。

Cache Intellignece Banner.pngこの度、継続的インテグレーション(CI)パイプラインにおけるキャッシュの実装プロセスを簡素化し、既知の依存関係を自動的にキャッシュおよび復元するCache Intelligenceの一般提供を開始することになりましたのでお知らせします。この機能をHarness Continuous Integrationモジュールにリリースすることで、開発者はCIのビルド時間を最適化し、ソフトウェア配信の効率を向上できます。

 

なぜCache Intelligenceなのか?

CIビルドでは、ライブラリーなど依存性の高い大規模なソフトウェアコンポーネントのダウンロードやインストールが必要な場合が多く、非常に時間がかかります。ローカルでビルドする場合、または複数のビルドにビルドマシンを再利用する場合、通常はプロセスを高速化するためにキャッシュを使えます。ただし、最新の継続的インテグレーションソリューションを使う場合は、多くの場合、実行後に終了するコンテナや仮想マシンなどのエフェメラル環境パイプラインを実行するため、そうならないことが多いのです。このアプローチにより、パイプラインは隔離された環境で実行され、他のビルドインスタンスによる干渉を受けませんが、ローカルキャッシュがないため、ビルド時間が長くなる可能性があります。そのため、エフェメラルビルド環境を使用する場合はキャッシュを構成することをお勧めしますが、このタスクは面倒な場合があります。

このロジックをパイプラインに組み込み、キャッシュを管理する責任は通常、ユーザーにあります。キャッシングは、キャッシュの保存と復元の手順やボリュームのマウントなど、さまざまな方法で既に実現できていますが、エンジニアは依然として構成とメンテナンスの大部分を担当しており、開発から時間を奪っています。多くの開発者は、キャッシングがビルド時間を短縮するためのソリューションであることさえ認識していません。

Harness Cache Intelligenceは、キャッシュ管理を効率化し、既知の依存関係を自動的にキャッシュ&リストアすることで、CIパイプラインにおけるビルドプロセスを簡素化します。キャッシュ管理の複雑さを取り除くことで、開発者はより合理化されたワークフローの恩恵を受け、効率と生産性を向上し、コードの記述に集中できるようになります。

この新機能がビルド時間を大幅に短縮することを確認するために、ユーザーがCache Intelligenceをどう始められるのかをデモしてみましょう。

 

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によるビルド速度と効率の大幅な改善を示しています。
 

Build Speed.png

Harness Developer Hub 1.png

Harness Developer Hub 2.png

製品チュートリアル: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の使い方を順にご説明します。

  1. Harness Developer Hub GitHubリポジトリhttps://github.com/harness/developer-hubをアカウントにフォークします。
  2. 無料アカウントにサインアップまたは既存のアカウントにログイン
  3. Harness CIのGet Startedウィザードに従います。
     
  4. Source Code Managerへの接続を構成する
  5. Source Control Managerを選択するように求められたら、'GitHub'を選択し、Harness CIがGitHubアカウントに接続するために使用する認証方法としてOAuthもしくはAccess Tokenを使います。
  6. リポジトリーを選択するように求められたら、前の手順でフォークしたリポジトリーを選び、「Configure Pipeline」を選びます。
  7. 「Create empty pipeline configuration」を選び、「Create Pipeline」を選びます。

これらの手順を実行すると、フォークされたリポジトリーのクローンを作成し、ウェルカムメッセージを出力する基本的な「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

最後に、次のようなパイプラインが作成されます。

Code.pngHarness Cache Intelligenceを使い始める

HarnessのCache Intelligenceは、CIパイプラインにおけるビルドパフォーマンスを強化するための高度なアプローチを提供します。キャッシュ管理を合理化してみませんか?
今すぐ無料トライアルにサインアップするか、デモをリクエストしてください


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

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

お問い合わせ