WebサイトやAPIなどのアプリケーションを公開するためにはインターネットに公開されたサーバーが必要です。

サーバーを自作したり購入して運用しようとすると様々なコストが発生しますが、サーバーを間借りすることができる レンタルサーバー を使用することで、比較的安い金額で運用することができます。

ここでは個人で使用してみた所感をもとに紹介していきたいと思います。

Server(サーバー)

サーバーを借りると言っても、家にサーバーそのものを置くわけではありません。

ネットワーク上にある物理的なサーバーに 作成したファイル を置かせてもらうためのスペースを借りるので、契約から運用まですべて家にあるパソコン一台で可能です。

レンタルサーバーによっては公開に必要な ドメインの取得・設定 や ファイルをサーバーに送信するためのFTP(ファイル転送)アカウントの設定、SSL(https化)の設定などをサービスとして提供してくれている場合があります。

レンタルサーバーの選び方

対応言語で選ぶ

Backend Language(バックエンド言語)

静的ファイルの配信やPHP、MySQLを運用する

HTML、CSS、JavaScript(Node.jsは除く)あるいは画像 などの静的ファイルは、ただ配信すればいいだけなので どのレンタルサーバーを使用してもいいです。配信さえできれば、配信先の端末が処理してくれるからです。

また、多くのレンタルサーバーは PHP と MySQL を利用することができます。

  • 静的ファイル、PHP、MySQLは多くのレンタルサーバーで対応されています。

Java、Ruby、Python、Go、Node.js など

Java や Ruby、Python、PHP、Go、Node.js などで制作されたバックエンドシステムはサーバーでの処理が必要になります。レンタルサーバーによって対応している言語は異なるので借りる前に確認しましょう。

前項に書いているとおり PHP は多くのサーバーで対応しています。

他の、Java や Ruby、Python、Node.js などの言語に対応しているレンタルサーバーは少ないので VPS(仮想専用サーバー)を利用します。

VPS は OS(オペレーティングシステム) からすべて設定できるので自由度が高いです。その分、学習コストも掛かるのですが、ここはバックエンドエンジニアにとって必要な知識になりますので、一度は試してみるといいと思います。

  • VPSは万能ですが、知識も必要です。

他にも、GCPAWSAzureなどのクラウドの PaaS(GAEやElastic Beanstalkなど)は 多くの言語に対応しています。デプロイするだけで環境構築の手間はほとんどありません。しかし、言語のバージョンによっては対応されていなかったりするので注意が必要です。

SaaS(GCEやEC2)は VPS と同様に OS から設定できるのでどの言語にも対応できます。

また、ロードバランサーなどの機能を導入することも容易です。

  • クラウドのPaaSはアプリケーションをデプロイするだけで公開が可能です。

用途で選ぶ

Frontend(フロントエンド)

個人ブログやコーポレートサイト

人気のあるWordPressなどの CMS(コンテンツ管理システム)に対応しているレンタルサーバーは多く、ボタンをクリックしていくだけで簡単に立ち上げることができます。

個人のブログや普通のコーポレートサイトはこれで十分です。

WordPressはPHPで作成されているので、WordPressが利用できるレンタルサーバーではPHPを実行できます。また、MySQLも使用できます。

  • 特別に必要な構成や未対応の言語でなければレンタルサーバーで十分です。

アクセスが多い人気のサイトやバックグラウンドAPI

レンタルサーバーによっては急なアクセスの増加に対応できない場合もあるので注意が必要です。アクセスが多すぎると接続しにくくなります。

その場合はクラウドで運用するか、VPSを利用してスケール可能な構成にします。

また、バックグラウンドで動作するアプリケーションやDB(データベース)を配置してAPI(Application Programming Interface: フロントエンドと通信を行うもの)環境を自由に構築できます。

  • 高負荷が掛かる場合もあらかじめVPSを増やすことで負荷を分散することができます。
  • アプリとDB間で通信を行うAPIを自由に構築できます。

料金で選ぶ

Get money(収益を得る)

既に収益があるサービス

収益があり、資金に余裕があれば、GCPAWSAzureなどのクラウドで運用することもできます。使い方さえ理解してしまえば開発からデプロイ、サーバーのスケールアップが簡単な設定で済むようになります。

ステージング環境の作成やABテストも簡単に実施できます。

  • クラウドは多くの有用なサービスを並行して使用できます。
  • クラウドは従量課金制で使用した分だけ料金が発生します。

初期費用を抑えたいスタートアップ

サービスの初期では、サーバー費用を少なくし、さらに機能の追加やデプロイを素早く回したくなる場合があると思います。

VPS なら 安く運用することができ、利用者数に応じてスケール可能な構成を構築できる強みがあります。

  • VPSは低価格で柔軟で、さらに強力です。

また、Vue や React のように Node.js が必要な場合は VPS か クラウド を使用しますが、Node.js は 起動時間が比較的早いので クラウドのPaaS(GCP の GAE や AWS の Elastic Beanstalk )で常時立ち上げでなくても十分機能します

アクセスの少ない初期の段階では無料枠で運用することもできると思います。

  • クラウドには特定の回数(アクセス数や起動数)以内なら無料枠で運用できるプランがあります。

とりあえず無料で試してみたい

VPS にも「最初の二週間は無料」などがあるので期間を限定して試すことは可能です。

また、 GitHub PagesでもNode.jsは動きます。

Heroku を使用すれば 550時間/月(ほぼ23日) は無料で多くの言語を運用できます。無料プランだと、時間を過ぎるとサーバーは停止します(翌月から再開される)。アクセスが少ない時間はサーバーを停めるなどすれば時間を節約できます。とりあえず試したいときなどにはもってこいです。

  • スモールスタートに有用です。

個人的な使い分け

Best practice(ベストプラクティス)

これまで色々試してみて、サービス開発から公開までの個人的なベストプラクティスを紹介します。

自分のサービスを成長させたい

「サービスを開発して成長させていく」というのは冒険と似ています。いろいろな意味で死にかけることもありますが、夢と希望があります。

多くの経験値が稼げて、知識も増えていきます。

しかし、冒険者は金銭的にも時間的にも余裕はありません。

サービスがヒットするかどうかは読めないし、ヒットすればいいですが、そうでないサービスにも経費は掛かります。

安くスタートする

成功するかどうかわからないサービスに高機能なサーバーは必要ありません。

私は最初にクラウドを選択してレンタルサーバーやVPSの10倍以上のサーバー費用を支払っていたことがあります。最初は「デプロイが簡単で助かるなー」と考えていても、収益化できるまで時間がかかると辛くなります。もし使うなら PaaS ではなく SaaS を使います。

また、そのサービス(あるいはアイディア)は WordPressで実現可能かどうかを調べてみましょう

WordPressで実現できそうなものであれば、レンタルサーバーを借りて試してみるといいと思います。最終的に時間と費用を節約できます。

  • 収益があろうとなかろうと、サーバー費用は毎月発生します。

バックエンドに PHP 以外の言語を使用するのであれば、VPS を借ります。バックエンドもフロントエンドもDBも同じ VPS で管理します。

Dockerを導入すると環境構築やデプロイが楽になります。

ステージング環境も可能ならもう一台サーバーを借りて作成します。他のサービスのAPIを利用する際の確認などに利用します。ローカルで試す場合は、ngrok や serveo を使います。

  • ステージング環境を構築する場合はVPSを2つレンタルします。

レンタルサーバー も VPS もどちらも 1,000円/月 前後で借りることができます。

アクセスが増えてきた

アクセスが増えてくると、一つのサーバーでは負荷に耐えることができない場合があります。

レンタルサーバーもしくはマシンの性能を上げて対応するか、サーバーを増やして分散させます。サーバーを増やす場合は、DB専用サーバーを構築する必要があります。

たぶんこのくらいになると、ある程度の収益は見込める段階だと思います。今後の展開を予想しながら、対応を決めます。

  • レンタルサーバーのプランによってはアクセス数に制限が設定されている場合があります。

成長期到来

アクセスもばんばん増えて、データも集まってきたら「もっと柔軟にスケールさせたい」とか「ABテスト」や「新機能を別言語で」などの要望があれば、クラウドへの移行を検討してみてもいいかもしれません。

  • クラウドで運用すると多くのストレスから開放されます。

企業の案件

企業がサーバーを既に持っている場合は、そのサーバーで運用できるかどうかを確認します。ない、もしくは運用できない場合は、こちらで用意するか、企業に直接契約してもらうか、のどちらかになると思います。

QAもしくはステージングの環境構築が必要なのであれば、クラウドを利用すると楽になりますが、予算との兼ね合いですね。

Webサイト制作

普通のWebサイトの制作であれば、どのレンタルサーバーでも変わりません。

ReactやVueのように、Node.js が必要な場合は VPS か クラウド を借ります。バックエンドでPHP以外の言語を使用する場合も同様です。

  • PHPならレンタルサーバー、それ以外ならVPSです。

システム、アプリケーション開発

既に開発者がいるのであれば、方針を合わせます。いない場合は、まずクラウドを提案します。

クラウドは保守や管理がしやすく属人化しにくいです。運用コストは掛かりますが、開発コストを抑えることができるので、まずはクラウドを提案するといった感じです。

次点で、VPSになります。

  • まずはクラウドを提案、次点でVPSです。

最後に

レンタルサーバーやVPSにもそれぞれプランがあります。

バックエンドサーバーにはある程度の容量が必要ですし、DBサーバーにはある程度のメモリが必要になります。

どのくらい必要になるかはそれぞれ変わってくるので、適切なプランを選択するようにしましょう。