Webアプリのおすすめデプロイ先を紹介します。【Laravel/Rails/Django/Express・・・】

Webアプリデプロイしたいんだけど、どれがいいんだろう?

Webアプリケーションを作ってみて、インターネット上に公開したいと思っても「どこで公開したらいいのだろう?」と悩みますよね。

作成したアプリケーションがRails製だろうとLaravel製だろうとDjango製だろうと、それらのデプロイ先としてのおすすめは個人的に同じです。

この記事では個人で作成したWebアプリケーションをデプロイするにはどれを使ったらいいのか?ということを書いていきます。

記事の内容
  • デプロイ先の種類(VPS・Heroku・クラウド)
  • おすすめのデプロイ先
  • それぞれのデプロイ先の特徴

せっかく使ったアプリケーションならインターネット上に公開して使えるようにしたいですよね。

今まで色々公開してきたので、それらの経験も踏まえて書いていきたいと思います。

どこにデプロイすればいいのか確かめよう。

Webアプリケーションのデプロイ先4種

デプロイ先として悩むのは主に以下なんじゃないかなと思います。

デプロイ先
  • VPS
  • Heroku
  • AWSやGCP、Azureなどのクラウド
  • Firebase

色々あってどれがいいのか悩むんだよなあ・・・
そうだよね、選択肢はあるけど、どれがいいかわからないっていうのはあるね。

    それぞれ特徴があるので、この記事ではこれらのデプロイ先について書いていきます。全部使ったことがあるのでそれなりには参考になるんじゃないかな。

    静的なWebサイトなら無料で公開可能

    HTML/CSS/JavaScriptだけで作られたような、バックエンドが絡まないWebページであれば、以下のようなものを使うことで無料で公開することができます。

    無料で公開が可能
    • Netlify
    • AWS S3でホスティング
    • Vercel

      あくまで静的なWebページだけなら無料で公開できるのか。
      そうだね、上記のようなものを使えば無料で公開できるよ。

      もし静的なWebページで簡単に無料で公開したい!っていうのであれば、上記のようなものを使えばいいです。

      ただデプロイしたいものはおそらくデータベースなどが絡んだものですよね。そうであれば、そう簡単にはいかないので読み進めていって欲しいです。

      おすすめのWebアプリのデプロイ先はVPS

      個人で作ったアプリケーションを公開するのに一番おすすめはVPSです。VPSっていうのがいまいちピンとこないかもしれないけど、「1台自由に使える仮想サーバーを貸してあげるよ」っていうサービス。

      root権限があるので、自分の好きなようにWebサーバーをインストールして設定したりすることができます。例えば、OSはUbuntuにしてNginx入れてLaravel入れてデータベースはMySQL入れて・・・っていうことができる。

      簡単にアプリケーションを公開する時の流れはこんな感じです。

      Webアプリ公開の流れ
      1. OSを選択してサーバー構築
      2. サーバーにSSH接続
      3. 好きなライブラリをインストールして環境構築
      4. Webサーバーやアプリケーションサーバーをインストール・設定してアプリケーション公開

      なるほど、普通に開発する時と同じように色々いじれるのね。
      そうだね、クラウドみたいにそこまで難解なところがないのも良いよ。

      VPSはクラウドみたく色々難しいところが少ないので、個人で開発したものを公開するにはやりやすいと思います。申し込んだらサーバーが用意されるので、後はそのサーバー内でアプリケーションが動く環境を作っていくだけです。

      どういった流れでVPSを使ってWebアプリケーションを公開することができるか?っていうのは以下の記事なんかが参考になるかと。

      クラウドとの違い

      VPSはクラウドと比べると機能性や拡張性は劣ります。

      VPSとクラウド
      • VPSはクラウドほどのリソース増減の柔軟性はない
      • VPSはクラウドほどの機能性はない

      クラウドの場合はインスタンスの種類がたくさんあって、かなり柔軟にそれらを変更することができるっていうのが魅力だけど、VPSの場合はクラウドほど柔軟にスペックの変更はできません

      また機能的にもクラウドは様々な機能があるけど、VPSはそれと比べると機能はかなり少ないです。(AWSにはたくさんの機能があるけど、VPSはその中のEC2だけみたいなイメージ)

      なるほど機能的にはクラウドの圧勝っていう感じね。
      そうだね、機能やリソース面では明らかにクラウドが良いよ。

      VPSの料金

      料金は1000円以下から使えるものが多くて、月額上限料金も決まっているからクラウドのようにクラウド破産の心配もありません。

      個人で使うなら月額上限の料金が決まっているって結構安心ですよね。クラウドより安く使えると思います。

      Webアプリの公開におすすめのVPSは以下の記事で書いているので、もしVPS良いなって思ったらこの記事を見終わった後にでも見てみてください。

        Herokuを利用する

        Herokuは比較的簡単にアプリケーションを公開することができるのが魅力です。自分でサーバー内にアプリケーションが動く環境を1から構築する必要がありません。

        1から構築する必要がない??
        うん、アプリケーションのフォルダをアップロードしてちょっと設定すれば動くよ。

        HerokuはPaaSなので最初からアプリケーションが動く環境が用意されています。クラウド(EC2やGCE)やVPSの場合は自分でWebサーバー入れてMySQL入れて設定して・・・っていうことが必要だけど、Herokuはそれが必要ない。

        例えばHeroku スターターガイド (Laravel)を見てみると、Procfileを作成してコードをデプロイすればそれで動くというかなりの楽さです。

        Herokuの料金

        Herokuは無料プランがなくなってしまったのが残念ですが、最安で月あたり5ドルで利用可能です。

        無料プランのないHerokuか・・・
        無料で使えたらよかったけどしょうがないね。

        もし気になったらEco・Basicから始めてみるといいでしょう。

        Herokuの拡張はアドオンで行う

        HerokuはPaaSのため、自分でサーバーに入ってコマンドを色々いじるっていうことはせず、必要な機能が欲しかったらアドオンを探して追加することで利用します。

        MySQLを使うのにもアドオンが必要だったりして、以前使った時にはそのMySQLのバージョンが古くてPostgres使ったような記憶もある。

        Herokuは比較的簡単に公開できるけど、自分で色々設定できない分こういうアドオンとか使って環境作っていかないといけないのは面倒っていうのがあります。

        勉強のためならHerokuでなくVPS使おう

        Herokuは自分でWebサーバーやMySQLをコマンド使ってインストールして、設定して・・・ということをやりません。公開目的だけならいいですが、勉強目的も含めるならVPSを使うのが良いです。

        VPSなら自分で色々インストールして構築するっていう一連の流れを体験できるので。(クラウドも体験できるけど、ちょっと難しいです。)

        AWSやGCPなどのクラウドを利用する

        クラウドというと、浮かんでくるのは大きく3つでしょうか。

        クラウドの種類
        • AWS・・・Amazonのクラウド
        • GCP・・・Googleのクラウド
        • Azure・・・Microsoftのクラウド

        クラウドといってもかなり多くの機能があって一概には言えないけど、結構な知識が求められます。初めてアプリケーションを公開するっていう場合は、間違いなく絶望するのでおすすめしません。

        逆にクラウドの知識をつけたいんだ!とかVPSでアプリケーション公開したことある!とかならいいでしょう。

        リソース増減を気にしたい人におすすめ

        クラウドの場合はサーバーのインスタンスの種類がかなりたくさんあります。そのため、自分のアプリケーションのスペックや利用量に応じて柔軟に選ぶことができる。

        GCPのマシン構成選択画面

        クラウドはいろんなマシンタイプがあるのね。
        うん、かなり種類あるよ。

        リソースの増減を気にしたいならおすすめしますが、アプリケーションのスペックや利用量なんてことを考える人は個人では一握りぐらいでしょう。

        クラウドは知識が求められることは覚悟しよう

        クラウドは機能が多すぎてやれることの幅もとても広いです。Webアプリケーションを公開したい!という要望1つとっても、どの機能を使って公開しようかな?と迷うはずです。

        AWSで何か公開しようと思っても以下のようなことが浮かんでくる。

        何をどう使って公開しようかな?
        • Webアプリケーション動かすならとりあえずEC2かな?
        • APIだけLambdaにしてフロント部分は他でホスティングしようかな?
        • いやそもそもECSとかでDocker使ってやろうか?
        • 楽したいからElasticBeanstalkでとりあえずやってみるか?

        AWS1つとっても色々あるんだね。
        そうだね、ありすぎて困るよ。

        上で書いたような単語がさっぱりならクラウドはやめておきましょう、死んでしまいます。

        Firebaseを利用する

        Firebaseっていう便利なものもありますよね。FIrebaseはホスティングもできるし、データベースやストレージも用意されていて利用も簡単なのが魅力です。

        ただサーバーを起動させておくようなアプリケーションはデプロイして動かせないので、向いていません。

        使い方としてはフロントメインで作っているけど、データベースもちょっと使いたいっていう人にはいいんじゃないかな。

        Firebaseの料金

        Firebaseは無料で使うことのできるSparkプランがあります。

        無料だとその分使える容量とかも少なかったりするけど、もし使うとなったらまずは無料で試してみるといいです。

        Firebaseのデメリットを理解しておこう

        Firebaseは手っ取り早くアプリケーションを動かすのに便利なんだけど、やっぱり使用用途としては限られてきます。

        Firebase
        • FirebaseはLaravelやRailsのようなサーバーを動かすものではない
        • FirebaseのデータベースはNoSQL

        Firebaseはあくまでフロントをメインで作っている人が、バックエンドの機能もちょっと欲しいっていう時に力を発揮するものです。例えばチャットアプリで使うDBだけ欲しいとかなんかには良いです。

        また、データベースはNoSQLなのでMySQLやPostgresのようにリレーションを組むことができません。

        Firebaseはフロントメインのアプリケーションをデプロイするならあり

        Firebaseはフロントで画面作っているけど、認証機能だけ欲しいとかデータベースの機能だけ欲しいとか、あくまでフロントメインで考えた時に使いやすいサービスです。Firebaseにデプロイも簡単ですしね。

        もしバックエンドが絡んでいるのであれば、CloudFunctionと組み合わせるとかっていう方法も取れますが、あくまでAPI的な利用になります。

        LaravelやRails、Express、Djangoなどのアプリケーションの場合は選択肢から外してしまいましょう。

        まとめ

        いくつかWebアプリケーションをデプロイするサービスを見てみました。

        紹介したもの
        • VPS
        • AWS、GCPなどのクラウド
        • Heroku
        • Firebase

        それぞれやっぱり違いはあったね、あとはどれを選ぶか。
        そうだね、やりたいことで選ぶのがいいけど迷ったらVPSを推すよ。

        VPSはクラウドほど難解ではなく、自分でWebサーバーやデータベースなどをインストールして環境を作ることができるのが良いです。勉強にもなりますしね。

        Webアプリケーションの公開におすすめのVPSは以下で書いているので、気になったら参考にしてみてください。