注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
プロダクションパイプラインのスケジュールが簡単に管理できるようにするため、スケジューリングガイドラインを作成しました。このページを使用して、ユーザーが責任を持つスケジュールを管理してください。
1つのスケジュールに結合すべき不要なスケジュールを持つパイプライン:
データセットを論理的なスケジュールに結合し、connecting build を使用します:
以下のガイダンスを使用して、パイプラインの効果的なスケジュールシステムを設定します。
ほとんどの場合、パイプラインごとに1つのスケジュールを持つべきです。実際、パイプライン内の各データセットは、それに関連するスケジュールビルドを1つだけ持つべきです。データセットが2つの異なるスケジュールによって構築されると、キューが発生し、両方のスケジュールが遅延する可能性があります。スケジュールのセットをシンプルで整理されたものに保つことで、各スケジュールの責任を明確にし、特定のデータセットでビルドが失敗した場合のデバッグを容易にします。また、パイプラインの設定を確認または変更したいときに確認する場所が1つだけになるため、パイプラインのメンテナンスにも役立つかもしれません。
ただし、複数の順序付けられたステップで実行されるパイプラインには例外を設けることができます。以下にいくつかの例を記載します:
Apex 1
、Apex 2
、Apex 3
に定義された3つのスケジュールを設定することです。しかし、Shared
にスケジュールを作成し、このデータセットを他のパイプラインへの入力として扱うことも有益かもしれません。可能な限り全てのスケジュールはプロジェクトスコープにすべきで、スケジュールの成功の可否が単一ユーザー(スケジュールの所有者)の権限に依存しないようにするべきです。そうしないと、スケジュール所有者の権限が変更され、スケジュールのデータセットの構築が阻止される可能性があります。これは特に重要で、スケジュールの編集後にスケジュールの所有権が変更される可能性があるためです。スケジュールを最後に変更したユーザーがスケジュールの所有者になります。
プロジェクトスコープにできないスケジュールもあります:
プロジェクトスコープにできないスケジュールでは、特定のパイプライン上の全てのスケジュールを単一ユーザーが所有することが望ましいです。このユーザーは通常、"service user"(単一の人物に結びついていない特別なユーザーアカウント)です。または、単一の所有者はプロジェクト内のスケジュールの全ての変更に責任を持つチームリーダーであることもあります。
パイプライン上のスケジュールを単一ユーザーが所有することで、複雑さが減少し、ユーザーの権限の変更やチーム構成の変更によってスケジュールが悪影響を受ける可能性を軽減します。
上述した通り、スケジュールを最後に変更したユーザーがスケジュールの所有者になるという事実は重要であり、複数のユーザープロフィールがスケジュールを管理していて、チーム全体のアクセス権が一様でない場合、所有権の変更を考慮に入れないと、追跡が困難な権限エラーが発生する可能性があります。
権限の一貫性を保つだけでなく、単一の所有者は、Builds アプリケーションで関連するビルドを追跡するのを容易にします。ここでは、"Started by" で全てのビルドをフィルター処理することができます。
スケジュールを設定する際はリトライを使用します。リトライはジョブの一部であり、ジョブが再試行可能な例外で失敗した場合、ビルドオーケストレーションレイヤーはビルドを失敗させずに同じジョブの新しい試行を再起動します。
スケジュールには少なくとも3回のリトライを設定し、リトライ間には少なくとも1分を設けることを推奨します。これにより、プラットフォームは失敗するジョブを自動的にインターセプトし、同じビルド内で再トリガーすることができます。1分の追加ギャップは、プラットフォームにジョブが初めて失敗した原因となる一時的な問題から回復するチャンスを与えます。
ジョブのリトライを有効にしたくない場合もあります。例えば、障害が発生した際にすぐにアラートを出したいと考えている非冪等な副作用を持つ変換を持つ、非常に厳格なサービスレベル契約(SLAs)を持つパイプラインなどです。
スケジュールは "force-build" オプションを有効にすることができます。このオプションが有効になっていると、スケジュール内の全てのデータセットが、その新鮮さに関係なく構築されます。このオプションは Data Connection syncs にとって非常に有用で、それらはプラットフォーム内で常に最新の状態に保たれているため、force build が使用されない限り、スケジュールビルドの一部としては構築されません。ただし、派生したデータセットに対して force build オプションを持つマルチデータセットのスケジュールを持つことは、リソースの使用面でコストがかかるため、お勧めしません。代わりに、force-build する必要があるデータセットをそれぞれのスケジュールに分割します。
スケジュールに含まれるものについては明示的にすることが重要です。パイプラインの外にあるデータセットは明示的に無視します。ビルド解決は複雑であることが多いですが、含まれるものについて明示的であることは、暗黙的であるよりも透明性を提供します。
Owned By Someone
は Apex 2
に定義されたスケジュールから無視されるべきです。同様に、Cleaned 1
と Cleaned 2
についても、これらのいずれかでジョブをトリガーすると、権限不足によりすぐにビルドが失敗するため、無視されるべきです。また、スケジュールは以下のようなデータセットに依存するか、それらを構築しようとするべきではありません:
パイプラインの全ての出力はスケジュールで "target" としてタグ付けされるべきです。スケジュールは1つまたは複数のターゲットを持つことができ、これらはスケジュールがインストールされているデータセットです。スケジュールはまた、1つまたは複数の出力を持つことができ、これらはスケジュールによって構築され、ビルドの他の箇所では使用されない最終的なデータセットです。ほとんどの場合、ターゲットデータセットと出力データセットは同一ですが、一部のケース(特にマルチ出力ビルド)では、ビルドは異なるターゲットと出力データセットを持つことがあります。一般的なルールとして、パイプラインの全ての出力はターゲットとして定義されるべきです。
Advanced options の Abort build on failure チェックボックスにチェックを入れて、ジョブが失敗したらすぐにビルドが失敗するように設定します。これにより、早く信号を受け取ることができます。
全てのスケジュールには説明的な名前をつけるべきです。スケジュールの名前は、パイプラインが複雑さを増してユーザーが増えるにつれて非常に役立ちます。
説明的なスケジュール名は、スケジュールと対話する人々、例えば、将来、スケジュールに関連する問題の修正に責任を持つ人々に、スケジュールの意図についての情報を提供します。
複数の取り込みストリームがある場合、他のユーザーがパイプラインの任意のパスをフォークすることを期待している場合、またはメンテナンスの責任が時間とともに変わることを予想している場合など、スケジュールに名前を付けることは特に重要です。