山崎屋の技術メモ

IT業界で働く中でテクノロジーを愛するSIerのシステムエンジニア👨‍💻 | AndroidとWebアプリの二刀流🧙‍♂️ | コードの裏にあるストーリーを綴るブログ執筆者✍️ | 日々進化するデジタル世界で学び続ける探究者🚀 | #TechLover #CodeArtisan、気になること、メモしておきたいことを書いていきます。

【Heroku】無料プランの Sleep を回避する

f:id:yyama1556:20180430102044p:plain

前回の記事で Web アプリを動かすことができるプラットフォーム、 Heroku の無料プランについて紹介しました。

www.shookuro.com

記事内にもあるとおり、無料プランでは 30 分間アクセスがないと Sleep 状態となり、次回アクセスした際にレスポンスが遅れます。Spring Boot で作ったアプリの体感では、長いときは 30 秒くらい待たされます。

私のように 1 アプリだけを運用しているのであれば、 24 時間稼動させていたとしても、無料枠の 1,000 Dyno時間を超過することも無いので、今回は Sleep 回避の方法を実際にやってみたいと思います。

Heroku Scheduler アドオンのインストール

定期的な処理を Heroku 上で行うには Heroku Scheduler を使用します。

Heroku Scheduler では「1 日 1 回」、「1 時間に 1 回」、「10 分に 1 回」のどれかで、定期的な処理を実行することができます。

コマンドプロンプトを立ち上げて、プロジェクトのフォルダに移動します。「heroku addons:create scheduler:standard」と入力したらインストールの完了です。

C:\Users\yyama>cd C:\workspace\reki-henkan

C:\workspace\reki-henkan>heroku addons:create scheduler:standard
Creating scheduler:standard on ⬢ reki-henkan... free
This add-on consumes dyno hours, which could impact your monthly bill. To learn more:
http://devcenter.heroku.com/addons_with_dyno_hour_usage

To manage scheduled jobs run:
heroku addons:open scheduler

Created scheduler-deep-48142
Use heroku addons:docs scheduler to view documentation

アプリの概要ページに Heroku Scheduler が表示されるようになりました。

f:id:yyama1556:20180504122923p:plain

これでインストールは完了です。

Heroku Scheduler アドオンの設定

引き続き、設定を行っていきます。

今回は Heroku 上で稼動している Web アプリケーションの URL に 10 分に 1 回アクセスするような設定を行います。

アプリ概要ページの Installed add-ons から、Heroku Scheduler を選択します。先ほどのスクリーンショットの赤枠内です。

Scheduler のページが表示されるので 「Add new job」を選択します。

f:id:yyama1556:20180504123605p:plain

設定画面が開きます。

f:id:yyama1556:20180504123727p:plain

10 分間隔で「curl https://reki-henkan.herokuapp.com/」コマンドを発行する場合は以下のように入力します。URL は Heroku 上にデプロイしてあるアプリの URL です。

f:id:yyama1556:20180504123836p:plain

「save」ボタンをクリックするとトップページに戻り、スケジュールされていることが確認できます。

f:id:yyama1556:20180505111352p:plain

「heroku logs」コマンドでログを見ると、スケジューラによる実行が確認できます。

2018-05-05T02:16:10.569102+00:00 heroku[scheduler.7366]: Starting process with command `curl https://reki-henkan.herokuapp.com/`
2018-05-05T02:16:11.361611+00:00 heroku[scheduler.7366]: State changed from starting to up
・
・
・
2018-05-05T02:16:12.997361+00:00 heroku[scheduler.7366]: Process exited with status 0
2018-05-05T02:16:13.019901+00:00 heroku[scheduler.7366]: State changed from up to complete

まとめ

Heroku の無料枠で Sleep を回避するために Heroku Scheduler を使用した実例でした。

個人で Web アプリを公開する場合は、ぜひ参考にしてください。

プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)

プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)

クラウド開発徹底攻略 (WEB+DB PRESS plus)

クラウド開発徹底攻略 (WEB+DB PRESS plus)

  • 作者: 菅原元気,磯辺和彦,山口与力,澤登亨彦,内田誠悟,小林明大,石村真吾,相澤歩,柴田博志,伊藤直也,登尾徳誠,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/05/13
  • メディア: 大型本
  • この商品を含むブログを見る
LINE BOTを作ろう!  Messaging APIを使ったチャットボットの基礎と利用例

LINE BOTを作ろう! Messaging APIを使ったチャットボットの基礎と利用例