susunshunのお粗末な記録

お粗末に丁寧に生きる

herokuを用いたbotの常時運用について

やあ(´・ω・`)

勉強会で発表したものの、ブログにおこしてないトピックが何個かあるので書いてくよ。

botの常時運用

以前evernoteノートの記事をランダムにチョイスしてつぶやくbotを作りました。(記事は後日書きます)

botを常時稼働させる環境として、以前はherokuが一強でしたが
ある日を境に無料枠では18時間/日という制限がついてしまいました。。。
(残念ですが、むしろ無料というのが虫のいい話ですもんね)

AWSでEC2立てちゃう等々、やりようはありますが、
ここではあくまでも「herokuで」、「無料枠で」、運用する方法を紹介します。

といってもかなりごり押し感満載なので参考までに。。。

herokuの制約

1時間以上アクセスがないとsleepする

じゃあ1時間に1回アクセスすればいいじゃん、ということでheroku schedulerというアドオンを使います。
elements.heroku.com

f:id:susunshun:20160522231948p:plain

これでherokuにアクセスするコマンド(curl)を毎時実行してsleepを防ぐわけです。
f:id:susunshun:20160522231839p:plain

18時間/日しか動かせない

じゃあ18時間以内に抑えればいいじゃんということで、今度はprocess schedulerというアドオンを使います。
elements.heroku.com


f:id:susunshun:20160522232315p:plain

これでアプリを二つデプロイして、各々以下の設定をします。
f:id:susunshun:20160522232623p:plain

アプリを二つデプロイするところがだいぶごり押しですが、めでたく無料枠で常時運用が可能です!
やったね!

余談

evernoteのリマインドbotは日中帯に動いてくれればいいので、普通に18時間の制限内で稼働させてます。
他のbotも夜な夜な稼働し続けたいものは少ないと思うので、どっちかというと情報収集系のバッチを動かしたり、なんてことに使うかもしれませんね。

いま溜まっているトピックとしては

  • 終電一発検索アプリを作った
  • 読書管理アプリを作った
  • monaca開発の是非を問う
  • evernoteからノートをランダムに取得してbotでリマインドする

あたりですね。ちょくちょく記事におこしていきます。

Ionicに興味深々なこの頃。AngularJS2も触ってみなければ。。。