メインコンテンツにスキップ

分散タスク実行ガイド

このガイドのイラストは、NrwlianのNicole Oliver氏によって作成されました。

how does distributed task execution work in Nx Cloud?

タスクとは?

what's a task? project + target (i.e. shared-product-ui + test).  each run contains many tasks.  affected contains shared-product-ui, product-page, shared-e2e-util and shared-ui

Lernaの観点から、タスクとはプロジェクトで実行されるターゲットです。つまり、プロジェクト`shared-product-ui`で実行されるターゲット`test`はタスクです。タスクの詳細については、タスク実行の記事を参照してください。

Nx CloudはCIタスクを自動的にスケジュールします

when you turn on DTE, Nx will schedule your commands' tasks in CI.  for example, say you want to run these 3 commands to verify your code: nx affected --target=lint, nx affected --target=test and nx affected --target=build

CIのすべてのプルリクエストに対して、影響を受けるすべてのプロジェクトのlint、テスト、ビルドを実行したいとします。CIワークフローを作成する際には、各プルリクエストによって影響を受けるプロジェクトの数や各タスクの実行時間を把握できません。どのように設定しても、lint、テスト、ビルド用に静的な数のエージェントマシンを手動で割り当てると、時間が無駄になります。このアプローチはビニングと呼ばれます。

幸いなことに、分散タスク実行を使用すると、Nx Cloudは利用可能になったエージェントにタスクを動的に割り当てることができます。

Nx Cloudはエージェントを効率的にオーケストレーションします

Nx will automatically schedule tasks w/agents you assign in CI.

DTEを設定する際には、(1)実行するタスクと(2)Nx Cloudが使用できるエージェントの数を定義します。その後、Nx Cloudオーケストレーターは、すべてのエージェントが完全に活用され、CIプロセスが可能な限り早く完了するように、タスクをエージェントに効率的に分散します。

タスクの実行順序は重要です

but don't some tasks depend on others' results?  Yep! Nx knows about your dependency tree, so it will execute tasks in the right order and make sure the results are available where they're needed.

他のタスクの前に実行する必要があるタスクもありますが、Nx Cloudはエージェントにタスクを割り当てる際にそれを考慮します。これらの依存関係の定義について詳しくは、タスク実行の記事をご覧ください。

なぜタスクを分散させるのか?

Result: Faster Builds!

CIプロセスを多くのエージェントに効率的に並列化することで、CIを劇的に高速化できます。これにより、開発者は問題をより迅速に特定し、より多くの作業を完了できます。

費用はいくらですか?

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

クローズドソースプロジェクトの場合、月あたり最初の500計算時間は無料です。ほとんどのワークスペースはこの量を超えません。クレジットカードは必要ありません。500時間を超えると、費用は計算時間あたり1ドルです。

詳しくは、Nx Cloudの価格ページをご覧ください。

セキュリティ

実際のコードはクラウドに保存されませんが、タスクのハッシュ化された入力とキャッシュされた結果は保存されます。そのデータのエンドツーエンド暗号化を有効にして、キーなしでは誰もその情報を表示できないようにすることができます。また、Nx Cloudを独自のサーバーでホストする場合は、Nx Private Cloudにサインアップできます。

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

図解

Nicole Oliver氏が作成した完全な図解説明ページはこちらです

How Does DTE Work Explainer