メインコンテンツへスキップ
非公式ベータ版翻訳

このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →

分散タスク実行ガイド

本ガイドの図解はNxコミュニティのNicole Oliverが作成しました

Nx Cloudにおける分散タスク実行の仕組み

タスクとは?

タスクの定義:プロジェクト+ターゲット(例:shared-product-ui + test)。各実行には複数タスクが含まれます。affected には shared-product-ui, product-page, shared-e2e-util, shared-ui が含まれる

Lernaにおけるタスクとは、プロジェクト上で実行されるターゲットを指します。例えばプロジェクトshared-product-ui上で実行されるtestターゲットは1つのタスクです。詳細はタスク実行の記事をご覧ください。

Nx CloudがCIタスクを自動スケジューリング

DTE有効時、NxはCI内でコマンドのタスクをスケジューリングします。例:コード検証用に nx affected --target=lint, nx affected --target=test, nx affected --target=build の3コマンドを実��行する場合

CIで各PRに対して、影響を受ける全プロジェクトのlint、test、buildを実行すると仮定しましょう。CIワークフロー作成時点では、各PRの影響範囲や各タスクの所要時間を予測できません。手動で静的マシン台数を割り当てる「ビニング」方式では、lint/test/build用に慎重に設定しても時間の無駄が生じます。

分散タスク実行を利用すれば、Nx Cloudがエージェントの空き状況に応じてタスクを動的に割り当てます。

Nx Cloudによる効率的なエージェントオーケストレーション

CIで割り当てたエージェントを使用し、Nxが自動的にタスクをスケジューリング

DTE設定時には、(1)実行したいタスクと(2)Nx Cloudが利用可能なエージェント台数を定義します。Nx Cloudオーケストレーターはエージェントを最大限活用しつつタスクを効率的に分散するため、CIプロセスを最短時間で完了させます。

タスク実行順序の重要性

タスク間に依存関係がある場合でも問題ありません。Nxは依存関係ツールを把握しているため、適切な順序でタスクを実行し、必要な場所で結果を利用可能にします

先行実行が必要なタスクも存在しますが、Nx Cloudはタスク割り当て時にこの点を考慮します。依存関係の定義方法の詳細はタスク実行の記事をご参照ください。

分散実行する理由

結果:ビルド時間の高速化!

CIプロセスを複数エージェントで効率的に並列化することで、CIを劇的に高速化できます。これにより開発者は問題を迅速に特定し、生産性を向上させられます。

費用について

Nx Cloudはオープンソースプロジェクトで無料です。設定にはcloud-support@nrwl.ioまでご連絡ください。

クローズドソースプロジェクトでは、月500コンピューティング時間まで無料です。多くのワークスペースはこの範囲内です。クレジットカード不要。500時間超の利用は1コンピューティング時間あたり$1です。

詳細はNx Cloud料金ページをご覧ください。

セキュリティ

実際のコードはクラウドに保存されませんが、タスクのハッシュ化された入力とキャッシュされた結果は保存されます。エンドツーエンドの暗号化を有効にすることで、キーを持たない者がその情報を閲覧できないようにすることが可能です。また、独自のサーバーでNx Cloudをホストしたい場合、Nx Cloud Enterpriseに登録することができます。

分散タスク実行の設定がいかに簡単か、パフォーマンスの向上を示し、シャーディング/ビニングとの比較を行った例のリポジトリです。

図解

以下はNicole Oliverが作成した完全な図解説明ページです:

DTEの動作説明