○はじめに
今回、個人アプリ(Laravelで作成)を低コストで公開したいと考え、色々調べてみた公開方法をまとめてみることにしました。
難易度が「簡単なもの〜初学者には学習コストが少し高いもの」まで集めています。
全項目に、「難易度とコストの参考表」を記載していますが、かなり主観で、なおかつ、一眼でわかる様に大体で書いたものです。
詳細についてはご自身でググって頂くようお願いします🙇♂️
○私が採用した運用方法
今回、私は③で紹介する「VPSサーバー」を採用しました。(ConoHa VPSを使用)
理由としては、
コストを出来るだけ抑えて、なおかつ、運用して行くにあたってのそれなりのパフォーマンスを追求したいと考えてたからです。
しかし、仮装サーバーといえど、物理サーバーは1台のため、
万が一、アクセス数が急激に増えた時が心配です。
その際は、AWSへ移行する方法もあるため、臨機応変に対応したいと思います。
#○公開の種類
公開方式 | サーバーの種類 | 説明 | 例 |
---|---|---|---|
オンプレミス型 | 物理サーバー | カスタマイズ性に優れる、高価 | 会社にある物理サーバー |
PaaS | 共有サーバー | 一つのサーバーをみんなで共有、カスタマイズしにくい、安価 | Heroku、Netlify |
VPSサービス | 仮装サーバー | 一つのサーバー上に、1つの仮装的なサーバーを立てれる、カスタマイズ性がある、安価→固定価格 | サクラVPS、ConoHa VPS |
クラウド | 仮装サーバー | 一つのサーバー上に、複数の仮装的なサーバーを立てれる、カスタマイズ性がVPSより高い、従量課金性 | AWS、GCP、Azure |
○公開方法まとめ
①Heroku
難易度 | コスト |
---|---|
簡単 | 無料(毎月550時間まで→※スケールアップ時は、費用がかかる) |
初めて、Webアプリを公開する人にはおすすめです。
###メリット
-
Paas(Platform as a Service):アプリケーションを稼動するためのインフラ部分が全てカバーできる。
→アプリさえ作成すれば、あとは少しの作業でアプリを公開できる。 -
無料で使用できる
ほとんどアクセスのない、個人用のポートフォリオとかだと全然無料で使えます。(1サービスであれば) -
簡単に公開できる
Herokuの会員登録と、コマンドラインで簡単な操作を行うだけで公開できます。
###デメリット
-
読み込みが遅い
30分ごとに使っていなければwebサーバーがスリープ状態になるため。
(ただし、使いようによっては改善も出来るっぽい) -
カスタマイズ性に欠ける
あくまでもPaasであるため、AWSなどのクラウドサービスと比べると機能や拡張性の面でも劣ります。 -
デフォルトのDBはPostgreSQL。(MySQLを使う場合は、アドオンを追加しなければいけません)
##②Netlify
難易度 | コスト |
---|---|
簡単 | 無料(個人サービスのホスティングレベルであれば)https://www.netlify.com/pricing/ |
-
静的サイトをホスティングすることが出来るWebサービスです。
正式にはアクセスするたびにページを生成するような動的なWordPressやWebアプリケーションをホスティングする際には適していません。
あらかじめ、ページが用意されているようなLPや、ポートフォリオサイトなどに使用出来ます。 -
SSL化も可能。小さいサービスの運用程度なら、耐えうる。
##③VPSサービスを使用する(さくらVPSやConoHa VPSなど)
難易度 | コスト |
---|---|
やや難 | (だいたい)月約600円〜4桁 |
####VPSサービスとは?
→仮装専用サーバーのことです。
1代のサーバーを複数人で共有する点では、PaaSと同じですが。
1人1台カスタマイズして作った仮装的な専用サーバーを使える事がメリットです.
-
レンタルサーバーの代わりにVPSサービスや、クラウドサービスを利用する
Webアプリケーションを公開する場合、レンタルサーバーだと難しい場合があります。
1つのサーバーを他の人と共同で使用するため、技術によってはプログラムが動かないからです。 -
Webサイト運用など過度なパフォーマンスを必要としないものに向いている
-
大幅なカスタマイズを行う場合は、クラウドやオンプレがいいかも
###メリット
- 1人1台カスタマイズして作った仮装的な専用サーバーを使える
- 安いコストで、カスタマイズが行える
###デメリット
- 物理サーバーや、クラウドと比べると、パフォーマンスが劣る
###参考
・Webサーバーを構築
・サーバー上で開発環境を構築する
→これから開発を開始される方向け。既に開発済みの方は、「サーバー上に本番環境を構築する」を参照ください
・サーバー上に本番環境を構築する
→セキュリティ対策までかなり詳しく記載されています。内容は何をしているか調べながらじゃないとよくわかりませんが、いい勉強になります。
##④PHP Lambda、DynamoDB、Layer、Brefを組み合わせて、サーバーレスでLaravelを動かす
難易度 | コスト |
---|---|
かなり難(そう) | ??? |
###Lambdaとは?
AWSのサービスとの1つで、あらかじめ用意しておいた関数を実行するサーバーレスのサービス。
###サーバーレスについて
###Lambdaの料金についてです。
関数に対するリクエストの数とコードの実行時間に基づいて課金されます。
AWS Lambda の無料利用枠には、
1 か月ごとに 100 万件の無料リクエスト、および 40 万 GB-秒のコンピューティング時間
が、それぞれ含まれます。
https://aws.amazon.com/jp/lambda/pricing/
Lambda関数が実行されていない間は無料ということ
###メリット
- リクエスト数の少ないサービスだと、コストパフォーマンスが良さそうです。
例)ビッグデータ解析など、1日に少数の決まった動作のみのサービス
- メンテナンスはAWSが全て行ってくれる
###デメリット
- リクエスト数が多いサービスは高額になる可能性が
###参考