トップ 最新

ただのにっき

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の方が構成が柔軟にできるけど……)

*1 他にも http://rpaproxy.tdiary.org/ のようなアクセス頻度の高いサービスもそうだ。

*2 ひとつのdynoで複数の日記をホストできないのはtDiaryのアーキテクチャ上の制約なので、この使い方がHerokuの想定する「hobby」の範疇を超えているというだけの話だ。

*3 作ったばかりのDebian Jessie環境で動かしたら、mountがbusyになってkernelがエラー吐いたりなんだか恐ろしいことになったけど、ホストをrebootしたら普通に動くようになった。なんだったのか。

ドーラ、(だいたい)5歳

え、もう5歳? はやいなー。いつまでも小さいままで太る気配もないから、子猫にしか見えない。でも一時的にグスタフと同じ歳になってしまった。

先日も書いたように、最近は散歩に出かけるのが好きになってしまって、帰宅するとグスタフに続いて*1玄関まで走ってくる。まぁ、外に連れ出しても狭い庭をうろうろするだけなんだけど。

Tags: dora

*1 グスタフは本気で玄関まで猛ダッシュしてくるので、出迎えのスピードでヤツに勝てる者はいない。