@nqounetです。
前回に続いてHerokuネタです。
この前Mojolicious::Liteで作ったアプリをHerokuで動かす 記事を書いた時、あとでProcletの話を書こうと思っていたのですが、すでに書かれているのをZenbackが見つけてくれました。
Herokuでは、Dynoという単位で料金を管理しているのですが、Procfileで起動するアプリを増やすと、追加でDynoが必要になります。(何もしていないと、アプリは1つしか動きません)
そこで登場するのがProcletなんですね。
Procletを使うと、見掛け上は単体のアプリ扱いになるので、アプリに対して定期的にアクセスするワーカーも起動させておくことができます。
何故そんなワーカーが必要なのか
Herokuは長期間アクセスがないとサービスがスリープしてしまいます。
ワーカーを1時間毎にすると一晩くらいは平気のようですが、気が付くとスリープしているので、やはり30分毎が良さそうですね。
常用していて依存情報がないモジュールに注意
Herokuを使うと、依存しているのにうっかりcpanfileから抜けてしまうモジュールがあることがよくわかります。
https
でのアクセスが必要な場合はIO::Socket::SSL
が必要ですし、MySQLを使いたい場合はDBD::mysql
が必要なのですが、ついつい忘れがちです。
- IO::Socket::SSL - metacpan.org
- DBD::mysql - MySQL driver for the Perl5 Database Interface (DBI) - metacpan.org
最近は、cpanfileを作成する時にはscan-prereqs-cpanfile
を使って楽をしているのでなおさらかもしれません。
Herokuの無料範囲はProcletで広がる
メモリなどの制限はあるものの、Procletを使うと沢山のアプリを起動させておくことができます。
MySQLやPostgresのようなRDBMSだけでなく、RedisやMemcached、MongoDBなどもある程度まで無料で使えるので、ちょっとした実験アプリを置いておくにはピッタリですね。
Procletがあれば、ローカル環境でもアレコレ起動するのをまとめておくこともできるので便利ですので、試してみるとよいでしょう。