tekitoumemo’s diary

C#、.NET系の技術ブログを書いています。みんなの洋楽ランキングを運営しています。

Azure Schedulerの簡単な説明と使い道について

azure.microsoft.com

結構前からあったサービスですが、「これ結構使えるじゃん!」って思ったので簡単な使い方と僕なりの使い道を説明できれば。

Azure Schedulerとは

Azure Scheduler では、Azure の内部と外部でサービスを呼び出すジョブ (HTTP/S エンドポイントの呼び出しや、Azure Storage キュー、Azure Service Bus キュー、トピックへのメッセージの送信など) をクラウドに作成します。ジョブを今すぐ実行するか、定期的なスケジュールで実行するか、または今後の特定の時点で実行するかを選択できます。

定期的に動かしたい処理を実行できるサービスってことです。クエリやらストレージ処理やらRESTやらいろいろ対応してるよってやつ。ここら辺の用途でAzure FunctionとかWebJobが有名ですが、一番簡単でかつシンプルに管理できるので使い勝手がめっちゃ良いと思ってます。

値段は?

f:id:tekitoumemo:20180903003142p:plain
azure.microsoft.com
ここを見てもらえればわかるのですが、1分単位で最大50ジョブまで使えて1500円強です。まぁこんなもんですかね。タスクスケジューラーとかで管理しているコストを考えれば安いし、でも高いしみたいな。昔はFreeで1時間単位のやつがあったようですが、なくなっちゃったんですかね?それとも従量課金だからかな?まぁいいや

簡単な使い方

Azureのポータルからすべてのサービス>管理ツール>スケジューラ ジョブ コレクションを選択します。
f:id:tekitoumemo:20180903004006p:plain
以下の画面からタスクの設定を行います。

  • 名前

スケジューラーの名前を入力します。用途に合わせて設定してください。

  • ジョブコレクション

プランの設定です。3種類あるのでこれも用途に合わせて設定してください。僕は1500円の一番安いやつを選びました。

ここも用途に合わせて。

  • アクションの設定

ここは、REST APIを投げるパラメータの設定やらなんやらです。

  • スケジュール

スケジュールの設定です。1分単位で設定できます。UTC+9が日本時間なので、用途に合わせて設定して下さい。
f:id:tekitoumemo:20180903004224p:plain

どんな感じ?

f:id:tekitoumemo:20180903005218p:plain
僕の場合は4つジョブを設定しています(もったいな!)。ちゃんと実行結果が出て、エラーが発生したら何回リトライするか、どんなエラーか詳細にわかるので良いですね。レスポンスがなかなか来ないAPIだとタイムアウトになっちゃうので、そこらへんはいつか調べます(絶対調べない)。

どこに使えるか

スケジューラーなので定期バッチなどに使えるかなと思います。僕のサイトは、規模が小さく、夜中のアクセスがほとんどないので一つのサイトにAPIをまとめていて、4〜5時の間で実行しています。今までの定期バッチだとタスクスケジューラーで定期的にconsole Appを実行するって流れが一般的だったと思うのですが、RESTにすることで意味不明な名前だったり、意味不明なオプションがはっきりして管理しやすいなと個人的に思います。RESTの良いところは、基本名詞で名付けて動詞はHttpメソッドでわかるので、ドキュメントにも起こしやすく管理しやすいのがメリットだと思います。RESTについては、以下のサイトがわかりやすかったかなと。
qiita.com

Azure Functionを試したのですが、書き方が若干異なったり、サービスとソースが分かれる(ここはあまり調べてないからわからない)のがしっくり来なかったのでこれが一番シンプルで管理しやすいかなと思いました。

定期処理をどうするかは課題で、お金をかけたくなかったのでGCPなど調べましたが管理する場所を分散させるのは一番のコストだなと思いました(学習面も含めて)。若干お金がかかるのがマイクロソフトのやらしいとこだなぁと思いますが、だいたい欲しいと思ったPaasが一番揃ってるのはAzureの良いところだなと実感しました、