Heroku
bot

herokuで運用していたBOTを24時間対応する

More than 3 years have passed since last update.

ついにherokuからFreeプランに変更するか18時間運用にするか、$7払うかというメールが来ました。

お遊びで使っているBOTなこともあり、Process Schedulerを使うことで簡単に2つのBOTを切り替えられそうだったので、2つのアプリで1つのBOTを運用することにしました。


githubのレポジトリ作成

github connectを使って自動デプロイをするので、まずBOT用のgithubレポジトリを作成し、git pushしておいてください。


herokuに2つのアプリを作成

次にheroku上に新しく2つのBOTを作成します。

なおbot1やbot2の場所はアプリ名です。

ここでは、説明のためbo1、bot2と表記します。

$ heroku create bot1

$ heroku create bot2

herokuのフリープランではwebとworkerの2つのdynoが使えます。

どちらでもかまわないと思いますが、今回はworkerを使うので、自分の環境に合わせてProcfileを変更してください。

worker: npm start

その後herokuのページを開き、環境変数の設定を行います。


github connectを使って自動デプロイ

変更するごとに、herokuに2回pushするのは面倒だったのでgit push herooku masterによるデプロイはせずにgithubからの自動デプロイで対処することにします。

herokuのDeployタブを開きApp connected to GitHubから先ほど作成したレポジトリを指定しましょう。これで、githubにpushするごとにherokuに自動にデプロイされます。簡単ですね。

さて、すでにgithubの方にはpushしてしまったので、画面の一番下にManual deployの項目があるので、はじめはここからデプロイしてみます。

Deploy Branchをクリックしてデプロイを実行します。

この作業をもう一つのアプリでも同様に行います。


Process Schedulerを使って指定の時間眠らせる

このままだと同じBOTが並行して動いているだけなので、Process Schedulerを利用して指定の時間眠らせます。

ResourcesタブのAdd-onsフォームからProcess Schedulerを探して、process Schedulerを設定します。

今回はworkerで動かしているのでwebの方は全て0のままで、workerタブの方を設定してみます。

process Schedulerの設定は、2つのアプリの時間が被らないように注意しましょう。

スクリーンショット 2015-08-30 20.21.34.png

この作業ももう一つのアプリでも同様に行います。


注意

混乱するので、タイムゾーンの設定をアプリとProcess Schedulerで合わせた方がいいでしょう。


完成

以上で2つのアプリが交代で1つのbotとして稼働するようになったと思います。

お疲れ様でした。


参考にした記事