## What — schedule は下流から、retry は冪等性から - **日次にした理由**:CSV の提供時刻・曜日が先方依存で読めない。冪等なので空振りしても無害で、提供遅延にも自動追従する(週次だと取りこぼす) - **早朝にした理由**:下流の dbt モデリング開始より前に置けば「提供翌朝には mart で使える」 - **分をずらす理由**:`:00` への実行集中を避ける負荷分散 - **max_retries = 1 の理由**:CRC32C で冪等なので再試行しても二重取込にはならない(=再試行は安全)。ただし失敗原因の多く(権限・設定ミス)は再試行しても直らないので 1 回で止め、Slack 通知で人が見る 冪等性は「リトライしていいか」を決めるだけで、「リトライする意味があるか」は別問題だ。 ## How — Scheduler の retry_config は Job のリトライではない `retry_config`(3回、30〜300s)は Job 本体のリトライではなく、Scheduler → ディスパッチャの **HTTP 呼び出し失敗時**のリトライ(リポジトリ多数派パターン)。 handler は全滅時のみ 500 を返す実装なので、部分成功(200)だとリトライされない。失敗テナントは翌日の日次実行が敗者復活戦になる。 「日次 × 冪等」がリトライの穴を埋めている。逆に言うと、週次にした瞬間にこの穴は1週間開きっぱなしになる。スケジュールとリトライは別々に決められない。 > [!success] > 過去のレビュー実績も同じところを突いてくる。「この時刻にしてる理由は?dbt の開始より前に」——時刻には根拠が求められる。 ## 関連 - [[Google Cloud]] - [[Cloud Run Jobの設定値の決め方]] — 設定値全体の一覧と方針 - [[Cloud Run Jobのcpuとmemoryの決め方]] — リソース側の根拠 - [[APIとJobの違い]]