18
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Herokuの無料dynoを起動させ続けるのにAdvanced Schedulerが便利だった

Last updated at Posted at 2020-02-12

はじめに

この記事はHerokuのスケジューラーアドオンであるAdvanced Schedulerについての記事です。

背景

Herokufree dynoを使うとウェブアプリケーションを無料で公開することができて、趣味での開発やプロトタイプの確認にはとても便利ですよね。

ところが、このfree dynoは何も動作しない状態が30分以上続くとsleep状態になってしまうという仕様になっています。
このsleep状態を解消するために、定期的にタスクを実行するHeroku Schedulerがこれまで使われていたようなのですが、今回Advanced Schedulerというものがあるのを知りました。1

使ってみると細かな時間設定が組めて、以前のスケジューラーよりも便利だったので紹介と導入手順をここに記しておこうと思います。

Advanced Schedulerの特徴は?

アドオンの紹介文に書いてた内容を箇条書きで抄訳します。

  • Herokuアプリケーションにおける次世代標準のスケジューラー
  • より優れた柔軟性
    • cron式に対応していて、とても柔軟にタスク周期を設定できる。
    • 「毎月15日で水曜の00:00に」実行するような複雑なタスク周期も可能。
  • 設定不要のモニタリング
    • デフォルトでタスクの実行を監視してくれていて、タスクが失敗したときには素早く通知を送ってくれる。
  • シームレスな統合
    • 起動中のアプリで動くどんなコマンドでも実行できる。アプリと同じdyno環境で実行できる。
  • 法人向けレベルの信頼性
    • 実行時遅延を最小にするよう設計されている。
    • また、実行が失敗したときになんども実行する。
  • 比類なき使いやすさ
    • 簡単に使えるcron式エディターがあるので初心者でも玄人でも扱えます。

社内のちょっとしたツールなどでは、平日だけ起動したいこともあると思うので、そういうニーズにはぴったりですね!

使い方

次にこの項目ではインストールと設定方法を紹介していきます。

アドオンをインストール

まずは稼働中のアプリにアドオンをインストールしましょう。

  • アプリのダッシュボード->リソースから、Find more add-onsをクリック。
install1.png
  • アドオン一覧からadvanced schedulerを探してインストール。Dynoカテゴリーにあります。
install2.png
  • Install advanced schedulerをクリック
install3.png

プランを選び、目的のappにプロビジョンする

install4.png
  • 今回は無料枠でいきたいので、Add-on PlanをHobbyにします。
  • App to provision toでは、導入したいapp名を入力し、指定します。
  • Provision add-on をクリックします。

すると、アプリのダッシュボードのリソース画面にリダイレクトされますので、
Advanced Scheduler
をクリックすることで、アドオンの設定画面に移動します。

タスクを指定する

いよいよ実行するタスクを設定していきましょう。

install5.png
  • Create First Triggerをクリックします。

その後、設定項目が現れます。完成形はこのような形になります。

install7.png

Name

タスクに名前をつけます。今回はAwake appにしておきました。

Command

今回はsleep状態を起こすためのタスクなので、単純にcurlでgetしてきましょう。

起動用タスク
curl http://アプリ名.herokuapp.com/

Timezone

有料プラン版の機能のようですがタイムゾーンを設定できます。2

State

このタスクの有効状態、無効状態を選択できます。

Type

  • Reccurring (再帰的に実行する)
  • One-off (一度だけ実行する)

Schedule

スケジュールヘルパーを使って典型的なスケジュールを設定するか、cron式を設定するかを選べます。

Use Editorを開いて、適切に設定した後に、コピペしましょう。
下記の例は、平日の10時から18時の間、00分と20分と40分にトリガーするような設定になっています。
追記:なお、無料プランの場合ではタイムゾーンがUTCに固定されるため、東京標準時に合わせるためにはhour指定を-9した値で設定してください。

Screenshot from 2020-02-13 10-29-57.png
  • 最後にSaveすると、Scheduled Taskに設定されている内容が表示されるかと思います!
complete1.png

これでタスク設定が完了です。以上の設定でアプリが起動し続けるようになったかと思います!
お疲れさまでした。

おわりに

この記事は以上になります。何かわかりにくいところや間違えているところがありましたらコメントください。

参考リンク

公式ドキュメント: https://devcenter.heroku.com/articles/advanced-scheduler

ほしい物リスト

もしこの記事が役に立ったのであれば、本や食料を買っていただけるととても嬉しいです。https://www.amazon.jp/hz/wishlist/ls/1P644LOPKXCLP?ref_=wl_share

Twitter

https://twitter.com/kawadumax

  1. add-on一覧をみていたら目に入った

  2. 東京の時間は UTC +9 なので、タイムゾーンがUTCの時は、cron式のhourは__-9__して記述する。

18
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?