Ruby on Rails(ルビー・オン・レイルズ)で開発したアプリケーションを公開する場合、どんなサーバーを使えばいいの?
こんな悩みをお持ちの方、結構いらっしゃるのではないでしょうか?
Railsで検索しても断片的に情報が載っているだけですし、公開から運用方法まで様々ですので、迷ってしまうのも無理はありません。
この記事ではそんなRails開発者の方向けに、主に利用されているサーバーとその特徴について紹介して行きたいと思います。
サーバータイプ
Railsアプリケーションに対応するサーバー(サービス)は、大きく分類すると「VPS」とクラウドに分かれます。
クラウドは「PaaS」と「IaaS」に細分化することができ、合計3パターンの中から自分にあったものを選択する必要があります。
各パターンにはそれぞれメリットとデメリット、注意しておきたいポイントがありますので、サーバー選びを始める前に確認しておくと良いでしょう。
PaaS
PaaS(パース)とはPlatform as a Serviceの略語で、アプリケーションの実行環境など特定のプラットフォーム機能をユーザーに提供するサービスのことです。
プラットフォームにはアプリケーションの実行環境やファイルをインターネット上にアップロードする機能などが含まれており、開発者は自分でWebサーバーをセットアップすることなく、コマンド1つでRailsアプリケーションを公開することができます。
PaaSのメリット
自分でWebサーバーの構築・保守をする必要がないため、インフラやサーバーに関する知識がない初心者の方でも簡単にアプリケーションを公開することができます。
本格的な商用サービスで利用するには多めに費用がかかる場合もありますが、アプリケーションを開発・公開したい場合に、誰でも簡単に利用できる点は大きなメリットです。
代表的なPaaSには「Heroku」や「Sqale」があります。
PaaSのデメリット
「Heroku」や「Sqale」では必ずサブドメインをつける必要があります。
また、IaaSやVPSに比べ設定できる項目が少ないこともあり、大規模なサービスを運用するには使い勝手が悪く感じることもあります。
RailsにおすすめのPaaSサービス
Heroku
Herokuは海外のサービスながら、手軽にRailsアプリケーションを公開出来る点が魅力的です。
基本無料で利用することができ、日本でも人気が高いため情報も豊富です。そのため、Railsアプリケーションをはじめて公開するといった初心者の方に特におすすめのサービスです。
ただし、海外のサービスということで、設定画面が全て英語な点や応答速度が今ひとつな点ははマイナスポイントになります。
Sqale
SqaleはGMOパペボ社が運営している国内のPaaSサービスです。
運営会社が国内ということもあって、設定メニューが全て日本語であったり、応答速度が高めあったりと全体的にHerokuよりも使い勝手が良いです。
コンテナという単位で簡単にサーバーリソースを増減することができますが、それ以上に細かい管理はできないため、悪く言えば融通がききません。
※2017年5月末日にサービスが終了しました
IaaS
IaaS(イァースやアイアース)は「Infrastructure as a Service」の略語で、クラウド上のプラットフォームをPaaSより広い範囲でチューニングすることが出来るサービスです。
サーバーのハードウェアスペックやOS、ネットワークリソースなどをユーザーが自由に選定して、自分にあった環境で利用することができます。
代表的なIaaSとして「Google Compute Engine」やAWS(アマゾンウェブサービス)の「Amazon Elastic Compute Cloud (Amazon EC2) 」があります。
IaaSのメリット
自分が必要とするハードウェアスペックやネットワークリソースなどにあわせて、いつでも自由にサーバーの構成を変えることができる点が最大の魅力です。
例えば、アクセス数が増える夜間だけサーバーのスペックを増強したり、サービスの規模が大きくなった場合、それに見合ったスペックに増強したりといった事が簡単にできます。
IaaSのデメリット
とにかく自由度が高いため、サーバーやネットワークについて専門的な知識を持っていない人には敷居が高いです。
Amazon EC2など従量課金制のサービスは、インスタンス数、起動時間によって料金が変わるため、よくわからずに使っていると高額の請求が発生する、といったこともありえます。
RailsにおすすめのIaaSサービス
Amazon Elastic Compute Cloud (Amazon EC2)
AWSというキーワードで話題のAmazon Elastic Compute Cloud (Amazon EC2)は、現在一番おすすめのIaaSです。
サービスの規模に応じて都度スペックアップしていったり、時間帯に応じてスペックを増減させたりと、かなり柔軟に運用することができます。
その反面、サーバーのセットアップは自分で行う必要があり、またAWS独特のルールやネットワーク関連の設定など、上手に運用するにはそれなりのスキルが求められます。
商用サイトなどで大規模なサービスを展開するようであれば、十分学習してから利用することで、AWSのメリットを最大限引き出すことが出来るでしょう。
VPS
VPSとは「Virtual Private Server」の略語で、1台の物理的なサーバー上に仮想的なサーバーを何台も立ち上げてユーザーに提供しているサービスのことです。
仮想的とはいえ、1台のサーバーに独立したOSを借りることが出来るため、Webサービスを構築したり、Rails環境を構築したりと比較的自由に使う事ができます。
VPSのメリット
比較的低い料金設定、かつ、定額のサービスが多いため、金銭的な見通しが立てやすいのがメリットです。
また、1台のサーバーを自由に設定できるため、Rails以外のアプリケーションを導入してなんでもありの学習用サーバーにしたり、最小のコストで試験運用したりと応用が効きます。
VPSのデメリット
IaaSと同様に様々な設定をユーザー自身で行う必要があるため、初心者にとっては敷居が高い点がデメリットです。Railsアプリケーションの公開方法についても、自身で仕組みを考えて構築する必要があります。
なお、VPSとIaaSとの差は、負荷分散や障害発生時の対策をユーザーが構築するか否かにあります。
例えば、何らかの要因でサーバーがダウンしたとき、IaaSであればあらかじめ可用性を考慮したオプション構成にしておくことで、継続してサービスを提供することができますが、VPSではユーザーが2つの仮想サーバーを用意して、切り替えの仕組みも自分で構築するなど一手間かける必要があります。
RailsにおすすめのVPSサービス
さくらのVPS
さくらのVPSは月額582円からと選びやすい料金プランに親切なサポート体制で近年人気のサービスです。
VPSということもあり、Rails以外のアプリケーションも自由に利用することができ、用途によってはIaaSよりも使い勝手が良いです。
その反面、サーバーのセットアップをすべて自分で行わなければならない点、急激なアクセス数の増加などに対応しづらい点はIaaSに対して劣ります。
上位のプランを選ぶことでIaaSと遜色なく使えるようにもできますが、それなりにコストもかかるため、基本的には小規模なサービスや学習用途で利用すると良いでしょう。
GMOクラウドVPS
GMOクラウドVPSは、月額780円からと手軽に利用出来る料金設定と、途中でリソースが足りなくなった時に簡単にサーバースペックをアップグレード出来る点が魅力的です。
サポートしているOSも豊富で、一般的なLinux系OSに加えて、Windows Serverも使うことができます。また、テンプレートパッケージとして引渡し前にあらかじめRuby On Rails環境を構築してもらうこともできます。
さくらのVPSとの使い分けとしては、契約途中にサーバーをアップグレードする可能性があるか否か、テンプレートパッケージを使って環境構築の手間を省くか否かを判断基準にすると良いでしょう。