こんにちは!インストラクターの井上です。
「Ruby on Railsのアプリを公開したい!」
と思っても、どのサーバーを使うのが適切なのかよくわからないですよね。
実際に僕が参加するプログラミング学習コミュニティでもサーバー選びに悩まれているのをよく目にします。
サーバーによってはリリースをする方法も違えば特徴も様々ですので迷うのも仕方ありませんよね。
そこで今回、Rails学習中の方向けに、よく使われるサーバーの種類とその特徴、目的別のサーバーの選び方などを見ていきます。
実際にRailsのアプリを公開する際に御利用下さい。
【こんな方に向けて書きました】
・自分の技術をアウトプットする場を探している方
・アプリの公開に最適な場を探している方
前提知識:PaaSとIaaSとVPS
まずはRailsアプリを公開するサーバーの種類として、主にPaaSを使う方法、VPSを使う方法、IaaSを使う方法という3パターンが存在することを知っておきましょう。
それぞれにメリットやデメリット、気をつけるポイントがあるので、順番に確認していきましょう。
PaaSとは?
PaaS(Platform as a Service)とは、アプリ公開用のプラットフォームをレンタルして使用できるサービスです。
つまり、自分でWEBサーバーを立てること無く、レンタルしたらすぐにアプリが公開できる仕組みを提供しています。
最近はGitで管理していれば、Gitの機能を用いて、自分のアプリを一瞬で展開する事が可能です。
PaaSのメリット
初心者でもとても簡単にアプリを公開できるようになります。
インフラの知識が殆ど無くても公開が可能なため、WEBサーバー構築などの学習コストや保守に費やす労力が少ないです。
金銭的に本格稼働させると少し料金がかかる場合もありますが、それ以上に簡単に使えることは大きいでしょう。
Railsで使える主なPaaSではHerokuやSqaleがあります。
Herokuにおいてはアクセス時間などに制限はあるものの無料でも使えるというのは大きいです。
PaaSのデメリット
特にHerokuやSqaleでは固定IPではない為、特別な設定をしないとサブドメインが必須になります。
つまり、通常の設定では、
http://www.example.com
というサブドメイン有りのURLは設定できますが、
というサブドメインなしでURLを紐付けることが出来ません。
ただ、これらもCloudFlareなどのサービスを利用することで解決できます。
その他上級者にとっては細かな設定がしづらいため、使い勝手が悪く感じることも多いでしょう。
VPSとは
VPS(Virtual Private Server)とは、サーバーを切り出して一部を自由に使えるように簡単にレンタルできる仕組みのことです。
サーバーの運営業者がこの区画は好きに使っていいよと貸し出してくれるので、比較的自由度の高い設定が可能になります。
ただ、そのぶんWEBサーバーとして機能するようにApacheなどのアプリを自力でインストールして設定する必要が有るため、難易度が高いことが多いです。
有名なVPSとしてはさくらのVPSなどがあります。
VPSのメリット
定額でレンタルできることが多いので金銭的に見通しも立てやすく手軽に利用をはじめられます。
特にある程度の稼働が求められるサービスでは、PaaSやIaaSを用いるよりもコストパフォーマンスが最も高くなりやすいでしょう。
VPSのデメリット
初心者には構築難易度が高いので手が出しづらいでしょう。
また、Railsのリリースの方法でもCapistranoなどのデプロイツールを用いる必要があり、こちらにも学習コストを掛ける必要があります。
IaaSやPaaSに比べて細かな処理能力の調整(パーツのグレードアップ)などがしづらいというのもデメリットになるかもしれません。
IaaSとは
IaaS(Infrastructure as a Service)とは、WEBのインフラを独自に構築できる環境をレンタルできるサービスです。
どこまでがPaaSでどこまでがIaaSなのかという定義は曖昧ですが、主にAWSなどのネットワーク周りまで自分で設定できるサービスをIaaSと呼ぶことが多いようです。
サーバを複数立てて自分で負荷分散をしたり、サーバが落ちた時の監視体制を自分で作ったりと、ものすごく自由度の高い設計が可能になります。
特にAWSはスタートアップ企業や大企業での導入も増えており、近年注目を集めています。
IaaSのメリット
特にAWSでは非常に柔軟な構成を決めることが出来て、小規模なブログから、大規模なビッグデータを扱うシステムまで作成することが出来ます。
また、利用する構成を途中で簡単に変更できるので、サービスの成長や、一時的なキャンペーンへの負荷対応などにも予め備えることが可能です。
IaaSのデメリット
初心者にはとてつもなく構築難易度が高いのでしっかり学習を行わないと手が出せません。
VPS同様WEBサーバへのリリースもCapistranoなどのデプロイツールの設定も必要で少し難易度が上がります。
また、AWSは料金が従量課金制なので、請求金額が厳格に予測できないという点もデメリットになるでしょう。
特に初心者は下手な設定を行ってしまうと、多額の請求をされるという可能性もあるので注意が必要です。
Railsアプリ公開にオススメのレンタルサーバー
ここまででサーバーの種類などがおおよそ掴んで頂けたかと思いますので、具体的なレンタルサーバーの選び方を見ていきましょう。
Heroku(PaaS)を選ぶ基準
Herokuは兎に角手軽な点が評価されています。
RailsTutorialなどの教材でも扱っているサーバーでRailsエンジニアは一度は触れたことがあるサーバーになるでしょう。
基本無料で使えるので、他のサービスと連携するAPIなどの学習に使うのにもオススメです。
インフラがよくわからない人や、はじめてのRailsアプリはHerokuを選ぶのが安定でしょう。
ただサーバが置いてあるのがアメリカとかだけなので、日本からのアクセスが遅い点で残念です。
さくらのVPS(VPS)を選ぶ基準
HerokuやSqaleでは、セキュリティを担保するためのSSL(HTTPSの通信)を導入するためにも、証明書の購入のほか、月額でプラス2000〜3000円ほどお金がかかってしまいます。
それを加味しても小規模なアプリを継続的に動かすときにはコストパフォーマンスが良くなりやすいです。
ただ、VPSの説明のところでも書いたとおりRailsをデプロイするまでの設定でもある程度学習が必要になります。
ある程度インフラの知識があり、自分でWEBサーバを構築できて、かつすぐにユーザー数が増える見込みが無い場合には一番使い勝手が良いでしょう。
また、ディスク容量などは増やせても、コストパフォーマンスの高い共用サーバでは大量のアクセスを捌くなど柔軟な拡張は苦手な点が残念です。
VPSの中でも専用サーバーを借りる方法でより多いアクセスに対応できたりはしますが、その場合はそれなりにお金を払う必要がありますのでIaaSの方が良い場合も多いでしょう。
AmazonWebServices EC2(IaaS)を選ぶ基準
URL:https://aws.amazon.com/jp/ec2/
AWSのEC2を利用する理由は、ほとんどアクセスが無いアプリをものすごく安く使いたいか、今後のサービス拡大に堪えられるように備えるかというどちらかになるかと思います。
AWSのWEBサーバである「EC2」は、WEBサーバ単体として準備することはVPSとあまり変わりがありません。
(VPSでRailsアプリを公開できていれば、EC2の環境構築などはそこまで難しくはありません。)
ただAWS独自のルールや、ネットワーク周りの設定などは学習して自分で行う必要があります。
料金体系もしっかり設定すればとても柔軟で使いやすいですが、覚えることが多いのでなかなか使いこなしづらいという点で残念ではあります。
上級者向けでは有りますが、比較的大規模なサービスを公開するのであれば、その学習コストは払ってしかるべきではあります。
まとめ
Railsアプリを公開するサーバーの選び方について見てきましたがいかがでしたでしょうか。
実際にRailsの学習を進めて、是非学習の成果としてオリジナルのアプリを公開してみましょう!
とりあえず迷った方はHerokuで一旦公開してみるのが良いでしょう。
ゆくゆく大規模に展開したい場合は、AWSを検討してみてください。
関連記事