#大前提、Webアプリに対応してるサーバーを選ばなければならない
###Webサーバ
WebサイトはユーザーがGoogle ChromeやInternet Explorer、FirefoxといったWebブラウザからリクエストを行います。例えば、「企業情報を閲覧したい」というリクエスト、アパレル系ECサイトなら「ブランド名やサイズを絞った商品一覧を閲覧したい」といったリクエストです。
Webサーバはリクエストを受け付けると、その結果をWebブラウザへ返します。会社概要ページなどテキスト情報だけの静的なページであれば、そのままHTML、CSS、画像などのデータを送ります。
一方、受け付けた内容がブランド名やサイズを絞るといった動的な処理の場合、WebサーバはWebアプリケーションサーバへ処理のリクエストを依頼し、返ってきた処理をデータとして同じくWebブラウザへ送ります。
よく利用されるWebサーバとしては、オープンソースの「Apache HTTP Server」や「nginx」、Microsoftが提供する「Microsoft Internet Information Services (IIS)」などが有名です。
###Webアプリケーションサーバ
Webアプリケーションサーバでは、Webサーバから受け付けたリクエストをJavaやPHP、Rubyなどのプログラミング言語を実行して処理します。そして、実行した結果をWebサーバへと返します。
Javaアプリケーションサーバでは、オープンソースの「Apache Tomcat」が有名です。「Apache Tomcat」はJava Servletを動かすサーブレットコンテナの一つですが、簡単なWebサーバとしての機能も有するため、広く活用されています。(引用:https://bityl.co/6In8)
#初心者がFWを使ったアプリを公開する時の選択肢
自分が作ったサイトやアプリを世に公開したいならサーバーを用意しなければいけません。
しかし、エンジニアの方以外にも馴染みのあるであろう、ロリポップやエックスサーバーでは基本FWに未対応です。
なので、RailsやDjangoなどのFWを使ったアプリを公開したい場合は、FWに対応しているサーバーを選ぶ必要があります。
###選択肢①PaaS
例: Herokuなど
Platform as a Serviceの略。
IaaSのようにミドルウェアとOSを自分で容易する、というのは初心者には難しすぎるので、Webアプリさえ開発すればあとはサービス側がなんとかしてくれるPaaSが現実的な選択肢になるかと思います。
IaaS、PaaS、SaaSの違いについてはこちらの記事の図解がかなりわかりやすいので見てみてください。
###選択肢②VPS
Virtual Private Serverの略。
専用サーバーを物理サーバーではなく、仮想化技術(仮想サーバー)で実現したものです。専用サーバーの「コストが高くなる、導入に時間がかかる」などのデメリットを解決したものがVPSです。
サーバースペックを変更したい、となった時には解約=>再契約する必要があるらしいです。
###選択肢③クラウドサービス
例: AWSなど
「専用サーバーを仮想サーバーで実現したもの」と言う観点ではVPSと同じものですが、クラウドサーバーは、クラウドが提供する負荷分散やスケーリンングのサービスを併せて使用することで、障害に強く、必要な時に必要性能を発揮でできるスケーラブルな構成がとることが可能。
#AWS
###なんでもこいな姿勢
基本柔軟に自分が使いたいDBだったりを選択できます。
シンプルなWebアプリなら基本MySQLになるらしいのですが、例えばHerokuではデフォルトがpostgresqlになってるので、選択肢が阻められます(追加で設定すればMySQLを使えますが..)
###サーバースペックの拡張が簡単
サーバーのスペック(CPU数、メモリ容量、ディスク容量)も容易に変更することが可能で、キャンペーンECサイトだったり、バズってめちゃくちゃ人気になった、という場合でもさくっと拡張ができるので、サーバーが落ちてユーザーが離反する、ということもありません。
###従量課金制なので節約できるかクラウド破産するか...
従量課金制のため、使われなくなったらサーバー代のコストを節約できる可能性もあれば、それが災いとなって破産する場合もあります。怖い。無料枠が12ヶ月あるのですが、なんだかんだみんな課金されている印象です。
#Herokuの無料枠
###Heroku(無料枠)を使うメリット
######無料!
######結構有名なサービスなので安心
######無料ホスティングサービスの代名詞的存在で情報が豊富
###Heroku(無料枠)を使うデメリット
######デフォルトがpostgresql
なので、MySQLを使う際は設定する時間・作業コストがかかります。
######リージョンの選択が日本を選択できず、海外のみ(=日本のCDNが選べない=速度低下の可能性大)
=>これが結構本気で懸念かもしれません。
LIFFでゲームアプリを作るまでのゲームアプリはHerokuにデプロイされてるのですが、初期起動の読み込みが本当に30sくらいかかりました..
######独自ドメインは設定できるがSSL化ができない。
(裏技で無料で独自ドメインでSSL化する方法もあるようですが、今回のようなユーザーの個人情報がやりとりされてしまうWebアプリでは危険すぎます。)
=>公開時はとりあえず独自ドメインなしで、SSL化で公開します。
######非商用なので、広告が貼れない。
もし公開の告知をしてバズってユーザーを獲得しても、その際に発生する可能性のある広告収入をみすみす逃すことになります。
ただこれ、小さい店舗だと激混みの時に来てくれたお客さんをみすみす逃しちゃうから、最初から大きい店舗借りようぜって言って大赤字出すのと同じかと。
######画像データが30分しか保持できない
それ用のモデルを作成して、画像のみ別サービスに保存する必要がある。