はじめに
こんにちは!
BFT2020年新卒の金丸&島田です!
みなさん、ジョブスケジューラには何を使っていますか?お馴染みの「タスクスケジューラ」や「cron」、流行りのAWSでは「AWS Batch」 など、単にジョブスケジューラといっても環境によって利用されるサービスは様々です。
今回、GCP上でのジョブスケジュール方法を検討する中で、「Cloud Scheduler」なるものを発見!「Cloud Scheduler」とはGCPが提供しているサービスのひとつで、「フルマネージドスケジューラ」をキャッチフレーズとしており、サーバーレスなジョブスケジューリングが実現できるとのこと。クラウドでサーバーレスとあれば試してみない訳にはいかない、ということで、本稿では 「Cloud Scheduler 」とはどういうものかをご紹介し、次の記事・その②で実際にジョブを作成する手順をご紹介していきます。
なお、クラウドでのサーバーレス構成に関しては別の記事で詳しく紹介しているので、ぜひそちらをご参照ください。
Cloud Schedulerとは?
冒頭でも紹介しましたが、「Cloud Scheduler」はGCPが提供するジョブスケジューラサービスでバッチ処理、ビッグデータジョブ、クラウドインフラストラクチャオペレーションなど、あらゆるジョブをスケジューリングできます。ジョブスケジューラというと、Windowsでは「タスクスケジューラ」、UNIX系OSでは「cron」などがよく知られています。フルマネージドと謳っている通り、従来はジョブを一元管理するためにスケジューラ用のサーバーをたてる必要がありましたが、「Cloud Scheduler」はGCP上でサービスとして動くため、サーバーレスなジョブスケジューリングが実現できます。
どうやって使う?
ジョブの作成や管理には、GCPコンソールかgcloudコマンドラインツールを使用できます。すべてのジョブを一元管理でき、編集/削除や一時停止/再開のアクション、実行状況の確認なども簡単に行えるので、快適なジョブ管理が可能です。
ジョブが処理されるターゲットの種類
「Cloud Scheduler」はジョブ作成時に指定されたスケジュールに従ってジョブをターゲット(タスクが処理される場所)へ送信します。ターゲットには以下の3種類を指定できます。
- HTTP/S エンドポイント
- Pub/Sub トピック
- App Engine アプリケーション
HTTP/S エンドポイント
エンドポイントの完全修飾URLとHTTPメソッドを指定することで、直接リクエストを送ることができます。HTTPメソッドはPOST・GET・HEAD・PUT・DELETE・PATCH・OPTIONSの7種類から選択でき、メソッドによってはターゲットに送信するデータを指定します。
このままではインターネット上のどこからでもHTTPエンドポイントを叩ける状態になっているため、必要に応じて認証の機能を設定します。HTTPターゲットでの認証には、認証に使用されるサービスアカウントの設定やトークンタイプの選択などを行います。
サービスアカウントを使用した認証方法についてはその②でご紹介します。
Pub/Sub トピック
Pub/Subは、メッセージの送信/受信処理を切り離した、非同期メッセージングサービスです。送信側であるパブリッシャーは送信先のトピックに対してメッセージを送信します。受信側であるサブスクライバーは、選択したエンドポイントに対してサービス側からメッセージをpushしてもらうか、自らサービス側にメッセージをpullすることで、メッセージを受け取ることができます。Cloud SchedulerでPub/Subターゲットを用いる場合には、ジョブの公開先であるトピックの作成と、トピックに送信するメッセージをペイロードに指定するほか、トピックをサブスクライブするために「Cloud Functions」で関数を作成する必要があります。
App Engine アプリケーション
使用しているプロジェクトに関連付けられているApp Engineアプリケーションをターゲットに指定できます。エンドポイントの相対URL、App Engineサービス名、HTTPメソッドの指定のほか、必要に応じてバージョンやインスタンス、送信するデータの指定を行います。
お金はどのくらいかかるの?
Cloud Scheduler の料金体系は、使用したジョブ数に応じて料金を支払う従量課金制となっています。毎月、無料枠として3ジョブまで使用することができ、それ以降は1ジョブごとに$0.10 USD加算されます。ただし無料枠はアカウントごとに設けられており、プロジェクト単位ではないのでご注意を。
終わりに
本稿では「Cloud Scheduler」の概要をご説明しました。
次のその②では実際にジョブを作成していきます!ぜひご覧ください!