先週リリースしたエロサイト「babyshark」が、おかげさまで大変な反響がありまして、多くのはてブやツイートをいただきました
そのなかでも、
オレも Rails で何かつくってみよう
という声がちらほら入っていて、大変嬉しく思いました。
今回は、そのような Rails で何かつくってみようという人に向けて、Sqale(スケール)という、イマドキのホスティングサービスを紹介します。
### いまどき Rails で何かつくるなら、VPS より Sqale(スケール)だと思うの -1. Sqale(スケール)とは? -2. サーバの勉強をしたいなら VPS、コーディングに集中したいなら Sqale -3. サーバ環境構築にかかる時間ってどのくらい? -4. Heroku よりも圧倒的に分かりやすい -5. 僕がサーバを借りるときに考えていること --(1) サービス開始時のパフォーマンス --(2) アクセスが急に増えたときに大丈夫か? -6. サービスの内容にもよるけど、1日10万アクセスくらい余裕 -7. それでもヤバくなったらコンテナ追加 -おまけ - それほど話は盛っていません -おわりに
1. Sqale(スケール)とは?
少し前までは、個人が例えば Rails とかのフレームワークを使って Web サービスをつくるとしたら、お値段的にも、どこかの VPS を月額1,000円くらいで借りるのが当たり前だった印象があるのですが、いまは VPS 以外の選択肢もありまして。
その一角が PaaS(パーズ。Platform as a Service)といって、まあ用語はいいのですが、要は OS だけじゃなくて、MySQL とかの DB や、Apache とかの Web サーバを最初から用意してくれていて設定までしてくれていて、
あとはアナタが(Rails とかで書いた)アプリケーションのコードを置くだけですよ
みたいな。Rails の PaaS といえば Heroku(ヘロク) が有名なので、聞いたことがあるかもしれません。
で、前置きが長くなってしまいましたが、Sqale(スケール)というのは、ざっくり言ってしまうと、日本製の Heroku みたいなサービスです。Heroku と同様、Rails とかに対応していて、コードを書いて、git push したら、それで Web サービスを公開できてしまうというもの。
2. サーバの勉強をしたいなら VPS、コーディングに集中したいなら Sqale
ただ、VPS は時代遅れだからさっさと Sqale に乗り換えようと言っているのでは全くなくて。やはり VPS は自由度が高いし、サーバの勉強になります。
僕も VPS を借りて、環境をつくっては、やっぱり気に入らなくなって壊し、またつくっては壊しの繰り返しを経て、ようやくサーバの操作に抵抗が無くなりました。仕事でサーバを使うのであれば、そういった経験は必須とも思えます。
とはいえ、べつに仕事で Web サービスをつくっているわけじゃないし、とか、あるいは、もうあの、サーバで環境でつくっては壊しの繰り返しに辟易しちゃった人には、是非とも Sqale を薦めたいです。
3. サーバ環境構築にかかる時間ってどのくらい?
やはりサーバの環境構築って時間がかかるんですよ。Rails の環境構築だけでかれこれ数十回はやったと思いますが、未だに、きちんとやろうとすると 2時間から4時間くらいかかる。そして大抵の場合は、あとで「こうしておけばよかった」とかが見つかって、その修正にさらに時間がかかる。
この点、Puppet や Chef というものを使って、サーバ構築作業を自動化する流れもありますが(ページ下部の参考サイト参照)、個人が1台か2台のサーバを構築するにはちょっと大袈裟な感じがします(構築を自動化するための準備にかかる時間と割が合わない)
それが片や Sqale だと既に環境はできていて、あとは git push するだけとかなったら、もうね。個人差はあるかもしれないですが、僕がはじめて Sqale でサービスを公開したときには、あっけなさ過ぎて物足りないくらいでした。そして、いままでは何だったんだろう?って思いました。
4. Heroku よりも圧倒的に分かりやすい
git push するだけでいいのは Heroku も同様なのですが、Sqale のほうが圧倒的に分かりやすくて扱いやすいです。日本語だというのも大きいし、あと、料金体系がシンプルだし。
僕が少し前に Heroku を触ったときには、料金を示すページ がよく理解できなくて、「Heroku 料金」とかでググった記憶があります。
5. 僕がサーバを借りるときに考えていること
Sqale が便利で分かりやすいサービスだとして、あと、僕がいつもサーバを借りるときに考えていることをメモしておきます。
(1) サービス開始時のパフォーマンス
最近よく言われていることですが、そもそもつくったサービスがヒットするかどうかなんて分からないので、サービス開始時のパフォーマンスには、それほど気をとられることはないと考えています。
とはいえ、あまりにも重いサービスだと、流行るものも流行らないので、ある程度のレスポンスの速さは確保する必要があって。
後述しますが、僕はサービス公開前に負荷テストをやって、だいたいどれくらいのパフォーマンスが出るか調べるのと、サービス公開後に実際のレスポンス速度を計測したりしています。
(2) アクセスが急に増えたときに大丈夫か?
これは経験則ですが、サービスが流行るときって、アクセスはじわじわではなく急に増えます。そうしたときに、サービスが重くなってアクセスを捌けないとなったら、せっかくのチャンスを逃してしまうので、アクセスが急増したときに対応できるかどうかは重要だと考えています。
6. サービスの内容にもよるけど、1日10万アクセスでも大丈夫
先日リリースした「babyshark」の話をすると、あれは、数少ない、アダルト OK な SaaSes のオスキニサーバー という VPS を使っています。
CPU は 2.66GHz 1コア、メモリ 2.2GB で月額940円というもの。でサービス公開前に Apache の ab コマンドで負荷テストを行ったら、下記のようになりました。
|shell| ab -c 40 -n 1000 http://example.com/ ... Requests per second: 10.15 [#/sec] (mean) ... ||<
ざっくりした結果をいうと、だいたい 1秒間に10アクセス捌ける、と(これは負荷テストなので、実際にはそこまで捌けません)
で、同じもの(ただし、エロくない加工はした)を Sqale に載せて同様に負荷テストした結果が下記。
ab -c 40 -n 1000 http://example.com/ ... Requests per second: 10.05 [#/sec] (mean) ...
何回か計測してみましたが、結果は VPS のものとほとんど変わらなかったです。そして、現在 babyshark が
- 1日10万アクセス
- 1レスポンスあたり 100 〜 200 ms
で動いているので、もちろんサービスの内容にもよりますが、Sqale のデフォルトのプランでも結構なアクセスを捌けると思います。
7. それでもヤバくなったらコンテナ追加
あと、それでも捌けないくらいのアクセスがきたら、Sqale では「コンテナ」というのを追加してパフォーマンスをアップできる仕組みが用意されています。
今年の春にリリースした前作「h300」では、急なアクセスを捌けなくて、そこから VPS 追加して慌てて環境構築で数時間かかったりとかして、苦い経験をしたので、ここきっと重要です。
おまけ - それほど話は盛っていません
あと念のため書いておきますが、僕はペパボのエンジニアで、Sqale はペパボのサービスです。なので多少のバイアスはかかっていることはあると思います。
ですが、僕もエンジニアとしてのプライドがあるし、ブログもテキトーなこと書いたらすぐに信用を失うのを知っているつもりなので、今回はひとりのユーザーとして、できるだけ公平な視点から書いています。
おわりに
以上です。Sqale は本当に素晴らしいサービスで、サービス自体もつくっている人たちも本当に好きなので、ひとりでも多くの人に知ってもらいたいと思い、紹介しました。
いま Rails(や Sinatra 等)で何かをつくっている人や、これからつくろうかと思っている人は、ぜひぜひ触ってみてください。
最後に、ペパボの新卒デザイナー鹿くん(@shikakun)がつくった紹介動画の評判がすごくイイらしいので貼っておきます。ではでは。
(動画は削除されました)