はじめに
以前 Heroku から Sqale に移行した FeedlyGraph を DigitalOcean に移行したので、その経緯や作業を書く。
移行の経緯
Sqale のデプロイが今ひとつ理解しがたく、うまくいかなくなったことがきっかけ。
Sqale のウリはサーバー管理が不要であることで、Rails アプリは git デプロイできるようになっている。
が、ruby のバージョンを変更しようと検証してから、git デプロイがうまく動かなくなった。
その後は毎回手動で bundle install
やアプリケーションの起動をしなければならなかった。
しかも bundle install
すると、HDD 容量 5GB を超えるために古いバージョンの Gem を手動で消したり・・・といった具合。
これでは PaaS でもなんでもない。
アプリケーションとしての Rails 初心者である僕が、なおさらよくわかっていないインフラ周りをいじるのはしんどい。
加えて Sqale の仕組みを理解する余裕は到底なかった。
Sqale が悪いというわけではない。
正しい使い方をすればうまく動くのだと思う。
ただ自分にはわからなかった。
PaaS 全般に言えることだが、自分で管理もできる人がそのコストを委譲するために利用する、というのが正解なんだと思う。
あとはポジティブな理由がこんなところ
- DigitalOcean を使ってみたかった
- ギョームで使い始めた ansible を使いたかった
移行作業
ざっくり調べて、nginx + unicorn でホスティングするというのがスタンダードなやり方だというのがわかった。
それに沿った ansible の playbook の公開情報を探して、少しずつ試しながら構成を作っていった。
完成したのが以下。
GitHub で公開しているファイルでは、FeedlyGraph 独自の処理は除外してある。たとえば cron。
大体は hosts をいじれば事足りるはず。
参考資料
playbook 作成にあたって主にお世話になったサイトをまとめておく。
ansible の基本構成
iptables 周辺
トラブルシューティング
検証
ついでに ab でパフォーマンス検証してみた。
以下、 ab -n 2000 -c 100 http://yourhost.com
で行った結果。
Sqale
Server Software: ngx_openresty/1.2.6.6 Requests per second: 46.28 [#/sec] (mean) Time per request: 2160.926 [ms] (mean) Time per request: 21.609 [ms] (mean, across all concurrent requests) Transfer rate: 295.76 [Kbytes/sec] received
DigitalOcean(nginx)
Server Software: nginx/1.8.0 Requests per second: 120.99 [#/sec] (mean) Time per request: 826.492 [ms] (mean) Time per request: 8.265 [ms] (mean, across all concurrent requests) Transfer rate: 766.74 [Kbytes/sec] received
マシンの性能自体は DigitalOcean に軍配が上がった。
DigitalOcean(WEBrick)
ついでに rails server
で起動した場合も試してみた。
Server Software: WEBrick/1.3.1 Requests per second: 87.30 [#/sec] (mean) Time per request: 1145.541 [ms] (mean) Time per request: 11.455 [ms] (mean, across all concurrent requests) Transfer rate: 554.13 [Kbytes/sec] received
やはり nginx + unicorn のほうがリクエストをさばく能力は高い模様。
まとめ
Sqale は AWS の Tokyo リージョンを利用していると思われるため、レイテンシが有利。
それでも DigitalOcean はシンガポールを選べばそこまで遅いと感じることはなく、日本からの利用にも十分耐えられることがわかった。
また、ansible の playbook を作ったことで、ふと思い返していじるときでも、サーバーの見通しがつきやすくなった。
インフラをコード化するメリットはこういう面でもあると思う。
あとはコスト面。
サーバーの維持費が ¥940/month から $5/month になった。
やはり個人でサーバー持つには Windows はキツイ。Linux 一択だ。
最後にお詫び。
移行作業中に間違って Sqale にデプロイしてしまい、しばらくデータ取得が正しく行われていなかった模様。
利用者の方にはお詫び申し上げます。
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る