【速報】サーバ 1 台で 10,000 rps も夢じゃない? Laravel Octane 1.0 リリース

2021/05/12に公開

https://github.com/laravel/octane

つい数時間前、新しい Laravel の First Party ライブラリが正式リリースされました。 Laravel Octane と呼ばれています。

これはどんなライブラリか一行で説明すると、 「php-fpm に置き換わるミドルウェアを使って、 Laravel アプリケーションを超高速でさばくためのライブラリ」 です。

現在の一般的な PHP アプリケーションは、 nginx や Apache の裏側で php-fpm や mod_php を使ってサーブしています。

その利点として、「毎リクエストごとにメモリを解放することで、メモリリークなどを起こさない」ようになっています。

逆にいえば、毎リクエストごとに1から必要な変数をメモリに展開する必要があるため、スタートアップ速度がサービスの規模に比例して遅くなっていく、ということです。

もちろん PHP 8.0 で入った JIT 含め、 Opcache によるキャッシュで昔の PHP よりははるかに速度は向上しています。しかし、同条件では golang や .NET など常駐するアプリケーションの方がパフォーマンスが優れているのは確かです。

Laravel Octane はパフォーマンスをさらに向上させるため、 RoadRunner または Swoole と呼ばれるミドルウェアを用いて Laravel アプリケーションを動作させます。

RoadRunner は golang で作られた PHP サーバ/ロードバランサ―/プロセスマネージャで、 PHP プロセスをバックグラウンドで動かし、 IPC(プロセス間通信)によってリクエストとレスポンスを行き来させます。

Swoole は C++ で作られた PHP extension で、これまで言語機能としては存在しなかったイベント駆動 & コルーチンベースの並列処理を PHP で行えるようにするものです。

現在 Laravel Octane は PHP 8.0/ Laravel 8 以上でのみ動かすことが可能です。

元々 RoadRunner 側(Spiral)で roadrunner-laravel ブリッジライブラリが提供されていましたが、今後は Octane が公式サポートすることになるので、こちらは使われなくなっていくのではないかと思います。

Swoole も laravel-swoole が提供されていましたが、こちらも使われなくなっていくのではないでしょうか。

今後のミドルウェア選定の中で、 php-fpm + nginx/Apache のコンビではなく、 Octane を採用するといった流れが生まれてくるかもしれませんね。

ちなみに、現在 Octane のドキュメントはリポジトリの README にまとめられていますが、そのうち laravel.com に移される予定だそうです。

https://twitter.com/taylorotwell/status/1392186038395756556

Discussion