はじめに

2024年も残すところわずかとなりました。本記事では、Google Cloud のサービスの中でも、お気に入りになった Cloud Run jobs の 2024年の活用事例をご紹介したいと思います。

Cloud Run jobsとは何か?

Cloud Run jobs は、コンテナ化されたアプリケーションを一度限りまたは定期的なジョブとして実行するためのサーバーレスサービスです。簡単に Web サービスを提供できる Cloud Run の、バッチ処理やスケジュールされたタスク実行に特化したものとなります。GCE インスタンスによる処理と比較して、運用コストの削減と迅速な実行が大きなメリットです。
こちらのサービスは2023年3月に GA され、今もなお発展途上のサービスとなります(直近では168時間のタイムアウト設定が可能となりました(24時間以上はプレビュー))。

私のCloud Run jobs 活用事例

今年は様々な内容で Cloud Run jobs を利用しましたので、その一部についてユースケースをご紹介します。

1. Google Cloud 検証アカウント内の GCE と Cloud SQL のスケジュール停止/起動:

検証環境の GCE インスタンスと Cloud SQL インスタンスを、特定の時間帯に自動的に停止/起動する処理を Cloud Run jobs で実現しました。これにより、利用しない時間での不要なコストの発生を防ぎ、リソースの効率的な利用を実現しています。cronによるスケジュール設定と組み合わせることで、メンテナンス時間帯の自動化にも役立っています。ここまでであれば、スケジュール機能で可能ですが実際には止めるインスタンスと止めないインスタンスをタグで制御できるように実施しております。

2. Cloud SQLからのデータエクスポート:

Cloud SQL からデータを Cloud Storage に対して定期的にエクスポートする処理を導入しました。そのエクスポートした内容を、 EventArc で Cloud Run Functions から BigQuery へのインポートを行い、データ分析の仕組みの一部として活用しました。Cloud Storage をマウントしてエクスポートしているような処理でも活用できます。

3. GPUインスタンスの予約処理:

特定時間から GPU インスタンスを予約する必要があり、決まった時間になったら予約処理を実行するという仕組みを構築しました。人的に対応する場合、ミスやタイミングのズレなどが発生しますが、当該処理導入により、そういった懸念点を払拭することができました。

4. IP制限がある環境に対するURL監視:

特定のIPアドレスからのアクセスしか許可されていない環境のURL監視を、Cloud Run jobs 上から VPC 及び NAT を経由して IP アドレスを固定して URL に対して curl でリクエストを実行しています。Cloud Run jobs の柔軟性により、制限された環境へのアクセスも容易に実現することができました。

Cloud Run Functionsとの比較

Cloud Run jobs と似たサービスとして Cloud Run Functions がありますが、今回は以下に該当したことから Cloud Run jobs を利用しています。

  • Python や Go のような言語ではなく、シェルで記載する簡単な処理が行いたいかった
  • ストレージをマウントして処理を行いたかった

纏め

簡単な処理を効率的に行うために Cloud Run jobs を検討するようになるケースが増えてきました。記載したユースケースでも Cloud SQL への接続が行えたり、Cloud Storage のマウントが行えること、範囲として、Google Cloud リソース内の処理であったり、Google Cloud リソース自体に対する処理を行うなど、様々な場面で活躍することができることがとても良いです。記載したようなものだけではなく、複雑な処理のフローを管理したい場合は、Workflows と連携したり、URL 監視であればその結果を受けて再起動を行うなど、その先も含めて可能となります。2025年のさらなる Cloud Run jobs の躍進を期待するとともに、積極的に活用し、より効率的仕組みの構築を目指していきたいと考えています。

(参考リンク)