作ってみたものの飽きそうなWebアプリはherokuで動かしておく

合宿で heroku 使ってたチームがあって、とても便利そうだった。昔、Node.jsで画像アップローダをつくったんだけど(node.jsでtrayという画像アップローダを作った - はこべブログ ♨) 自分のVPSで雑に動かしていて、飽きてしまうとあんまり気にしなくなって、止まっても放置したりしてた。それくらいであれば、herokuで一旦動かすようにしておけば、可用性は担保されるだろうと思い立ち、herokuで動作させることにした。

動いている様子はこちら: http://imagetray.herokuapp.com/

左上のマスに画像をドラッグ・アンド・ドロップすると画像がアップロードされる。誰かがアップロードするとリアルタイムに更新される。コードを更新したり、しばらくだれも使ってなかったりして、herokuのホストがrestartされると、アップロードされた画像は消えてしまう、刹那的な仕様になってる。画像が404になってても気にしないで欲しい。

https://github.com/hakobe/tray を herokuで動かした手順は以下のとおり。

  1. 適当なherokuappを作る
  2. https://github.com/hakobe/tray を手元にcloneしたあと、gitのremoteにherokuのリポジトリを追加する
  3. add-on を追加するためには、無料のものを使う場合でも、クレジットカードの登録がいる。Account Verification | Heroku Dev Center を参考に登録する
  4. heroku addons:add redistogo:nano としてRedisのadd-onを無料プランで追加する
  5. Redis To Go | Heroku Dev Centerを参考にコードに手を加える。変更したコードはこういう感じ。環境変数に接続情報が入ってるのおもしろい。
  6. WebSocketを使うので、実験的に提供されているWebSocketを、heroku labs:enable websocketsとかやって有効にしておく。使えない気がしてたので良かった
  7. git push heroku masterとかして反映する

Redisには5MBまでしか記録できないし、アップロードされた画像もホストが再起動されると消えるけど、とりあえずいつでもWebアプリケーションが動いているという状態にはできた。

状態をあまり持たないお試し的なWebアプリは、対応もそんなに難しくないしherokuにのせていったら良さそう。自分が飽きてしまって、管理を放棄すると、見に来た人が503とかいわれて悲しいが、とりあえずherokuにいれておけば利用できなくなるということはなさそう。

ただ、あんまりアプリケーションの数を増やすと無料の750時間を使いきってしまってコストがかかる。サンプルのアプリケーションにそんなにアクセス来るとも思えないけど、ほうっておくと課金される状態にはなるので気をつけたい。 Usage & Billing | Heroku Dev Center によるとアプリケーションごとに750時間だった。安心。

アプリケーションがherokuに準拠したので、herokuにアップロードすればだれでも使える状態になったのもうれしい。herokuの仕様に準拠していれば、herokuを知っている人ならだれでも起動できるはず。

herokuのadd-onsのページを見ると全然知らないミドルウェアやサービスに気づけたのもよかった。IronCacheとか知らなかった。