LoginSignup
79
72

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-30

ついに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として稼働するようになったと思います。
お疲れ様でした。

参考にした記事

79
72
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
79
72