ただのにっき
2015-05-15(金) [長年日記]
■ tDiary.NetをHerokuからどこに移すか問題 (jailing編)
ほんの4ヶ月前にこの日記をHerokuへ移設したが、そのHerokuの料金体系が変わってしまい、freeプランだと1日6時間相当の休止が挟まるようになってしまった。Herokuがちゃんと継続して収益を得られるメニューを用意するのはいいことだし、プルリク単位でdynoを作っては壊すような開発では引き続き無償で使えるのは助かるが、日記やブログのようにクローラーが頻繁に訪問してくるようなサイトは有償のhobbyプランにしないと毎日6時間の「お休み期間」が確実に出てしまう*1。自分の日記だけなら$7/moくらいなんともないけど、tDiary.Netは複数の日記を動かしてるから懐具合的に無理だなぁ*2。
というわけで、また引っ越さなくてはいけない。
CGIベースに戻すのはさすがにないけど、rubyの$SAFEを使ったサンドボックスが使えなくなっている現状では、なんらかのプロセス分離をしなきゃいけなくて、今ならDockerを始めとするコンテナで分けるのが筋だよな……と考えていたタイミングで、@kazuhoがjailingというLinux上で簡単にjailを作れるユーティリティを公開。ちょっと面白そうなので使ってみた。うん、今回の用途だと、Dockerはちょっと仰々しいと感じてたんだよね。まさか2015年にもなってjail使うとは思わなかったけど、いま欲しいのはたしかにコレかもしんない。
マニュアルのとおりにやれば本当に簡単にjailが作れるので*3、あとはそのディレクトリにrbenvでruby 2.2.2を入れ、tDiary.Netのリポジトリをcloneして、bundle後にサーバを動かせばHerokuとほぼ同じ環境をさくっと動かせた。うん、けっこう楽。
これをユーザの数だけ別々のポートで動かして、フロントにリバースプロキシでも立てて振り分ければOKだろう。とはいえ、ストレージは太平洋の向こう側にあるMongoDBだから遅くてたまらんし、基本的にHerokuに頼らないスタイルに集約しないとダメだなー、これは。時間がないからとっとと決めなきゃいけないけど、全部自分で運用するのめんどくさい……。
(なお「jailing編」の次は「Docker編」の予定だったけどもうこれでいいんじゃないかという気分ではある。まぁDockerの方が構成が柔軟にできるけど……)