見出し画像

第16話 Herokuのスリープを防止する

こんばんは!Kenです。

今回の記事はHerokuの有料プラン使うぜ!!という猛者の方は読み飛ばしていただいて大丈夫です。

私のように貧乏性で、無料枠を徹底的に使い倒すみたいな決意のある方はお読みください。

今まで、何日かに渡ってコードを書いてきてもらったかと思います。書き始めて、LINEにメッセージ送ったら最初の一発目の反応が遅くなかったでしょうか。

これはHerokuの無料プランの特徴で、30分何の操作もなければスリープ状態にするという機能のためです。

スリープ状態からの覚醒には数秒から1分近くかかってしまうこともあります。

そのため、実運用を想定すると常に覚醒させておき、すぐにレスポンスを返さないといけません。

その「常に覚醒させておく」方法を今回は学びます。

クレジットカード情報を登録する

いきなり何?詐欺なの?って思わないでください。herokuの無料枠はただ会員登録しただけでは、550時間/月しか稼働させることができません。しかし、1ヶ月は31日x24時間 = 744時間あるため、常時覚醒では1ヶ月もちません。

うまいなーと思うのが、クレジットカード情報を登録すると450時間追加され、1,000時間/月まで利用可能になるのです。

有料プランを選ばなければ課金されることもありませんので、クレカ情報を登録しましょう。

ただし、1点だけ注意です。Herokuは5つまでアプリを登録できますが、1つのアプリを常時覚醒状態にするとそこで744/1000時間使ってしまいます。よって他の4つのアプリは合計で、256時間しか稼働させることができないということになってしまいます。

つまり無料枠を使うなら、ほぼ1アカウントー1アプリとなってしまう点留意する必要があります。

スクリーンショット 2020-10-16 22.46.06

右上の忍者みたいな人マークをクリックし、Account Settingsをクリックします。

スクリーンショット 2020-10-16 22.48.35

Billingを選択します。

スクリーンショット 2020-10-16 22.57.34

Add credit cardをクリック

スクリーンショット 2020-10-16 22.59.10

必要事項を記入して登録完了です。

Heroku Schedulerの導入

以前herokuでAddonを導入したのを覚えてますでしょうか。そう、Heroku PostgreSQLです。今回も同じ要領で、Addonを追加していきます。

スクリーンショット 2020-10-16 23.01.28

Resourcesタブの中のFind more addonsをクリックします。

スクリーンショット 2020-10-16 23.03.39

Addonsはたくさんあるので右上の検索バーで、schedulerで検索してみましょう。

スクリーンショット 2020-10-16 23.04.30

Heroku Schedulerを選択します。

スクリーンショット 2020-10-16 23.24.08

右のinstall Heroku Schedulerをクリック

スクリーンショット 2020-10-16 23.25.42

赤枠内にherokuのアプリ名を入力します。私の場合はlinebot-reservationです。

スクリーンショット 2020-10-16 23.28.59

Submit Order Formをクリックします。

スクリーンショット 2020-10-16 23.31.31

このように追加されましたね。Heroku Schedulerをクリックします。

スクリーンショット 2020-10-16 23.32.45

Create jobをクリックします。

スクリーンショット 2020-10-16 23.35.28

Every 10 minutesを選択します。選択肢は1hour, 1dayごとがありますが、30分操作がないとスリープすることを考えれば、10分ごとが良いでしょう。

そして、jobのところは10分ごとに実施する内容になります。以下の内容を書いてください。

curl https://linebot-reservation.herokuapp.com

これは10分ごとにアプリへアクセスするという意味ですので、これにより常時覚醒するというわけです。

このスケジューラー機能を使えば、他にもいろんなことができそうですよね。

では今回は、この辺で。

最後までお読みいただきありがとうございました!

MENTA でLINEBOT開発サポートをしております。お気軽にご相談ください。

この記事が気に入ったらサポートをしてみませんか?