Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Run jobsをバッチ処理基盤として使いたい

horsewin
November 22, 2024
41

Cloud Run jobsをバッチ処理基盤として使いたい

Jagu'e'r Cloud Native #16 ハイブリッド Meetupで登壇した資料となります。

Google Cloudでバッチ処理を実行するためには複数の選択肢があります。そのうちの1つがCloud Run jobsです。
Production環境でワークロードを処理するために必要な要素として「運用監視」は欠かせないものです。Cloud Run jobsをバッチ処理基盤として使っていくために運用監視をするメトリクス取得の話について述べた資料です。

horsewin

November 22, 2024
Tweet

More Decks by horsewin

Transcript

  1. ⾺勝 淳史 株式会社ヘンリー所属 @HorseVictory • Senior Web Engineer • Jagu'e'r

    分科会 無所属 • 猫と戯れるのが好き • 好きなサービスはCloud Run
  2. バッチ処理とは 今回扱うバッチ処理は次のような⽤途で利⽤される処理を指す ref: 「Google Cloud で "バッチ ジョブ" を実⾏する 2

    つの⽅法」https://zenn.dev/google_cloud_jp/articles/c99697707e3b2c Job Job Job Job Job Job Job NAS Job Job DB Job Job Queue 単⼀実⾏ 直列実⾏ 並列実⾏ ファイル共有 DB共有 イベント駆動
  3. Cloud Run jobsとは • Job、Execution、タスクから構成 • Job ◦ ルートリソースとして各種設定 •

    Execution ◦ Jobを⼀度実⾏するためのタスクの集合 • タスク ◦ 処理の実⾏単位。並列起動やリトライ が可能 ref: https://cloud.google.com/run/docs/create-jobs?hl=ja
  4. Cloud Run jobsをバッチ処理基盤として 使いたい Jagu'e'r Cloud Native #16 ハイブリッド Meetup

    動かすために 必要なものは? 運⽤監視がちゃんとできるか?
  5. バッチ処理で取得したい(であろう)メトリクス • ✅ リソースのキャパシティ(CPU、Memory) • 処理にかかった時間 • ✅ 正常終了した件数 •

    異常終了した件数 • ✅ 実⾏中の件数 • 許容処理時間の超過(ロングランの検知) 未カバーのメトリクスを取得する 対応を考える
  6. 処理にかかった時間 • 処理にかかった時間⾃体はgcloudコマンドから取得可能 ◦ gcloud run jobs executions tasks list

    --execution=${EXECUTION_NAME} • ジョブオーケストレータ(Cloud Workflowsなど)で動かしている場合は バッチ実⾏の後処理で取得 • Cloud Run jobsを単独実⾏している場合は監視基盤側で実⾏する
  7. 異常終了した件数 • リトライ回数を考慮すべきか? ◦ Cloud Run jobsにはリトライが設定 できる(*1) ◦ Cloud

    Run jobsが冪等な場合、リト ライによる再実⾏で正常終了するこ とがある ◦ リトライ回数を考慮したしきい値設 定をどこまでするかはケースバイケー ス (*1) https://cloud.google.com/run/docs/jobs-retries?hl=ja
  8. 実⾏中バッチの処理時間を計測 • OpenTelemetry サイドカー(*1)で実⾏時間の指標を記録できるか? ◦ Cloud Run jobsはサイドカー未サポート(*2) • 監視基盤側から起動時刻と現在時刻を利⽤して逆算をする

    ◦ いまのところ、こちらが有⼒ • いいアイデアがある⽅、ディスカッションしたいです笑 (*1): https://cloud.google.com/run/docs/tutorials/custom-metrics-opentelemetry-sidecar?hl=ja#trying-it-out (*2): https://www.googlecloudcommunity.com/gc/Serverless/Can-I-use-sidecar-containers-with-Google-Cloud-Run-jobs/m-p/704051
  9. バッチ処理で取得したい(であろう)メトリクス 取得したい情報 追加設定 メトリクス リソースのキャパシティ(CPU、Memory) なし 組み込み指標 処理にかかった時間 あり カスタム指標

    正常終了した件数 なし 組み込みメトリクス 異常終了した件数 あり ログベース指標 実⾏中の件数 なし 組み込みメトリクス 許容処理時間の超過(ロングランの検知) あり 監視基盤等でカバー