サーバレスでLaravelアプリケーションを動かしたい

2024/04/02
石原

こんにちは。株式会社リンクネット、ソリューション事業部の石原です。

当社ではPHPのフレームワークであるLaravelを使用したWEBサービスの開発を行っています。

作成したWEBサービスを公開する場合、AWSのEC2などの仮想マシン上に構築することが多いのですが、技術検証のために作成したWEBサービスなどをもう少しお気軽に公開できないものかと考えました。

  • サーバの存在はなるべく意識したくない
  • WEBアプリケーションが利用されていない時間の費用は抑えたい
  • PHPのバージョンや拡張機能は自由に選択したい

上記を踏まえて、これまで業務ではあまり使用していないGoogle CloudのCloud Runに挑戦しようと思います。

Cloud Runとは

Cloud Run は、Google のスケーラブルなインフラストラクチャ上でコンテナを直接実行できるマネージド コンピューティング プラットフォームです。 コンテナ イメージをビルドできるものであれば、任意のプログラミング言語で記述されたコードを Cloud Run にデプロイできます。

サーバの存在はなるべく意識したくない

アプリケーション本体やサーバーソフトウェアを格納したコンテナイメージを用意する必要はありますが、コンテナを実行するためのOSやプラットフォームはGoogleが管理します。

WEBアプリケーションが利用されていない時間の費用は抑えたい

「CPUの割り当てと料金」で、「リクエストの処理中にのみCPUを割り当てる」を選択し、最小インスタンス数に0を指定することでリクエストを処理していない時間のコストを0にすることが出来ます。

起動中のインスタンス数が0の時にリクエストが発生すると、数秒の待ち時間が発生しますが、今回動作させるサービスは検証目的のものなので問題ありません。

PHPのバージョンや拡張機能は自由に選択したい

コンテナイメージの作成時にPHPの任意のバージョンを使用することや、拡張機能を自由にインストールすることが出来ます。

Cloud Run上のサーバレスPHP

Cloud Runは複数のコンテナを使うためのサイドカー機能をサポートしています。

Apache + mod_phpの単一コンテナではなく、普段から利用しているNginxとPHP-FPMの2コンテナ構成で動作させることにします。

alt Cloud Run上のサーバレスPHP

ローカルでビルドしたコンテナイメージをGoogle Cloud内のコンテナレジストリである Artifact Registory に保存し、保存済みイメージからCloud Runインスタンスを起動します。

次回以降の記事で、実際にCloud Run上にLaravelアプリケーションを配備していきたいと思います。

前の記事