Laravelプロジェクトを完全無料でデプロイしたい時に、Herokuを使う選択肢があります。
わたしもHerokuを試してみましたが、結論としては、
「テストには良いけど本気使いには向かない。」
でした。経験を通じて分かったメリット・デメリットを3つずつお伝えします。
Heroku使ってみたいけど、デメリットってないのかな?
無料だと落とし穴がありそう
という方の参考になれば嬉しいです。
どこまで無料で利用可能か、といった点も含めて、お伝えしていきますね。
LaravelデプロイにHerokuを使う3つのメリット
まずはHerokuの良かった点からお伝えします。
Herokuのメリット① 完全無料でLaravelデプロイが可能
Herokuを使えば、完全無料でデプロイは可能です。
無料で使えるのは、やはり嬉しいポイントですよね。
わたしはGitHubをリモートリポジトリにしてHerokuにデプロイを試しましたが、なかなか便利です。
GitHubでは、プロジェクトを非公開(Private)にしておくと良いですよ。
Heroukの価格表のスクショは、下記のとおり。料金体験については、詳細は公式ページもご覧ください。
【Heroku価格表】
参考:https://jp.heroku.com/pricing
メリット② 環境をそろえやすい
Laravelデプロイには、node.jsとphpが必要になります。
Herokuでは、こういったデプロイに必要なオープンスクリプトを手軽に揃えられます。
コマンド入力も可能ですし、各プロジェクトのSettings/Buildpacksから選択できます。
【Heroku/Buildpack選択画面】
ボタン操作で手軽に入れられるのは良いですね。
メリット③ httpsはデフォルトでついてくる
Herokuでは、デフォルトのURLは、httpsで始まります。SSL化対応済みです。
ただ常時SSL化をするには、Laravelプロジェクト側にコードを追加する必要があります。
なお独自ドメインのSSL化も可能ですが、設定が必要ですし、有料となります。CloudFlareを使うと無料との情報もあるので、気になったら調べてみてください。
わたしはテストサイトだったので、デフォルトのURLを使いました。
LaravelデプロイにHerokuを使う3つのデメリット
ここまでHerokuを使うメリットを3点あげました。
次に、個人的に「うーん、不便!」と感じた点についてお伝えします。
デメリット① データベースはPostgre SQL
HerokuのデータベースはPostgres SQLとなります。
MySQLを使うことも可能ですが、別途【ClearDB MySQL】というAdd-Onを追加して、設定する必要があります。
【Heroku ClearDB MySQL設定画面】
ただ無料で使えるのは5MBまで。
通常は5MBで大丈夫かと思いますが、5MB以上使いたい場合は、有料版が必要です。またAdd-Onを使うには、クレジットカードの登録が必要となります。
わたしは、このAdd-Onを設定してMySQLを使ってみました。特に問題なく利用できています。
デメリット② アップロードした画像が保存できない
Herokuでは、Webアプリのフォーム等を通じてアップロードした画像データは、定期的に削除されてしまいます。
実際に試してみましたが、フォームを通じてstorageに保存した画像データは、次にログインしたときには消えてしまっていました。
ただデータベースには情報が残っています。なので、Webアプリ上で画像が表示されるはずの箇所は、リンク切れ状態となります。
【Herokuでリンク切れ状態のWebアプリ】
なお、Webアプリに最初から設定してある画像(publicディレクトリに設置)は、ちゃんと残っていました。
このアップロードファイル削除問題を回避する手段として、AWS S3のようなサービスと連携させる手があるようです。ただ、わたしのほうでは今回試しておりません。
画像保存ができないのは、不便ですよね…
ファイルをアップロードしないWebアプリなら良さそうですが。
デメリット③ 気づくと有料になったりする
Herokuはデフォルトでは無料ながら、一定の稼働時間を超えると自動課金されます。
無料で使える範囲は、月550~1000時間の稼働まで。
クレジットカード情報を入力してアカウントを認証すると、1000稼働時間OK。クレジットカード情報なしだと、550稼働時間です。
・クレジットカード情報なし:550稼働時間無料
普通に計算すると、1ヵ月フルに使うと、24時間×31日=744時間となります。
ですが、Herokuは30分間アイドル状態が続くと自動でスリープします。つまり、それほど使われないWebアプリなら、稼働時間はずっと少なくなるはず。
ひとつのHerokuアカウントで複数プロジェクトを動かすこともできそうです。
ただし、クレジットカードを登録してある場合には、規定の時間を超えると、利用料は自動で課金されます。
現在の利用状況は、アカウント/Billingから確認できます。
良く使う場合、利用料は、チェックしておくことをおすすめします。
稼働時間を超えると自動で課金されるという部分で、もうひとつ、お伝えしておきたい点があります。
Herokuには、Heroku Schedulerという、指定した時間間隔で指定したコマンドを定期実行できるAdd-Onがあります。
Cronのような機能で、わりと使われることが多い機能かな、と思います。
わたしも使おうと思って、調べてみました。
すると、Heroku Schedulerは無料ながら、利用時間は稼働時間としてカウントされます。つまり、頻繁に実行する動作を設定すると、
いつのまにか、こんな金額になってる!
なんてことにも。頻繁に自動操作を行うWebアプリでHeroku Schedulerを使う場合は、ご注意を。
さいごに
Herokuのメリット・デメリット紹介しました。
テスト使いにはよいですし、ありがたいサービスです。
ただ本気で使うには、やっぱり、完全無料では難しいというのが正直な感想です。
Webアプリをちゃんと本番環境に反映させる(デプロイする)なら、デプロイに慣れていない場合は、環境がそろっているレンタルサーバーがおすすめ。
わたしはエックスサーバーを愛用していますが、速度面・機能面・使いやすさの面から、いちおしです。
エックスサーバーは、2022年1月時点で、日本で一番使われているレンタルサーバーでもあります。
エックスサーバーについて、詳しくはこちら。
↓↓↓
そうはいっても、デプロイの手順が分からない。
デプロイする中で、セキュリティ上で必要な対策とか、いちから知りたい。
という場合には、わたしのほうで、Laravelをエックスサーバーにはじめてデプロイする人のための講座も開催しています。
動画とテキストで、デプロイの手順をひとつずつ解説していきます。詳しくは、こちらの案内ページを見てみてくださいね。
最初の10章まで、無料でご視聴いただけます。