はらへり日記

腹に弾丸

HerokuでHubotを指定の時間に寝かせる

Heroku料金体系

Herokuの料金体系が変わり、18h/Dayしか動かせなくなったのでオレオレHubotが24時間稼働できなくなった。

Heroku | Beta Pricing

Heroku公式によると無料プランは以下のような仕様らしい。

  • 30分間活動がないとSleepする

  • 1日、6時間はSleep状態にならなければいけない

  • ドメインは設定できるZO!

これにより、Hubotが時間によって動いたり動かなくなったりして使い物にならなくなった。

解決策

解決策としては以下のものを考えてみた。

  • 自分のVPSでHubot運用

  • AWS S3でHubot運用

  • Herokuでどうにか工夫して使いやすくする

VPSで運用するのがいいんだろうけど久しくメンテナンスしてなくてすぐにできなそうだし、AWS S3ちょっと触ってみたけどめちゃんこ重くてしかも課金よくわからんくてコワイし、Herokuで工夫する方法を探すことにした。

工夫の方法としてはHubotを使わない時間にSleepさせるというのを考え、プログラム組むの嫌すぎていろいろ探してたらProcess Schedulerというのを見つけたので使用する。

Process Scheduler

これはHerokuのアドオンの一種で、コマンドラインからでもHerokuのDashboardからでも追加することができる。

今回はGUIで追加したので方法を書いていく。

Dashboardでアドオンを追加

Dashboardにアクセス!

該当するアプリケーションを選択し、Add-ons横のEditボタンをクリック。

そこで『Process Scheduler』を検索し、クリックすると追加される。

HerokuでProcess Schedulerアドオンを追加する

Process Schedulerで設定

追加した後、『Process Scheduler』をクリックすると設定画面に行くことができる。

Process Scheduler設定画面

ここで羅列されてる数字を0にすることでその時間帯にプログラムをスリープすることができる。

設定は一週間一時間ごとに行うことができたので、毎日朝2:00~7:59の間はスリープするように設定した。

こんな感じ

これでHubotが朝の時間に勝手に寝て、それ以外の時間に動くようになる!ヤッタネ!

最後に

ちなみにこのProcess Scheduler。他にも使わない時間帯が存在するアプリケーションに適用することで料金の節約をする等の使い方が本来正しそうです。

画面の下の方にも、「これくらいのお値段節約になってますよー!」というのが出ているので、課金されてる方は使ってみるとよいのではないでしょうか。

参考

Herokuが新料金を発表。無料Dynoの制限が変わる