こんにちは。エンジニアの峯岸です。
今回は今年リリースされた新サービス、LaravelCloudについて話していこうと思います。
はじめに
峯岸はインフラがわかりません。複雑だし、クラウドは高いし、サーバー用のPCも持っていません。
そのため、簡易的にデプロイできるサービスを探し続けていました。
AWSのAmplifyやGCPのFirebase等、簡単なものを探しましたが、どこもLaravelは対応しておらず。
というのもこれらのサービスはフロントエンドと繋ぐものが殆どで、laravelなどバックエンドのものには対応していないことが多いです。そんな中、昨年に救世主となるものが発表されました。
それがLaravel Coludでした。githubと連携するだけでデプロイが可能、DBやストレージを安価に使用できる。こんな夢のようなサービスが発表され、心躍らせていました。
そして今年の2月にリリース。今回はそんなLaravel Cloudを使用するための流れを紹介していこうと思います。
Laravel Cloud にデプロイする流れ
まずは軽く概要について。
laravel cloudとは、今年2月末にリリースされたデプロイサービスです。
github等のgitサービスと連携するだけでwebサービスを公開できるものになっています。巷では「Laravel版Vercel」と言われているとか。
デプロイする
まずはデプロイですが、その前にプロジェクト自体についての注意点。
自動でディレクトリ一番上の部分を基準としてデプロイするため、ローカルでdockerを使用している場合にはディレクトリ構成を気に掛ける必要があります。
OK
laravel_project/
├── app
├── bootstrap
├── config
├── database
├── public
├── resources
├── routes
├── storage
├── tests
├── vendor
└── .env
NG
laravel_project/
├── docker/
│ └── Dockerfile
├── docs/
│ ├── app
│ ├── bootstrap
│ ├── config
│ ├── database
│ ├── public
│ ├── resources
│ ├── routes
│ ├── storage
│ ├── tests
│ ├── vendor
│ └── .env
└── docker-compose.yml
ここだけ気をつければ問題なし。あとはファイル名の大文字小文字を間違えないようにしましょう。(1敗)
今度こそデプロイ作業。アカウント登録を終わらせた後から始めます。
ホーム画面から「New application」ボタンを押下し、下の画面に
github等のサービスと連携し、リポジトリを選択。リージョンは唯一のアジア、シンガポールにしておきましょう。今後増えるらしいので期待してます。
再びNew applicationを押下することで、プロジェクトが作成されます。
すると下のような画面になります。デプロイ前の設定画面と考えていただければと思います。
それぞれの項目について紹介します。
まずは左の列から。
Edge networkはいじってないです。ここがActive, もしくはEnabledとなっていれば頑張ってくれているんだと認識すればいいと思います。
その下のDomainsはドメインです。デフォルトのドメインとして「{プロジェクト名}-{ブランチ名}-{ランダム値}.laravel.cloud」が設定されます。検証用ならこれで良さそう。
Custom domainsを設定するには、月20ドルのProductionプランに設定する必要があります。
次に真ん中の列。
こちらはサーバーの設定ができます。
– CPUサイズ
– 自動スケーリング設定 *Productionプランが必要
– 休止状態の有効化・休止までの時間
– タスク自動化
– Laravel Octaneの有効化
– Inetir SSR の有効化
– **Custom Background Processes**
等色々。一通りのことはできるような印象です。
最後に右側の列。
こちらではデータベース、キャッシュ、ストレージの設定ができます。追加、接続の流れは後ほど。
また、上のタブから「Commands」を選択すると、なんとデプロイ中のものに対しコマンドを実行することができます。キャッシュ削除やenvの確認などが使用でき、vimやマイグレーションなどテーブルを操作するコマンドが使用できませんでした。
とはいえ、GUI画面からコマンド実行できるのはお手軽です。
次に、実際にデプロイします。
ブランチを指定(初期はデフォルトブランチが指定されています)し、デプロイボタンを押します。
デプロイの成否は上のメニューからDeploymentsタグに移動すれば見られます。
個人開発なのでコミットメッセージが雑なのはご容赦を。
またこちらのメニューにある通り、ログやメトリクスを閲覧することができます。
DB、ストレージの紹介
使用した時にはキャッシュを使用しないままだったので、今回はデータベース、ストレージについて紹介しようと思います。
まずはデータベース。
Add Databaseを押下し、その後進むとこんなタブが出ます。
データベースクラスターの名前を指定し、下から使用するDBのタイプを指定します。
– Postgres17
– Postgres16
– MySQL 8
そしてプロジェクト作成時と同様にリージョンを指定、構成を設定します。
基本的にDevのテンプレートで問題なさそうです。
接続情報はデプロイ後自動で設定されるので、こちらから設定する必要はなし。便利。
ローカルで確認したい時にはtableplusが推奨されていました。
次にストレージ。
こちらも基本設定を変えずに実行しましたが、問題はなさそうでした。
下にひっそり書いてあるように、基本としては月あたり1GBで0.02ドルかかります。
通信については以下の通り(公式ドキュメントより)。
DBのように基本料金があるわけではないため、完全に使った分だけお金がかかります。
ローカルで確認したい場合は公式でも推奨されているcyberduckなどを使用しましょう。
環境変数の設定としては`FILESYSTEM_DISK=private`の扱いになるため、それを考慮する必要があるかもしれない。場合によっては処理を調整しましょう。
料金について
最後にLaravel Cloudを使用する際の料金について紹介します。
最も安いCPUの場合、起動しっぱなしでも月5ドル程度。自動での休止機能も含めるともっと少なくなるでしょう。
DBが基本月額5ドル、さらに保存1GBあたり0.2ドル。
ストレージが1GBあたり0.02ドル、通信ごとに加算あり。
これらを組み合わせ、個人開発の場合は月10ドル未満で運用できています。
ある程度DB、ストレージを使用する際にもそれほど嵩まないのではないでしょうか。
参考:先月の個人サイトの料金
まとめ
以上でLaravel Cloudの紹介を終わります。
サーバー内にSSH接続できない等、他サーバーサービスと比べ多少自由度は下がってしまいますが、デモ環境や個人開発で活用するには十分だと思いました。
手軽かつ安価に実行できるので、特に個人での開発に向いているでしょう。ぜひ使ってみてはいかがでしょうか。