#0023

【Heroku入門】無料枠サーバーを24時間スリープさせない方法

2018-10-01 21:16 2018-10-01 12:16 "ゆざ"

Herokuの無料枠で最も課題となるのが、一定期間誰からもアクセスがないと「サーバーが寝てしまう」ことです。笑

人の手で定期的にアクセスするのは、流石に現実味がなさすぎるのでそれを自動化したいですよね。

その課題を解決できるのが、今回取り上げるアドオン「Heroku Scheduler」です。

10分あれば誰でも設定できるくらい簡単な作業なので、ぜひ軽い気持ちで読んでいって下さい。

スポンサーリンク

結論からいうと、「Heroku Scheduler」を使え!

Herokuは、無料プランだと 30 分間誰もアクセスをしないと Sleep 状態になってしまい、次にアクセスする際にレスポンスを返すのが遅くなってしまいます。

しかし、「Heroku Scheduler」を使えば、無料でHerokuのスリープを回避することができるのです。

Heroku Schedulerとは、定期的な処理を Heroku 上で行うためのHerokuアドオンです。

公式Herokuリファレンス:Heroku Scheduler

10分おき、1時間おき、1日おきから定期的に処理を行わせることが選択できるので、10分おきを選択して、アクセスを定期的に行うことでこの課題が解決します。

スリープ回避しているアプリ

クレジットカードの登録

いきなり、Heroku Schedulerをインストールしようとしていると、このようなエラーが出てしまいます。

$ heroku addons:create scheduler:standard
Creating scheduler:standard on ⬢ [アプリ名]... !
 ▸    Please verify your account to install this add-on plan (please enter a credit card) For more information, see
 ▸    https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify

要は、無料枠でもクレジットカードの情報を登録しないとHeroku Schedulerはインストールできないようです。

クレジットカードの情報を登録は、トップページの右上にあるアイコンを押すと、「Account settings」という項目があるのでここから登録していきましょう。

クレジットカード の登録

次に、一番右のタブの「Billing」へ進んでください。

下のスクリーンショットは、もう登録が終わったに撮ったものなので、少し実際の画面とは異なりますが、ここの「Billing Information」にクレジットカードの情報を登録できます。

クレジットカードの登録2

下のスクリーンショットが、実際のフォームとなっています。

クレジットカードの登録3

「Save Details」を押すと、クレジットカードの登録が完了です。

Heroku Schedulerのインストール

では、Heroku Schedulerの早速のインストールを行なっていきましょう。

以下のコマンドをHerokuをログインした後に、対象のアプリのファイルがあるディレクトリ で実行してください。

heroku addons:create scheduler:standard

実際にインストールが成功すると、

Creating scheduler:standard on ⬢ [アプリ名]... free
To manage scheduled jobs run:
heroku addons:open scheduler
Created scheduler-colorful-xxxx
Use heroku addons:docs scheduler to view documentation

といったメッセージが表示されます。

それでは、ブラウザからもHeroku Schedulerがインストールできているか確認してみましょう。

対象のアプリのトップページで、「Installed add-ons」に追加されていればOKです。

(Heroku Postgresは、ぼくがデータベースを使うために別件で追加したものなので、気にしないでください。)

アドオンの確認

Heroku Schedulerの設定

これが最後の手順です。

先ほどのトップページにあるHeroku Schedulerをクリックして設定を行いましょう。

add join

Add new job」を押すと、定期的に行わせたい処理を追加できます。

アドオンの設定

$の右側のテキストボックスに、あなたが定期的に実行したいコマンドを入力してください。

今回は、定期的にアクセスして30分間誰からもアクセスされていない状態にさせたくないだけなので、

curl https://[アプリ名].herokuapp.com/

このように、curlコマンドを使ってアクセスするだけのコマンドでOKです。

あとは、「FREQUENCY」を「Every 10 minutes」と設定しましょう。

curlコマンドを入力

「Save」を押せばこれで完了です。

実際に、Heroku Schedulerがアクセスしてくれるかログから確認しましょう。

2018-09-20T08:15:15.161885+00:00 heroku[scheduler.3703]: Starting process with command `curl https://[アプリ名].herokuapp.com/`

このように、Heroku Schedulerがcurlコマンドを実行している様子がみられれば完成です。

Heroku Schedulerの使用上の注意点

Herokuの無料枠を使用する場合は、1つのアカウントあたりすべてのアプリケーションやアドオンを含めて月に1,000時間の使用が可能です。

1つのアプリだけなら、24時間 x 30(日) = 720時間で常時稼働することができます。

しかし、2つのアプリを作成して(無料枠なら最大5つまで)それを常時稼働させたいと思うのと、720時間 x 2(アプリ) = 1,440時間とオーバーしてしまいます。

1,000時間以上になった場合は、アプリはスリープ状態になるので気をつけてください。

この記事を書いた人

学生Webエンジニア PLANインターン生 PHP Laravel Python HTML CSS JS

【名前】 "ゆざ"

【関連】 株式会社PLAN / MIYABI Lab / Tmeet(twitterユーザーマッチングサービス) /

【MIYABI Lab運営】23歳/同期がト◯タやMicr◯softに就職する中、ベンチャーに未経験でWebエンジニアになるのを選んだ脳科学専攻の理系院生◆人見知り日本縦断◆機械学習/Web歴5ヶ月

Twitterやってます

最新の技術ブログはこちら