分散タスク実行ガイド
このガイドのイラストは、NrwlianのNicole Oliver氏によって作成されました。
タスクとは?
Lernaの観点から、タスクとはプロジェクトで実行されるターゲットです。つまり、プロジェクト`shared-product-ui`で実行されるターゲット`test`はタスクです。タスクの詳細については、タスク実行の記事を参照してください。
Nx CloudはCIタスクを自動的にスケジュールします
CIのすべてのプルリクエストに対して、影響を受けるすべてのプロジェクトのlint、テスト、ビルドを実行したいとします。CIワークフローを作成する際には、各プルリクエストによって影響を受けるプロジェクトの数や各タスクの実行時間を把握できません。どのように設定しても、lint、テスト、ビルド用に静的な数のエージェントマシンを手動で割り当てると、時間が無駄になります。このアプローチはビニングと呼ばれます。
幸いなことに、分散タスク実行を使用すると、Nx Cloudは利用可能になったエージェントにタスクを動的に割り当てることができます。
Nx Cloudはエージェントを効率的にオーケストレーションします
DTEを設定する際には、(1)実行するタスクと(2)Nx Cloudが使用できるエージェントの数を定義します。その後、Nx Cloudオーケストレーターは、すべてのエージェントが完全に活用され、CIプロセスが可能な限り早く完了するように、タスクをエージェントに効率的に分散します。
タスクの実行順序は重要です
他のタスクの前に実行する必要があるタスクもありますが、Nx Cloudはエージェントにタスクを割り当てる際にそれを考慮します。これらの依存関係の定義について詳しくは、タスク実行の記事をご覧ください。
なぜタスクを分散させるのか?
CIプロセスを多くのエージェントに効率的に並列化することで、CIを劇的に高速化できます。これにより、開発者は問題をより迅速に特定し、より多くの作業を完了できます。
費用はいくらですか?
Nx Cloudはオープンソースプロジェクトでは無料です。設定するには、cloud-support@nrwl.ioにご連絡ください。
クローズドソースプロジェクトの場合、月あたり最初の500計算時間は無料です。ほとんどのワークスペースはこの量を超えません。クレジットカードは必要ありません。500時間を超えると、費用は計算時間あたり1ドルです。
詳しくは、Nx Cloudの価格ページをご覧ください。
セキュリティ
実際のコードはクラウドに保存されませんが、タスクのハッシュ化された入力とキャッシュされた結果は保存されます。そのデータのエンドツーエンド暗号化を有効にして、キーなしでは誰もその情報を表示できないようにすることができます。また、Nx Cloudを独自のサーバーでホストする場合は、Nx Private Cloudにサインアップできます。
例
これはサンプルリポジトリです。分散タスク実行の設定がいかに簡単か、パフォーマンスの向上、シャーディング/ビニングとの比較を示しています。
図解
Nicole Oliver氏が作成した完全な図解説明ページはこちらです