はじめに
Webアプリケーションのパフォーマンスは、ユーザ体験を左右する重要な要素です。
Laravelを使ったWebアプリケーションは、規模が大きくなるにつれて応答速度が低下します。
キャッシュの導入やサーバースペックの引き上げで対応できますが、限界がきてしまいます。
こうした課題を解決するのが「Octane」です。
Octaneを使えば、コード変更なしで5~10倍の応答速度向上が期待できます。
Octaneとは
Octaneは、Laravelアプリケーションを高速化するミドルウェアです。
高速WebフレームワークのSwooleやGo言語のWebサーバーRoadRunnerをベースに設計されています。
Swooleの非同期処理とRoadRunnerのマルチスレッド機能を合わせ持つことで、大幅な速度向上を実現しています。
なぜOctaneなのか
Octaneが高速化を可能にしている主な要因は3つあります。
- 非同期処理で並列実行できる
- リクエスト中のブロッキングを防ぐ
- メモリ効率と資源消費を最小限に抑える
これにより、通常の同期PHPを大きく上回るスループットを発揮します。
実測では、同じサーバーでOctaneを使うことで5~10倍速いレスポンスを実現しています。
超簡単に導入できる
もう一つの大きなメリットが導入の容易さです。
Laravelプロジェクトであれば、設定の変更のみでOctaneに置き換え可能です。
アプリケーションのコード変更は不要で、コマンド1つで高速化したサーバーを立ち上げられます。
LaravelとOctaneが入出力をやり取りするアーキテクチャのため、実装変更を必要としないのです。
ベンチマークデータから見る劇的な速度向上
次の表は、NGINX Unit推しのエンジニアによるパフォーマンスの比較表です。
https://habr.com/en/articles/646397/
99% | 98% | 95% | 90% | 85% | 80% | 75% | 50% | HTTP OK % | |
nginx + php-fpm + laravel | 60 | 59 | 56 | 52 | 48 | 46 | 45 | 44 | 100 |
nginx + php-fpm + lumen | 18 | 18 | 17 | 16 | 16 | 15 | 15 | 14 | 100 |
nginx-unit + laravel | 7.6 | 7 | 6.5 | 5.8 | 5.3 | 5.2 | 5.2 | 4.059 | 100 |
nginx-unit + lumen | 1.930 | 1.870 | 1.640 | 1.520 | 1.460 | 1.410 | 1.320 | 1.070 | 100 |
octane (swoole) + laravel | 1.230 | 1.200 | 1.160 | 1.110 | 1.050 | 1.010 | 0.980 | 0.800 | 100 |
その中でLaravel Octaneが含まれています。
上記表は、正常時のパフォーマンスを比較した結果です。
最速が、Laravel Octaneとなっています。
これには続きがあって、高負荷時にはNGINX Unitがベストの結果という説明になります。
ただ、Laravel Octaneは水平スケーリングが容易です。
そのため、システムの処理能力や通信能力の拡張を簡単に行えます。
そうであれば、Laravel Octaneでも高負荷時にも十分対応は可能だと思います。
Octaneへの移行は避けられない流れ!?
PHP 8.1で高速化機能が強化されています。
Octaneはこうした流れと非常に親和性が高い設計となります。
今後LaravelおよびPHPエコシステム全体で、事実上の標準として位置づけられていく可能性があります。
また、クラウド向けの高速アプリも構築できるため、注目度が高まっていくでしょう。
まとめ
既存アプリの置き換えや新規開発を問わず、Octaneの重要性は今後さらに高まっていくでしょう。
ある程度のコストが掛かっても、大幅な速度向上を手に入れられます。
Laravel最速のアプリを目指すなら、Octaneの本格的な活用が重要だと言えるでしょう。